
我的iptables規則如下:
-P INPUT ACCEPT
-P FORWARD ACCEPT
-P OUTPUT ACCEPT
-N f2b
-A INPUT -p tcp -m multiport --dports 80,443 -j f2b
-A INPUT -d (my public facing ip)/32 -p udp -m udp --dport 10000 -j DROP
-A f2b -s 1.1.1.1/32 -j REJECT --reject-with icmp-port-unreachable
-A f2b -j RETURN
所有其他表也將每個鏈都設定為接受。
為什麼1.1.1.1無法存取tcp連接埠80和443,但大家仍然可以存取我的公網ip上的10000連接埠?
答案1
-A INPUT -p tcp -m multiport --dports 80,443 -j f2b
表示如果轉到名為的鏈f2b
-A f2b -s 1.1.1.1/32 -j REJECT --reject-with icmp-port-unreachable
鏈中的第一條規則名為f2b說拒絕 1.1.1.1/32
就 8.8.8.8 而言,我看不到流量,可能它使用 TCP 而不是 UDP。 8.8.8.8 是目標,因此如果來源是 8.8.8.8 而目標是其他內容,則它將不符合規則。
嘗試這個:
-I FORWARD 1 -d 8.8.8.8/32 -p udp -m udp --dport 10000 -j DROP
答案2
如果您想阻止來自的流量從8.8.8.8 從命中你的連接埠開始,你使用-s
(來源位址)而不是-d
(目標位址)
答案3
我透過將 DROP 替換為 REJECT 解決了這個問題,我不知道為什麼會這樣,但結果如下:
-P INPUT ACCEPT
-P FORWARD ACCEPT
-P OUTPUT ACCEPT
-N f2b
-A INPUT -p tcp -m multiport --dports 80,443 -j f2b
-A INPUT -d (my public facing ip)/32 -p udp -m udp --dport 10000 -j REJECT --reject-with icmp-port-unreachable
-A f2b -s 1.1.1.1/32 -j REJECT --reject-with icmp-port-unreachable
-A f2b -j RETURN
編輯:我發現 DROP 工作得很好,我使用 nmap 來查看端口是否打開,但忘記了 nmap 僅在收到拒絕時才會說它已關閉。