我需要在这台机器上设置一个辅助路由表。我已经基本设置好了一切,但在使默认路由在辅助 fib 上工作时遇到了问题。
在我能找到的有关辅助路由表的大多数信息中,一个简单的例子setfib 1 route add default 10.0.0.1
(其中 10.0.0.1 是网络上的路由器)用于设置辅助 fib 的默认路由。在这些情况下,10.0.0.1 是网络上的外部路由器,并且是静态路由。在我的例子中,10.0.0.1 是我尝试配置它的机器。它也是整个网络的路由器。如果我添加该路由,我将无法连接到外部源,因为路由表几乎会自行循环。例如:
首先,添加一条路由默认路由(已经有到10.0.0.1/16的路由)
# setfib 1 route add default 10.0.0.1
add net default: gateway 10.0.0.1 fib 1
对路由器 (即主 FIB 上的机器本身) 执行 ping 操作正常:
# setfib 1 ping 10.0.0.1
PING 10.0.0.1 (10.0.0.1): 56 data bytes
64 bytes from 10.0.0.1: icmp_seq=0 ttl=64 time=0.043 ms
^C
--- 10.0.0.1 ping statistics ---
1 packets transmitted, 1 packets received, 0.0% packet loss
round-trip min/avg/max/stddev = 0.043/0.043/0.043/0.000 ms
但无法访问外部来源——“超出生存时间”:
# setfib 1 ping 8.8.8.8
PING 8.8.8.8 (8.8.8.8): 56 data bytes
36 bytes from this_server.my.domain (10.0.0.1): Time to live exceeded
Vr HL TOS Len ID Flg off TTL Pro cks Src Dst
4 5 00 0054 24ce 0 0000 01 01 3f00 10.0.0.1 8.8.8.8
^C
--- 8.8.8.8 ping statistics ---
1 packets transmitted, 0 packets received, 100.0% packet loss
对外部源的跟踪路由揭示了该问题:
# setfib 1 traceroute 8.8.8.8
traceroute to 8.8.8.8 (8.8.8.8), 64 hops max, 40 byte packets
1 this_server (10.0.0.1) 0.043 ms 0.036 ms 0.024 ms
2 this_server (10.0.0.1) 0.033 ms 0.030 ms 0.028 ms
3 this_server (10.0.0.1) 0.027 ms 0.031 ms 0.032 ms
...snip...
64 this_server (10.0.0.1) 0.132 ms 0.138 ms 0.137 ms
这台机器上的公共接口位于另一个物理端口上。如果我手动添加通过 DHCP 分配的 ISP 提供的网关,fib 就可以正常工作 - 虽然这不是一个长期的解决方案,因为网关可能会发生变化。我知道我可能能够设置某种钩子,以便在提供新网关时自动重新分配网关,但我宁愿以干净、正确的方式执行此操作。
我猜我正在寻找的是如何通过其他接口而不是通过 IP 路由该 fib 上的流量?这是真的吗?老实说,我对路由了解不够多,不知道我应该用这个去哪里。
以下是两个 fib 上的路由表的缩写版本(省略了一些已建立的 OpenVPN 隧道和其他杂项,例如 ipv6 隧道):
# netstat -r4
Routing tables
Internet:
Destination Gateway Flags Netif Expire
default lo0-100.NYCMNY-VFT UGS em0
10.0.0.0/16 link#1 U re0
# setfib 1 netstat -r4
Routing tables (fib: 1)
Internet:
Destination Gateway Flags Netif Expire
default this_server UGS re0
10.0.0.0/16 link#1 U re0
我很感激任何对此提供的帮助!
答案1
正确,您正在将自己添加为默认路由,但这不起作用。您需要将网关更改为 10.0.0.0 网络上的另一台主机,该主机将为您处理路由。
将命令route命令改为:
setfib 1 route add default <router on 10.0.0.0 network>
然后,当您这样做时setfib 1 ping 8.8.8.8
,它将被转发到路由器,然后由路由器处理转发它。