我有一个Linux(Debian)路由器与两个互联网连接 (A)和(B) 。
(A)是优选的, (B)是后退。
我想监视互联网连接(不仅仅是网关的可用性!),并适当地更改默认路由。
(2)只有问题。 我的路由表指向一个工作的互联网,所以我不能轻易地检测到互联网是否正在通过链路(A)再次工作。
我正在寻找可以明确select下一跳的ping或traceroute(或其他诊断工具)。
ping -r看起来很有前途,但是只能在局域网上ping主机。 (只需要在数据包中写入另一个目标地址,该死!) traceroute -g gateway看起来更有希望,几乎做我想要的 – 但设置我的下一跳的拒绝源路由选项。 (不在我的行政范围内) 我只想要一个$ ping,那可以:
我可以用基于策略的路由做恶作剧,但这会对所有用户产生影响。 我希望看到一个无副作用的解决scheme….
上游网关是否与路由器位于相同的以太网段上? 如果这样nping --dest-mac …可能工作。 (Nping是nmap附带的许多工具之一,因此它可能已经在您的系统上。)
这个怎么样?
#!/bin/sh IP=$1 GW=$2 route add -host $IP gw $GW ping $IP route del -host $IP gw $GW
您可以尝试使用iptables和Route Patch来指定在来自该(A)接口的ICMP数据包上使用的网关。
假设你的(A)接口是10.0.0.1,默认gw是10.0.0.2
iptables -A PREROUTING -t mangle -p icmp -s 10.0.0.1 -j ROUTE --gw 10.0.0.2
然后ping -I 10.0.0.1 xxxx