如何通過非預設路由表進行 ping 測試?
我有一個 Linux 機器充當我家庭網路的路由器。它有3個路由表:
# ip route show default default via 192.168.5.1 dev wlp2s0 172.18.231.140/30 dev wwx0c5b8f279a64 proto kernel scope link src 172.18.231.141 192.168.0.0/24 dev enp1s0 proto kernel scope link src 192.168.0.110 192.168.1.0/24 dev enp3s0 proto kernel scope link src 192.168.1.10 192.168.5.0/24 dev wlp2s0 proto kernel scope link src 192.168.5.100 #ip route show table ISP1 default via 192.168.0.1 dev enp1s0 192.168.0.0/24 dev enp1s0 proto kernel scope link src 192.168.0.110 192.168.1.0/24 dev enp3s0 proto kernel scope link src 192.168.1.10 # ip route show table ISP2 default via 172.18.231.142 dev wwx0c5b8f279a64 172.18.231.140/30 dev wwx0c5b8f279a64 proto kernel scope link src 172.18.231.141 192.168.0.0/24 dev enp1s0 proto kernel scope link src 192.168.0.110 192.168.1.0/24 dev enp3s0 proto kernel scope link src 192.168.1.10
通常發生的情況是所有連接到網路的客戶端都通過預設網關,如果我願意,我將添加 ip 規則以匹配 ip 並將客戶端更改為使用 ISP1 表或 ISP2 表
現在我想
ping
檢查一下連接到 ISP2 表的移動網路“wwx0c5b8f279a64”是否已連接或斷開,但從 linux 框中我無法進行ping
檢查,因為ping
檢查通過預設路由,即通過“wlp2s0”界面。有沒有辦法解決這個問題?我想如果我可以將 Linux 機器的本地流量路由到 ISP2 表,它會起作用,但我不知道如何將機器的本地流量傳送到 ISP2 表。
顯而易見的方法是臨時添加一個規則,該規則將為您要 ping 的地址或地址範圍啟動表:
ip rule add to 8.8.8.8 table ISP2 ping 8.8.8.8 ip rule del to 8.8.8.8 table ISP2
請注意,只要規則處於活動狀態,到 8.8.8.8 的所有流量都將通過此介面,因此如果您實際上在某處使用 8.8.8.8 作為名稱伺服器,則在此期間它可能無法正常工作。
也許
nping
(通常是的一部分nmap
)可以在這裡提供幫助?從手冊頁:
--dest-mac mac (Ethernet Destination MAC Address)
This option sets the destination MAC address that should be set in outgoing Ethernet frames. This is useful in case Nping can't determine the next hop's MAC address or when you want to route probes through a router other than the configured default gateway. The MAC address should have the usual format of six colon-separated bytes, e.g. 0:50:56:d4:01:98. Alternatively, hyphens may be used instead of colons. Use the word random or rand to generate a random address, and broadcast or bcast to use ff:ff:ff:ff:ff:ff. If you set up a bogus destination MAC address your probes may not reach the intended targets.