我在 freebsd 上有两个 Internet 通道和网关。当我使用命令切换通道时route change default chan2
,该命令netstat -nr
显示已更改的默认路由。但traceroute
显示数据包通过旧路由 chan1。
例子:
$netstat -nr
Routing tables Internet: Destination Gateway Flags Refs Use Netif Expire
default xxx.xxx.183.54 US 0 8432 em3
$sudo route change default xxx.xxx.144.125
change net default: gateway> xxx.xxx.144.125
$netstat -nr
Routing tables Internet: Destination Gateway Flags Refs Use Netif Expire
default xxx.xxx.144.125 US 2 16450 em3
但
$ traceroute 8.8.8.8
traceroute to 8.8.8.8 (8.8.8.8), 64 hops max, 52 byte packets
1 xxx.xxx.183.53 (xxx.xxx.183.53) 0.527 ms 0.415 ms 0.483ms
如果我运行以下组合,一切有效:
$sudo route del default
睡眠时间 10
$sudo 路线添加默认 xxx.xxx.144.125
答案1
看起来您的路由表中还有其他内容。您是否尝试过使用路由命令查看路由,以查看它是否使用默认路由或其他路由?
路线显示 8.8.8.8
它应该显示默认...
路线显示 8.8.8.8
route to: dns.google
destination: default
mask: default
gateway: your-gateway.whatever
fib: 0
interface: ixl3 flags:
<UP,GATEWAY,DONE,STATIC>
recvpipe sendpipe ssthresh rtt,msec mtu weight expire
0 0 0 0 1500 1 0
如果它没有显示默认值,而你需要 ip,则使用 route -n
答案2
如果使用route change
命令,则需要重新启动网络服务以应用更改,例如:
$ sudo /etc/rc.d/netif restart
答案3
您是否可能有一条到 8.8.8.8 的缓存路由? 的完整输出netstat -nr
将显示这一点。如果是这样,您需要在测试更改之前将其删除 - 要么专门删除该路由,要么可以route flush
添加而不是更改默认网关(但请记住,如果您这样做,这将在两个命令之间中断非本地流量)。
答案4
从 ping 命令的输出来看,您似乎针对的是本地 IP 地址,而不是远程网关。
因此,如果 xxx.xxx.183.54/29 被分配给您的 FreeBSD 节点(如 ifconfig 下所示),您需要使用下一跳 IP 地址,该地址看起来可能是 xxx.xxx.183.53/29。同样,xxx.xxx.144.125 地址也是分配给本地接口的地址。
举个例子,我有一台机器,其功能如下:
ifconfig:
em0: flags=8863<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500
inet xxx.xxx.123.99 netmask 0xffffff00 broadcast xxx.xxx.xxx.255
em1: flags=8863<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500
inet xxx.xxx.234.99 netmask 0xffffff00 broadcast xxx.xxx.xxx.255
netstat -rn
Destination Gateway Flags Netif Expire
default xxx.xxx.123.254 UGS em0
在我上面的例子中,所有流量当前都从 em0 接口传出,并以 ISP #1 路由器 IP(xxx.xxx.123.254)作为下一跳。
如果我想将所有流量从 em1 而不是 em0 路由出去,我会使用:
$sudo route change default xxx.xxx.234.1
,如果 xxx.xxx.234.1 是我在该 LAN 段上的 ISP #2 路由器 IP 地址。
我还建议检查 dhclient 是否正在与任一 ISP 一起运行,因为它可能在后台安装您不知道的路由。