Linux 的迭代路由的支持不像传统路由器那么好,用法比较特别。
如果这么配置,会提示网络不可达。
#ip addr
1: lo: <LOOPBACK> mtu 65536 qdisc noop state DOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
25: veth1@if26: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
link/ether ba:85:f9:09:2e:e8 brd ff:ff:ff:ff:ff:ff link-netnsid 0
inet 1.1.1.1/24 scope global veth1
valid_lft forever preferred_lft forever
inet6 fe80::b885:f9ff:fe09:2ee8/64 scope link
valid_lft forever preferred_lft forever
#ip route
1.1.1.0/24 dev veth1 proto kernel scope link src 1.1.1.1
2.2.2.2 via 1.1.1.254 dev veth1
#ip route add 3.3.3.3 via 2.2.2.2
RTNETLINK answers: Network is unreachable
但如果这么配置,就没问题了。我配置了一个默认路由和一个网段路由(3.1.1.0/24),他们的nexthop都不是直连下一跳。然后为nexthop再配置路由。
主要的点是在配置下一跳的路由的时候,不指定下一跳,直接指定出接口。
#ip addr
1: lo: <LOOPBACK> mtu 65536 qdisc noop state DOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
25: veth1@if26: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
link/ether ba:85:f9:09:2e:e8 brd ff:ff:ff:ff:ff:ff link-netnsid 0
inet 7.1.1.2/32 scope global veth1
valid_lft forever preferred_lft forever
inet6 fe80::b885:f9ff:fe09:2ee8/64 scope link
valid_lft forever preferred_lft forever
#ip route
default via 11.1.1.1 dev veth1
2.1.1.0/24 dev veth1 scope link
3.1.1.0/24 via 2.1.1.1 dev veth1
11.1.1.1 dev veth1 scope link
容器网络calico 就是这么做的。
网友评论