[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