Fedora 24:從伺服器掃描時埠顯示為打開,但從外部 nmap 時關閉
我有一個 Fedora 24 伺服器,服務於一個 Angular2 項目。Angular2 會在服務啟動後
3000
自動打開埠。3001
然而,雖然執行nmap localhost
顯示埠是打開的,但當我從遠端電腦執行 nmap 時,這些埠顯示為關閉。有沒有
iptables
我可以用來公開打開這些埠的設置?或者類似的東西?我嘗試執行:
iptables -A OUTPUT -p tcp -m tcp --dport 3000 -j ACCEPT iptables -A OUTPUT -p tcp -m tcp --dport 3001 -j ACCEPT
但這並沒有幫助,從外部掃描時埠仍然關閉,我無法查看提供的內容(內部請求功能正常)。
輸出
netstat --an | egrep "3000|3001"
:tcp6 0 0 :::3000 :::* LISTEN tcp6 0 0 :::3001 :::* LISTEN`
A
curl
到伺服器的“外部”IP 地址在內部工作正常,但在從其他機器執行時將無法工作。
最後的解決方案是執行以下命令:
firewall-cmd --zone=FedoraServer --add-port=3000/tcp
似乎在 Fedora 24 或在 linodes 上設置的 Fedora 24 上,iptables 沒有 TCP 條目。
從描述來看,問題似乎是伺服器的防火牆阻止了對 Angular 開發埠的傳入請求。防火牆配置可以從相當簡單到非常複雜,請小心並確保您了解自己在做什麼。
話雖如此,最可能的解決方案是按照您正確假設的那樣打開防火牆中的埠。必須允許入站和出站流量通過,客戶端才能使用它。出站流量通常未經過濾,因此您可以保持原樣。
OUTPUT
只需更改INPUT
iptables-commands 中的內容就足夠了。如果這不起作用(或者甚至更好,在您嘗試上述方法之前),請查看輸出
iptables -nvL --line-numbers
並檢查與您將要添加的規則相似的規則。在上方或下方插入您的規則,以盡量減少破壞任何東西的風險。這是我使用的其中一台機器上的輸出,以舉例說明我的意思:
Chain INPUT (policy DROP 0 packets, 0 bytes) num pkts bytes target prot opt in out source destination 1 5608K 815M ACCEPT all -- lo * 0.0.0.0/0 0.0.0.0/0 2 3010K 621M ACCEPT all -- * * 0.0.0.0/0 0.0.0.0/0 ctstate RELATED,ESTABLISHED 3 68754 3002K DROP tcp -- * * 0.0.0.0/0 0.0.0.0/0 ctstate INVALID 4 14095 1083K ACCEPT icmp -- * * 0.0.0.0/0 0.0.0.0/0 5 397K 21M TCP tcp -- * * 0.0.0.0/0 0.0.0.0/0 ctstate NEW 6 45083 8704K UDP udp -- * * 0.0.0.0/0 0.0.0.0/0 ctstate NEW 7 128K 6265K REJECT tcp -- * * 0.0.0.0/0 0.0.0.0/0 reject-with tcp-reset 8 45085 8707K REJECT udp -- * * 0.0.0.0/0 0.0.0.0/0 reject-with icmp-port-unreachable 9 1 52 REJECT all -- * * 0.0.0.0/0 0.0.0.0/0 reject-with icmp-proto-unreachable Chain FORWARD (policy DROP 0 packets, 0 bytes) num pkts bytes target prot opt in out source destination Chain OUTPUT (policy ACCEPT 4647K packets, 1421M bytes) num pkts bytes target prot opt in out source destination Chain TCP (1 references) num pkts bytes target prot opt in out source destination 1 56599 3172K ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:22 2 54495 2814K ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:80 3 158K 9164K ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:443 Chain UDP (1 references) num pkts bytes target prot opt in out source destination
這仍然相當簡單,但只是將新規則附加到
INPUT
鏈中並沒有幫助。與您想要的規則相似的規則在TCP
鏈中,因此我們將在那裡添加規則:iptables -A TCP -p tcp --dport 3000 -j ACCEPT
如果仍然沒有幫助,請檢查外部機器是否使用 IPv6 訪問伺服器並
ip6tables
相應地使用。