Iptables
在 Linux 伺服器上配置埠設置
我正在嘗試允許 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:無法連接到遠端主機:連接被拒絕
我還能在這裡做什麼?埠
80
,443
並且22
工作正常,僅供參考。注意:我的伺服器使用 Azure 基礎架構(經典 VM)。我採取的一個額外步驟是
endpoint
在 Azure 門戶中為埠 7778 添加一個。因此,這部分被覆蓋。
通過使用
-A
開關,您已將規則添加到鏈的末尾。這幾乎肯定會將它放在丟棄/阻止數據包的規則之後。當 iptables/netfilter 正在檢查以查看應如何處理數據包時。第一個匹配的獲勝。在您的情況下,它可能會匹配一行
-A INPUT -j REJECT --reject-with icmp-port-unreachable
,這將在匹配您的允許消息之前導致連接被拒絕消息。解決方案是使用將規則插入
-I
到 INPUT 鏈中的合適位置。