linux.network.vxlan

Linux Vxlan网络隧道互通环境模拟

使用CentOS Linux Bridge搭建Vxlan环境

  • 通过namespace配置证明vxlan可通
  1. 说明
    第一台主机eth0 192.168.0.127,第二台主机eth0 192.168.0.125
  2. 下面是第一台主机的配置
#添加桥 br-vx 并启动
brctl addbr br-vx
ip link set br-vx up

#添加vxlan并指定对端ip 192.168.0.125和本机出流量的网卡eth0,并启动
ip link add vxlan10 type vxlan id 100 remote 192.168.0.125 dstport 4789 dev eth0
ip link set vxlan10 up

#把vxlan 绑定到桥 br-vx 上
brctl addif br-vx vxlan10

#创建一对veth pair:veth0 veth1
ip link add type veth

#把veth1启动并绑定到桥br-vx上
ifconfig veth1 up
ifconfig veth1 mtu 1450
brctl addif br-vx veth1

#创建一个namespace ns1,把veth0放入ns1中,配置veth0的ip并启动它
ip netns add ns1
ip li set veth0 netns ns1
ip netns exec ns1 ifconfig veth0 192.167.1.6/24 up
ip netns exec ns1 ifconfig veth0 mtu 1450
  1. 下面是第二台主机的配置
    相对于第一台主机上的配置,把192.168.0.125改成192.168.0.127,把192.167.1.6/24改成192.167.1.7/24
  2. 验证
    在第一台主机上执行以下命令
    ip netns exec ns1 ping 192.167.1.7
    那么可知数据流量是 veth0(1)->veth1(1)->br-vx(1)->vxlan10(1)->eth0(1)->eth0(2)->vxlan10(2)->br-vx(2)->veth1(2)->veth0(2),这样就能ping通
  • 通过虚拟机配置
  1. 说明
    第一台主机eth0 192.168.0.127,第二台主机eth0 192.168.0.125
  2. 下面是第一台主机的配置
#添加桥 br-vx 并启动
brctl addbr br-vx
ip link set br-vx up

#添加vxlan并指定对端ip 192.168.0.125和本机出流量的网卡eth0,并启动
ip link add vxlan10 type vxlan id 100 remote 192.168.0.125 dstport 4789 dev eth0
ip link set vxlan10 up

#把vxlan 绑定到桥 br-vx 上
brctl addif br-vx vxlan10

#启动虚拟机,因为tap1不存在,所以自动创建一个tap:tap1
qemu-system-x86_64  centos1804_200G.qcow2 -m  1024  -net  nic  -net  tap,ifname=tap1,script=no,downscript=no   -enable-kvm

#tap1添加到桥 br-vx 上,并启动
brctl addif br-vx tap1
ifconfig tap1 up

  1. 下面是第一台主机的虚拟机中的配置
#配置ip并启动
ip a add 192.168.1.8/24 dev ens3
ip li set ens3 up
  1. 下面是第二台主机的配置
    相对于第一台主机上的配置,把192.168.0.125改成192.168.0.127
  2. 下面是第二台主机的虚拟机中的配置
    相对于第一台主机的虚拟机中的配置,把192.168.1.8/24改成192.168.1.9/24
  3. 验证
    在第一台主机的虚拟机上执行以下命令
    ping 192.168.1.9
    那么可知数据流量是 ens3(1)->tap1(1)->br-vx(1)->vxlan10(1)->eth0(1)->eth0(2)->vxlan10(2)->br-vx(2)->tap1(2)->ens3(2),这样就能ping通
  • vxlan是点对点的隧道协议,那么如果实现多网络
  1. 方法
    用一台主机作为服务器,就可以实现多网络

你可能感兴趣的:(linux.network.vxlan)