虚拟机vlan(转自zgy666)

利用linux bridge + vlan方式配置KVM虚拟机的vlan,如下图所示:

 

配置过程:

1、安装vconfig工具;

2、增加vlan子接口:

     vconfig add eth1 100;

     vconfig add eth1 200;

3、增加vlan子接口对应的bridge设备,配置br100的IP为172.20.100.1,配置br200的IP为172.20.200.1:

      brctl add br br100;

      brctl add br br200;

4、将vlan子接口挂到bridge上:

     brctl  addif br100 eth1.100;

     brctl addif br200 eth1.200;

5、创建2个VM,将veth设备分别挂在br100和br200上;

6、进入VM,配置IP分配为172.20.100.3,172.20.200.3。

 

问题:

以上配置完成后,发现在宿主机上ping VM1(172.20.100.1)能ping通,但是pingVM2(172.20.200.3)不通,通过抓包工具发现在ping VM2的时候,走的是br100网桥,如下图所示:

 

在宿主机上查看路由配置信息如下:

从上面的路由表可以发现宿主机上存在两个172.20.0.0/24的表项,其中一个走br100,一个走br200,所以发往172.20.0.0/24的报文都默认走第一条记录,即通过br100发送,这跟上面的转包信息也符合;

 

修复过程:

1、将原来的两条172.20.0.0/24的路由表信息删除,添加如下两条路由表:

ip route add 170.20.100.0/24 via 0.0.0.0 dev  br100

ip route add 170.20.200.0/24 via 0.0.0.0 dev  br200

添加完成的路由信息如下图所示:

现在再去ping VM1、VM2发现都ping不通!同样通过在宿主机抓取发往VM1的报文,发现报文的源IP为br0的IP,说明此时走的路由规则应该是route -n查询的第一条记录,如下所示:

2、ifconfig 发现br100、br200默认的掩码位数是16位,这与route表里配置的Genmask不符,因此修改br100、br200的ifcfg配置文件,设置NETMASK=255.255.255.0,重启服务;

3、宿主机上ping VM1、VM2均能ping通,VM1、VM2ping宿主机也能ping通, VM1、VM2之间ping不通,说明vlan的隔离是生效的;

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值