选择默认路由的出接口

nc3*_*c3b 2 freebsd static-routes route

我有一个 FreeBSD 8.0 虚拟机,带有两个以太网接口,em0 和 em1。em0 是 192.168.1.99,em1 是 192.168.1.100。两者都是“附加到:Bridged Adapter”。

当两者都起来时,如果我说

# route add default 192.168.1.1
# netstat -rn
# default            192.168.1.1        UGS         1        6    em0
Run Code Online (Sandbox Code Playgroud)

到现在为止还挺好。它选择了 em0。

# ifconfig em0 down
# route delete 0.0.0.0
# route add default 192.168.1.1
# netstat -rn
# default            192.168.1.1        UGS         1        6    *em0*
Run Code Online (Sandbox Code Playgroud)

好的。所以它仍然选择 em0(它必须真的很喜欢它),即使它已经关闭。我已经测试过,如果我为 em0 选择另一个 ip(比如 10.0.0.1),它会为路由选择 em1。

这让我想知道:如何让 freebsd 选择 em1 作为传出接口?在 linux 中,我记得我们可以用dev参数来做到这一点。

PS 我确实尝试使用 -interface 选项 - 没有运气。我试过

# route add default 192.168.1.1 -interface 192.168.1.100
# route add default 192.168.1.1 -interface em1
Run Code Online (Sandbox Code Playgroud)

结果是

0.0.0.0&0xc0a80164 192.168.1.1        US          0        0    em0 =>
Run Code Online (Sandbox Code Playgroud)

我正在使用 FreeBSD 8.0-STABLE。任何帮助将不胜感激。

编辑:在 Debian Lenny 上,相同的操作套件正确选择作为传出接口的接口。当两者都起来时

route add default gw 192.168.1.1
Run Code Online (Sandbox Code Playgroud)

选择 eth2 路由添加默认 gw 1​​92.168.1.1 dev eth0 选择 eth0

所以一定有办法在 FreeBSD 上实现这一点,对吧?

小智 9

您需要使用-ifp标志,而不是-interface.