Ubuntu 伺服器 - 來自不同網路的數據包無法通過(刷新的 iptables)
我已經設置了一個全新的 Ubuntu 伺服器,我遇到了一個非常奇怪的網路相關問題 - 伺服器上執行的程序無法“看到”來自外部網路的數據包,但是當我在 tcpdump 上執行時它們確實出現了伺服器唯一的網路介面。但是,當我從同一子網上的其他伺服器發送完全相同類型的流量時,它會一直通過。
我最初遇到了 SNMP 陷阱(UDP 162/10162)進入伺服器(它應該是日誌伺服器)的問題,但同樣的問題在更多埠上仍然存在(嘗試了幾個隨機的高埠,以及一些特權埠)。
我編寫了兩個簡短的 python 腳本,一個在“目標”伺服器上執行,並將流量轉儲到其中一個埠,兩個相同的腳本在另外兩台伺服器上執行(一個在本地網路上,另一個在外部網路),生成流量 - 執行 tcpdump 時我可以看到來自兩台伺服器的流量,但偵聽 python 腳本僅轉儲來自本地伺服器的流量。
我已經多次檢查 iptables,並刷新了所有鍊和表中的所有規則。
我對此感到很困惑,如果有人暗示我接下來可以檢查什麼,我將非常感激。
提前致謝。
謝謝大家的回复,最後在同事的幫助下解決了。
目標伺服器的路由表中只有一條本地路由,沒有預設路由。我假設它不必有預設網關,因為只有傳入的 UDP 流量。設置預設網關後問題就消失了——來自外部網路的流量現在正確地到達了監聽程序。
請發布 and 的輸出,
iptables -vnL
以便iptables -t nat -vnL
我們查看您的規則集並確定可能的防火牆問題。此外,如果您的服務正在執行
127.0.0.1
,那麼您必須:
更改您的服務綁定的介面 from
lo
或 from127.0.0.1
創建一個 NAT 規則,將數據包傳入物理介面並對連接進行 NAT
127.0.0.1
,以便外部連接訪問您的服務(此規則需要 3.13 之後的核心才能工作;取決於您的 Ubuntu 版本,這可能已經是在您的核心中可用)請發布 的輸出並發布以or
netstat -anp | grep <your service's port>
開頭的任何行。tcp``tcp6
希望這可以幫助