偵測到某個IP位址的流量經過哪個介面

偵測到某個IP位址的流量經過哪個介面

我正在製作一個腳本,我需要偵測IP的流量通過哪個介面。這是因為在架構中,IP 位址僅用於四個 NIC 之一,但也可以是這四個中的任何一個。

我所做的手動方式是運行 tcpdump:如果我看到資料包,那麼這就是介面;如果沒有,則取消 tcpdump,並在另一個介面上再執行一次 tcpdump。

我正在運行 FreeBSD。

答案1

稱呼route get

route get 192.0.2.42 | awk '$1 ~ /interface/ {print $2}'

答案2

netstat -tau顯示程式使用的本機位址和連接埠。每個介面都有自己的地址,除了綁定等情況......這是您需要的資訊嗎?

如果是這樣,則很容易在腳本中使用它grep並輸出。cut

例如: netstat -taunpe | grep firefox | awk '{print $4}' | cut -d ':' -f 1 檢索「firefox」已建立的連線所使用的本機位址。

答案3

我不確定 *BSD,但在 Linux 上,它route -n會告訴您(除了其他資訊之外)標誌(您可能想要搜尋標記為預設路由的行)和裝置名稱:

$ route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         10.100.63.254   0.0.0.0         UG    0      0        0 eth0
10.100.0.0      0.0.0.0         255.255.192.0   U     0      0        0 eth0
127.0.0.0       0.0.0.0         255.0.0.0       U     0      0        0 lo
169.254.0.0     0.0.0.0         255.255.0.0     U     0      0        0 eth0

或者:

$ ip route
default via 10.100.63.254 dev eth0 
10.100.0.0/18 dev eth0  proto kernel  scope link  src 10.100.12.38 
127.0.0.0/8 dev lo  scope link 
169.254.0.0/16 dev eth0  scope link

相關內容