Iptables

在 Linux 伺服器上配置埠設置

  • December 23, 2016

我正在嘗試允許 Internet 流量7778在我的伺服器上進行埠,但無法正確執行。可能在這裡犯了一些菜鳥錯誤。你能幫我診斷和解決問題嗎?

我只是做了以下事情:

sudo iptables -A TCP -p tcp -m tcp --dport 7778 -j ACCEPT

如果我這樣做iptables -S,我確實會看到列表中附加的規則,例如:

-A TCP -p tcp -m tcp --dport 22 -j ACCEPT
-A TCP -p tcp -m tcp --dport 80 -j ACCEPT
-A TCP -p tcp -m tcp --dport 443 -j ACCEPT
-A TCP -p tcp -m tcp --dport 7778 -j ACCEPT

但是,如果我從另一台伺服器 ping 這個特定埠 - telnet example.com 7778,我會看到:

telnet:無法連接到遠端主機:連接被拒絕

我還能在這裡做什麼?埠80443並且22工作正常,僅供參考。


注意:我的伺服器使用 Azure 基礎架構(經典 VM)。我採取的一個額外步驟是endpoint在 Azure 門戶中為埠 7778 添加一個。因此,這部分被覆蓋。

通過使用-A開關,您已將規則添加到鏈的末尾。這幾乎肯定會將它放在丟棄/阻止數據包的規則之後。

當 iptables/netfilter 正在檢查以查看應如何處理數據包時。第一個匹配的獲勝。在您的情況下,它可能會匹配一行-A INPUT -j REJECT --reject-with icmp-port-unreachable,這將在匹配您的允許消息之前導致連接被拒絕消息。

解決方案是使用將規則插入-I到 INPUT 鏈中的合適位置。

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