`
haoningabc
  • 浏览: 1444534 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

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

阅读更多
组播:
试验:
在三台机器上
192.168.139.251
192.168.139.252
192.168.139.253

每台机器建立上建立一个namespace,通过vxlan相连
在任何一台机器上建的vm都可以和其他机器的vm互通。



每台机器上对应的内网的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
★★第一步
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

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

依次在
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


测试:
注意这里,
如果执行脚本的顺序是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

★★★第二步
测试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










  • 大小: 31 KB
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics