使用VXLAN搭建跨三层网络的二层隧道(RouterOS&Ubuntu)
About
使用的系统是RouterOS和Ubuntu,为啥是RouterOS,因为的我的主路由是Mikrotik RB5009UG+S+,WinBox配置方便😋
RouterOS
添加VXLAN接口
Interface->VXLAN->"+"
VNI就是类似VLAN ID,同一链路上进行标记。
添加VTEP
Interface->VXLAN->VTEP
如果在不信任环境建议设置Remote Ip,比如公网隧道传输,在局域网如果有多个VTEP断点也建议设置。
到这RouterOS的VXLAN就配置完了。
END.
配置一些DHCP和SLAAC来让对端自动配置IP,不需要自己配置静态地址,如果你有现成的Bridge可以直接把接口绑定进桥,VXLAN和普通的二层接口一样,可以直接被绑定Bridge
LInux
ubuntu使用ifupdown管理Vxlan接口,为啥不用netplan?我觉得netplan的缩进过于恶心了,编辑太折磨人,所以提供一个ifupdown的配置/etc/network/interface
#auto vxlan0 iface vxlan0 inet manual pre-up ip link add vxlan0 type vxlan id 1 dstport 8472 local 10.10.0.67 remote 10.10.0.1 dev eth0 up ip link set vxlan0 up
这里创建了一个vxlan0的接口,目标端口是8472,本地ip10.10.0.67远程VTEP接口ip 10.10.0.1,通过eth0发送数据包,因为是测试不建议自动启用接口所以注释掉auto vxlan0,如果不需要可以取消注释。
启用接口
ifup vxlan0
这时候看FBD能看到对端IP了,说明二层就已经打通了。
不过还没完,RouterOS的VXLAN是有BUG的,会莫名奇妙广播包没法通过vxlan接口,我们需要创建一个LInux Bridge来管理接口地址,同样ifupdown操作
确保你的系统安装了bridge-utils
sudo apt install bridge-utils
配置/etc/netwok/interface
#auto br0 iface br0 inet dhcp bridge-ports vxlan0 bridge-stp off bridge-fd 0 iface br0 inet6 auto bridge-ports vxlan0 accept_ra 1 autoconf 1
启用接口br0
ifup br0
理论上你能看到接口已经能通过DHCP获取IP了,不知道是Roueros的bug还是ifupdown的bug,无法SLAAC获取IPv6地址,不知道这个为啥,目前没办法解决。
相关问题已经提交到https://www.reddit.com/r/mikrotik/comments/1ejp2e2/about_vxlan_ipv6_slaac_configuration_in_routeros/
2024.8.13日更新
目前mikrotik的支持已经回复我的邮件了,确实是RouterOS的BUG,7.16rc1工作正常。