Linux
如何在 2 個 linux 主機之間的特定 UDP 埠上測試網路連接
我正在尋找一種方法來測試 2 個 linux 主機之間特定埠上的網路連接。
舉個例子:我正在通過埠 514 從伺服器 A 向伺服器 B 發送 syslog 事件。但是,伺服器 B 從未收到來自伺服器 A 的事件。我可以確認伺服器 A 正在發送它,並且伺服器 B 上的埠 514 已打開。目前,我懷疑這些伺服器之間的防火牆阻止了 514 連接。
在這種情況下,是否有任何工具或方法可以幫助驗證是否為埠 514 打開了防火牆?
您可以做幾件事。
首先,檢查您認為正在執行並在某些埠上偵聽的服務是否確實在偵聽,為此,請使用 netstat:
netstat -plunt
不僅如此,您還可以使用像 Wireshark 這樣的數據包分析器或稱為 tcpdump 的 Linux 內置工具。
要分析名為 eth0 的網路介面卡上的所有流量,請執行:
tcpdump -i eth0
要分析 nic eth0、協議 udp 和埠 514 上的所有流量:
tcpdump -i eth0 -n udp 'port 514'
如果您懷疑其中一台機器上的防火牆,那麼您可以通過發出下一個命令列出該機器上的所有活動規則:
sudo iptables -S
可以在此處找到有關可以執行以幫助您解決問題的 iptables 命令的更多資訊。
我將採取的另一個故障排除步驟是從 syslog 發送機器遠端登錄到埠 514 中的 syslog 接收機器:
telnet hostB:514
如果您的會話已打開,則意味著 hostA 可以通過給定埠訪問 hostB。