1. 程式人生 > >openstack中虛擬機器怎麼與物理機通訊

openstack中虛擬機器怎麼與物理機通訊

How-to-connection-ns-outside

環境配置

網路介面

vi /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0
TYPE=Ethernet
ONBOOT=yes
NM_CONTROLLED=yes
BOOTPROTO=static
IPADDR=10.20.0.10
NETMASK=255.255.255.0

vi /etc/sysconfig/network-scripts/ifcfg-eth1
DEVICE=eth1
TYPE=Ethernet
ONBOOT=yes
NM_CONTROLLED=yes
BOOTPROTO=static
IPADDR=172.16.0.10
NETMASK=255.255.255.0

vi /etc/sysconfig/network-scripts/ifcfg-eth2
DEVICE=eth2
TYPE=Ethernet
ONBOOT=yes
NM_CONTROLLED=yes
BOOTPROTO=static
IPADDR=192.168.4.10
NETMASK=255.255.255.0

重啟網路服務

service network restart

建立一個network namespace foo

ip netns add foo

檢視network namespace

ip netns

建立一個vethp

ip link add tap-foo type veth peer name tap-root

將tap-foo分配到foo namespace中

ip link set tap-foo  netns foo

為tap-foo 新增一個ip地址

ip netns exec foo ip addr add 192.168.10.2/24 dev tap-foo 
ip netns exec foo ip link set tap-foo up

檢視foo 空間中的網絡卡資訊

ip netns exec foo ip a

為root namespace 中的tap-root新增ip

 ip addr add 192.168.10.1/24 dev tap-root
 ip netns exec foo ip link set tap-root up

檢視 root 空間中的網絡卡資訊

ip a

檢查是否網路連通

 ping 192.168.10.2

 ip netns exec foo ping 192.168.10.1

安裝需要用到的包

yum install libvirt openvswitch python-virtinst xauth tigervnc -y

移除預設的libvirt 網路,方便清晰分析網路情況

virsh net-destroy default
virsh net-autostart --disable default
virsh net-undefine default

啟動openvswitch

service openvswitch start
chkconfig openvswitch on

建立一個openvswitch bridge 名字叫br-int

ovs-vsctl add-br br-int

利用openvswitch 的 br-int,定義一個libvirt 網路

vi libvirt-vlans.xml
<network>
  <name>ovs-network</name>
  <forward mode='bridge'/>
  <bridge name='br-int'/>
  <virtualport type='openvswitch'/>
  <portgroup name='no-vlan' default='yes'>
  </portgroup>
  <portgroup name='vlan-100'>
    <vlan>
      <tag id='100'/>
    </vlan>
  </portgroup>
  <portgroup name='vlan-200'>
    <vlan>
      <tag id='200'/>
    </vlan>
  </portgroup>
</network>

啟動libvirt 網路

virsh net-define libvirt-vlans.xml
virsh net-autostart ovs-network
virsh net-start ovs-network

建立一個instance,並連線到ovs-network,網路介面部分配置如下

<interface type='network'>
  <source network='ovs-network' portgroup='vlan-100'/>
  <model type='virtio'/>
</interface>

可以參考附件instance1.xml建立

cp ~/gre/ /var/tmp/
cd /var/tmp/gre
mv cirros-0.3.0-x86_64-disk.img instance1.img
virsh define instance1.xml
virsh start instance1
virsh vncdesplay instance1
vncviewer :0

啟動console 以後,登入新增ip得知 192.168.1.20

ip addr add 192.168.1.20/24 dev eth0

新增一個openvswitch port

ip link add br-int-tap100 type veth peer name tap100
ovs-vsctl add-port br-int br-int-tap100
ovs-vsctl set port br-int-tap100 tag=100
ip addr add 192.168.1.21/24 dev tap100
ip link set tap100 up
ip link set br-int-tap100 up