用linux vconfig配置neutron VLAN试验

在单个物理机上创建两个kvm虚拟机,在虚拟机里安装openstack。主要测试neutron平面网络和vlan的连通性。

物理机设置
brctl创建一个网桥br1。打开网桥br1的混杂模式。
vconfig在网桥br1上创建VLAN 20。为br1.20配置IP地址。
brctl在网桥上增加接口tap5,tap6。(TAP设备事先通过tunctl -b创建)。
物理机执行的命令
# brctl addbr br1
# vconfig add br1 20
# ifconfig br1.20 192.168.20.1 up
# ifconfig br1 192.168.20.254/24 up
# brctl addif br1 tap5
# brctl addif br1 tap6
# ip link set br1 promisc on
查看VLAN的情况。
# cat /proc/net/vlan/config 
VLAN Dev name	 | VLAN ID
Name-Type: VLAN_NAME_TYPE_RAW_PLUS_VID_NO_PAD
br1.20         | 20  | br1

物理机的网桥

# brctl show
bridge name	bridge id		STP enabled	interfaces
br1		8000.721dc4aa0598	no		tap5
							tap6
物理机的网络接口配置,ip地址,mac地址 ,接口名。
192.168.20.254   72:1D:C4:AA:05:98    br1
192.168.20.1        DA:0C:2F:0D:52:7E   br1.20
在物理机上创建两个kvm虚拟机,虚拟机分别利用tap5,tap6作为自己的网卡。命令行如下。
# qemu-system-x86_64 -cpu kvm64,+nx,+vmx -enable-kvm \
 -smp 2 -m 2560 -name test3 \
 -drive file=/vms/testiso3,if=virtio,format=raw,cache=none \
 -cdrom centos7.iso -boot d \
 -vga qxl \
 -usb -usbdevice tablet \
 -netdev tap,id=hostnet1,vhost=on,ifname=tap5,script=no -device virtio-net-pci,netdev=hostnet1,id=net1 \
 -spice port=5902,addr=0.0.0.0,disable-ticketing,agent-mouse=on \
 -device virtio-serial-pci \
 -device virtserialport,nr=2,chardev=spicechannel0,name=com.redhat.spice.0 \
 -chardev spicevmc,id=spicechannel0,name=vdagent

kvm虚拟机安装CentOS 7,部署openstack kilo。部署过程略。
以两个CentOS 7虚拟机作为计算节点。即CentOS 7虚拟机是cirros虚拟机的宿主机。
创建一个neutron FLAT外部网络,与物理机br1接口位于同一个网段 192.168.20.0/24 ,网关为 192.168.20.254 。
创建一个neutron VLAN外部网络,地址 192.168.20.0/24,网关为 192168.20.1。VLAN ID 等于20与物理机br1 vlan保持一致。
openstack项目的安全组设置,打开icmp和ssh端口,以方便测试。

创建若干个cirros虚拟机,网络分别使用flat和vlan 20。测试结果如下。

1)br1.20与vlan 20 cirros虚拟机的网络接口处于同一个网段VLAN 20。
例如,两个centos 7上的VLAN 20 cirros可以互相ping通。vlan 20 cirros虚拟机ping通br1.20。从物理机可以ssh到vlan 20 cirros虚拟机。
tcpdump表明,vlan 20 cirros虚拟机的ping数据包都是802.1Q tagged。
所以,一般来说,neutron VLAN情况下,需要在交换机端口设置为trunk口。
从cirros上ping物理机,在CentOS 7上查看
[root@vlanhost1 ~(keystone_admin)]# ovs-dpctl dump-flows|grep 192.168.20.1
recirc_id(0),skb_priority(0),in_port(2),eth(src=fa:16:3e:29:24:0f,dst=da:0c:2f:0d:52:7e),eth_type(0x8100),vlan(vid=20/0xfff,pcp=0/0x0,cfi=1/1),
encap(eth_type(0x0800),ipv4(src=192.168.20.57/0.0.0.0,dst=192.168.20.1/0.0.0.0,proto=1/0,tos=0/0,ttl=64/0,frag=no/0xff)), 
packets:185, bytes:18130, used:0.780s, actions:drop
2)CentOS 7宿主机与flat cirros虚拟机,同处于flat网络。
CentOS 7无法ping通br1.20,也不能ping通vlan 20 cirros。
说明计算节点的网络与vlan 20租户网络不在一个VLAN,不能直接连通。
在CentOS7上执行ping,在物理机上 tcpdump -nni br1 得到 untagged 报文
ARP, Request who-has 192.168.20.1 tell 192.168.20.5, length 28
在vlan 20 cirros上执行ping,在物理机上 tcpdump -nni br1 -e vlan 得到 tagged 报文
fa:16:3e:29:24:0f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q (0x8100), \
length 46: vlan 20, p 0, ethertype ARP, Request who-has 192.168.20.1 tell 192.168.20.57, length 28
da:0c:2f:0d:52:7e > fa:16:3e:29:24:0f, ethertype 802.1Q (0x8100), \
length 46: vlan 20, p 0, ethertype ARP, Reply 192.168.20.1 is-at da:0c:2f:0d:52:7e, length 28
在实际环境中,计算节点对应的物理交换机端口需要设置为trunk口,并允许接收所需范围的VLAN id报文。
3) flat cirros虚拟机和vlan20 cirros虚拟机之间不能互通。

在物理机上查看网桥br1的接口情况。

# brctl showmacs br1
port no	mac addr		is local?    说明
  3	62:5c:92:ad:a3:41	no	     centos 7 br-eth1 192.168.92.6
  3	72:1d:c4:aa:05:98	yes	     tap6
  2	9e:97:e4:a7:86:41	no           centos 7 br-eth1 192.168.92.5
  2	b2:f5:45:72:9d:a9	yes          tap5
  2	fa:16:3e:5a:ad:a3	no	     vlan20 cirros 192.168.20.52
  2	fa:16:3e:ab:79:ee	no	     flat cirros 192.168.20.101

centos 7 宿主机 与 物理机 br1 处于一个 LAN,无需配置路由也能互通。

vlan 20 cirros 虚拟机 192.168.20.52/24 运行arp命令输出
192.168.20.1     DA:0C:2F:0D:52:7E 
192.168.20.254   DA:0C:2F:0D:52:7E 
192.168.20.5    (incomplete)
192.168.20.101  (incomplete)
centos 7 宿主机 192.168.20.5运行 arp命令输出
192.168.20.1     72:1D:C4:AA:05:98 
192.168.20.254   72:1D:C4:AA:05:98 
192.168.20.52    (incomplete)
192.168.20.101   FA:16:3E:AB:79:EE
需要物理机配路由
route add  -host 192.168.20.5  dev br1.20 
或者
route add  -net 192.168.20.0 netmask 255.255.255.0 dev br1.20
flat cirros 虚拟机 192.168.20.101/24 运行arp命令输出
192.168.20.1     72:1D:C4:AA:05:98 
192.168.20.254   72:1D:C4:AA:05:98
192.168.20.5     9E:97:E4:A7:86:41
192.168.20.52    (incomplete)
需要物理机配路由
route add  -host 192.168.20.101 dev br1
或者
route add  -net 192.168.20.0 netmask 255.255.255.0 dev br1
物理机运行 arp 输出
192.168.20.101  FA:16:3E:AB:79:EE
192.168.20.52   FA:16:3E:5A:AD:A3
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Linux VLAN配置是指在Linux操作系统中,通过虚拟局域网(VLAN)技术将一个物理网络划分为多个逻辑独立的虚拟网络,以实现不同网络设备之间的隔离与通信。 首先,在Linux系统中,我们可以使用vconfig命令来创建和管理VLAN。通过该命令,我们可以创建一个或多个虚拟网络接口,并为每个接口指定一个VLAN ID。例如,可以使用以下命令创建一个VLAN接口: vconfig add eth0 10 上述命令将为eth0物理接口创建一个VLAN ID为10的虚拟接口。接下来,我们可以使用ifconfig命令给该虚拟接口分配IP地址和其他相关网络参数,从而使其能够与其他设备进行通信。 另外,我们还可以通过修改系统的网络配置文件来实现VLAN的持久化配置。在大多数Linux发行版中,网络配置文件通常位于/etc/network/interfaces或/etc/sysconfig/network-scripts目录中。我们可以在该文件中添加类似如下的配置: auto eth0.10 iface eth0.10 inet static address 192.168.1.10 netmask 255.255.255.0 vlan_raw_device eth0 上述配置将为VLAN ID为10的虚拟接口eth0.10分配静态IP地址为192.168.1.10,并指定其底层的物理接口为eth0。 最后,为了实现不同VLAN之间的通信,我们还需要在Linux系统上配置路由策略。可以使用ip命令来添加静态路由或者使用动态路由协议,如OSPF或RIP等。路由配置的具体方法与网络环境和需求有关。 总结起来,Linux VLAN配置涉及创建虚拟网络接口、为其分配IP地址、修改网络配置文件以及配置路由策略等步骤。这些操作可通过命令行工具来完成,也可以通过修改网络配置文件实现持久化配置。使用Linux VLAN技术,可以灵活地划分和管理网络资源,实现网络设备之间的隔离和通信。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值