Ubuntu

Ubuntu 伺服器 - 來自不同網路的數據包無法通過(刷新的 iptables)

  • January 22, 2016

我已經設置了一個全新的 Ubuntu 伺服器,我遇到了一個非常奇怪的網路相關問題 - 伺服器上執行的程序無法“看到”來自外部網路的數據包,但是當我在 tcpdump 上執行時它們確實出現了伺服器唯一的網路介面。但是,當我從同一子網上的其他伺服器發送完全相同類型的流量時,它會一直通過。

我最初遇到了 SNMP 陷阱(UDP 162/10162)進入伺服器(它應該是日誌伺服器)的問題,但同樣的問題在更多埠上仍然存在(嘗試了幾個隨機的高埠,以及一些特權埠)。

我編寫了兩個簡短的 python 腳本,一個在“目標”伺服器上執行,並將流量轉儲到其中一個埠,兩個相同的腳本在另外兩台伺服器上執行(一個在本地網路上,另一個在外部網路),生成流量 - 執行 tcpdump 時我可以看到來自兩台伺服器的流量,但偵聽 python 腳本僅轉儲來自本地伺服器的流量。

我已經多次檢查 iptables,並刷新了所有鍊和表中的所有規則。

我對此感到很困惑,如果有人暗示我接下來可以檢查什麼,我將非常感激。

提前致謝。

謝謝大家的回复,最後在同事的幫助下解決了。

目標伺服器的路由表中只有一條本地路由,沒有預設路由。我假設它不必有預設網關,因為只有傳入的 UDP 流量。設置預設網關後問題就消失了——來自外部網路的流量現在正確地到達了監聽程序。

請發布 and 的輸出,iptables -vnL以便iptables -t nat -vnL我們查看您的規則集並確定可能的防火牆問題。

此外,如果您的服務正在執行127.0.0.1,那麼您必須:

  1. 更改您的服務綁定的介面 fromlo或 from127.0.0.1

  2. 創建一個 NAT 規則,將數據包傳入物理介面並對連接進行 NAT 127.0.0.1,以便外部連接訪問您的服務(此規則需要 3.13 之後的核心才能工作;取決於您的 Ubuntu 版本,這可能已經是在您的核心中可用)

請發布 的輸出並發布以ornetstat -anp | grep <your service's port>開頭的任何行。tcp``tcp6

希望這可以幫助

引用自:https://serverfault.com/questions/750876