2017年发生了两件大事:
- FRRouting项目启动,把原来需要打patch才能在Quagga上使用的ldpd合并进了主线
- Cumulus公司把自己的VRF实现贡献给了Linux内核
Linux终于获得了能用的原生的MPLS(L3VPN)和VRF支持。不过三年以后,MPLS配置的完整文档尚付阙如。近日我经过研究和阅读各种零散的资料,成功在测试环境中配置了一个标准的MPLS核心网络架构,因此写一篇文章来分享配置过程以及路上遇到的各种坑。
2017年发生了两件大事:
Linux终于获得了能用的原生的MPLS(L3VPN)和VRF支持。不过三年以后,MPLS配置的完整文档尚付阙如。近日我经过研究和阅读各种零散的资料,成功在测试环境中配置了一个标准的MPLS核心网络架构,因此写一篇文章来分享配置过程以及路上遇到的各种坑。
公司总部网关CCR1009上有固定公网IP地址。有一办公室网关需要通过隧道访问公司总部内网资源。办公室网关的互联网连接经过运营商设备的动态NAT(PAT),网关上只能分到内网IP,并且互联网出口IP会不定期变化。
本文中我们来演示一下在新的6wind测试路由器和现有的一台RouterOS之间打一个隧道,然后做一个简单的BGP配置。
6wind一侧:
RouterOS一侧:
6wind Turbo Router是一个软路由系统,不过是基于Ubuntu的,并且看起来魔改得不厉害。朋友发了我一个2.0.2版本的系统镜像,于是装上玩了玩。
比如我们有个eth0
,上面同时有192.0.2.2/25
(网关192.0.2.1
)和192.0.2.130/25
(网关192.0.2.129
)两个段。这时候就要用到SADR(source-address dependent routing),即查询路由表时同时匹配源地址和目标地址功能。Linux下,这个功能可以用策略路由实现。
首先我们创建一个新的路由表:
1 |
echo "500 table1" >> /etc/iproute2/rt_tables |
(不写名字也行,下面表名用数字替代即可)
然后配置策略路由:
1 2 3 4 5 6 7 8 9 |
auto eth0 allow-hotplug eth0 iface eth0 inet static address 192.0.2.2/25 gateway 192.0.2.1 up ip addr add 192.0.2.130/25 dev eth0 || true up ip route add 192.0.2.128/25 dev eth0 table table1 || true up ip route add default via 192.0.2.129 dev eth0 table table1 || true up ip rule add from 192.0.2.130/32 lookup table1 || true |
最后应用一下配置:
1 |
ifup -v --ignore-errors --force eth0 |
参考: