vxlan多台主机的vm之间不同网段互通

7 篇文章 0 订阅
[b]组播:
试验:
在三台机器上
192.168.139.251
192.168.139.252
192.168.139.253

每台机器建立上建立一个namespace,通过vxlan相连
在任何一台机器上建的vm都可以和其他机器的vm互通。[/b]
[img]http://dl2.iteye.com/upload/attachment/0120/1204/b4d9fd1d-8904-3f09-8163-affe909112fe.png[/img]

每台机器上对应的内网的ip
192.168.139.251----namespace:10.1.0.5/24------------vm:10.3.0.11
192.168.139.252----namespace:10.1.0.6/24------------vm:10.4.0.12
192.168.139.253----namespace:10.1.0.7/24
[b]★★第一步[/b]
zubo.sh
#################

#!/bin/sh
ip netns add zou
ip link add zouveth0 type veth peer name zouveth1
ip link set zouveth1 netns zou
#这里改变,设置这个namespace内的局域网ip
ip netns exec zou ip addr add 10.1.0.5/24 dev zouveth1
ip netns exec zou ip addr
brctl addbr br-zou
brctl addif br-zou zouveth0

#这个是单点的设置,remote后面对应对方的ip地址
#ip link add vxlan-10 type vxlan id 10 remote 192.168.139.252 dev eth0
#这里的ip改变,设置成自己的,dev后面设置带ip的网卡名
ip link add vxlan-10 type vxlan id 10 group 239.1.1.1 local 192.168.139.251 dev eth0

brctl addif br-zou vxlan-10
ip -d link show vxlan-10
ip link set dev zouveth0 up
ip netns exec zou ip link set dev zouveth1 up
ip netns exec zou ip link set dev lo up
ip link set dev br-zou up
ip link set dev vxlan-10 up

###################################
[color=red]
依次在
192.168.139.252
192.168.139.253
修改脚本:
ip netns exec zou ip addr add 10.1.0.5/24 dev zouveth1
上把局域网ip 10.1.0.5/24改成 10.1.0.6/24 和10.1.0.7/24

ip link add vxlan-10 type vxlan id 10 group 239.1.1.1 local 192.168.139.251 dev eth0
local 192.168.139.251改成
local 192.168.139.252

local 192.168.139.253
[/color]

测试:
注意这里,
如果执行脚本的顺序是251,252,253
#则需要从253上ping 前两个机器,否则ping不通,因为执行251的时候,252和253的数据没同步吧,怎么同步?
似乎简单ip后就没有重现了(eth0上有ip),如果是复杂的网桥会有类似问题。

ip netns exec zou ping 10.1.0.5
ip netns exec zou ping 10.1.0.6

[b]★★★第二步[/b]
测试vm:
启动vm是的脚本
qemu_net.sh内容为
##########################

#!/bin/sh
brctl addbr br0
ip link set br0 up
ip link set tap1 up
brctl addif br0 tap1
ip addr add 10.3.0.1/24 dev br0
iptables -t nat -A POSTROUTING -s "10.3.0.0/24" ! -d "10.3.0.0/24" -j MASQUERADE

#########################
删除vm时的脚本
delbr0.sh
######################

#!/bin/sh
ip link set br0 down
brctl delbr br0

#####################
建立一个桥,vm的内网

qemu.sh:
################

/usr/libexec/qemu-kvm -kernel bzImage -drive file=hda.img,if=ide,cache=none -append "console=ttyS0 root=/dev/sda rw rdinit=/sbin/init notsc=1" -nographic -boot order=dc,menu=on -net nic,vlan=0,macaddr=52:54:00:12:34:21,model=e1000,addr=08 -net tap,name=haha,ifname=tap1,script=qemu_net.sh,downscript=delbr0.sh

#############
ip netns exec zou ./qemu.sh
在namespace上建vm是为了
脚本里面的内容建立在namespace中

ip netns exec zou ip a
ip netns exec zou brctl show

然后在vm中执行:
###############

#!/bin/sh
ip addr add 10.3.0.11/24 dev eth0
ip link set eth0 up
ip route add default via 10.3.0.1

#################
在vm中ping外面

ping 10.3.0.1
ping 10.1.0.5
ping 10.1.0.6
ping 10.1.0.7

vm已经能访问另两台机器的namespace,但是另两台的namespace并不能访问这台vm,
如果192.168.139.252的namespace想访问vm:10.3.0.11
则需要在192.168.139.252上操作:
ip netns exec zou ip route add 10.3.0.0/24 via 10.1.0.5
ip netns exec zou ping 10.3.0.11

同理在192.168.139.252上建立10.4.0.12的vm
qemu_net.sh
##################

#!/bin/sh
brctl addbr br0
ip link set br0 up
ip link set tap1 up
brctl addif br0 tap1
ip addr add 10.4.0.2/24 dev br0
iptables -t nat -A POSTROUTING -s "10.4.0.0/24" ! -d "10.4.0.0/24" -j MASQUERADE

################################
启动vm:
注意mac地址的变更,不要和建立过的相同
############

/usr/libexec/qemu-kvm -kernel bzImage -drive file=hda.img,if=ide,cache=none -append "console=ttyS0 root=/dev/sda rw rdinit=/sbin/init notsc=1" -nographic -boot order=dc,menu=on -net nic,vlan=0,macaddr=52:54:00:12:34:22,model=e1000,addr=08 -net tap,name=haha,ifname=tap1,script=qemu_net.sh,downscript=delbr0.sh

#############


然后在vm中执行:
###############

#!/bin/sh
ip addr add 10.4.0.11/24 dev eth0
ip link set eth0 up
ip route add default via 10.4.0.2

################

在这个vm中是可以 ping 10.3.0.11的
因为这个vm的namespace已经ip route过了

如果想251上的vm:10.3.0.11也能ping通252上的vm:10.4.0.12

在251上执行
ip netns exec zou ip route add 10.4.0.0/24 via 10.1.0.6
进入251上的vm:10.3.0.11
ping 10.4.0.12则通了


★★★★★★★★★★★★★★★★★★★★★★★
#################
################
试验如果是点对点:
就把
#这里的ip改变,设置成自己的,dev后面设置带ip的网卡名
ip link add vxlan-10 type vxlan id 10 group 239.1.1.1 local 192.168.139.251 dev eth0
改成
ip link add vxlan-10 type vxlan id 10 remote 192.168.139.252 dev eth0
remote是指的对方节点的ip
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值