Linux
阻止 ICMP 不可達的傳出數據包
我正在嘗試使用 iptables 規則來阻止以下流量;這是對無法訪問的主機的響應。
17:50:11.140992 IP 10.1.1.93 > 72.21.91.29: ICMP host 10.1.1.93 unreachable, length 48 17:50:11.140997 IP 10.1.1.93 > 72.21.91.29: ICMP host 10.1.1.93 unreachable, length 48
我添加了以下規則
[admin@user ~]# iptables -I OUTPUT -p icmp -m icmp --icmp-type 3/1 -s 10.1.1.93 -j DROP [admin@user ~]# iptables -nL Chain INPUT (policy DROP) ... ... Chain OUTPUT (policy DROP) target prot opt source destination DROP icmp -- 10.1.1.93 0.0.0.0/0 icmptype 3 code 1 ACCEPT all -- 0.0.0.0/0 8.8.8.8 /* COMMENT */
還嘗試阻止所有 icmp 類型 3 數據包,但不知何故我仍然在 tcpdump 中看到數據包。有人可以幫助我在這裡做錯了嗎?
[admin@user ~]# iptables -I OUTPUT -p icmp -m icmp --icmp-type 3 -s 10.1.1.93 -j DROP
編輯:我看到的最接近的問題是這個還沒有答案的問題。https://unix.stackexchange.com/questions/217750/undesired-icmp-destionation-unreachable-message
由於
10.1.1.93
不是任何介面的地址並且您有 SNAT 規則,我猜想 ICMP 數據包是使用不同的源地址生成的,因此您的iptables
規則不匹配。要擺脫這些
Destination Host Unreachable
數據包,您可以將正確的地址添加到iptables
規則中或根本不添加地址:iptables -I OUTPUT -p icmp -m icmp --icmp-type host-unreachable -j DROP
但是,我會致力於他們的事業:有人試圖連接到一個只能出現在傳出連接上的地址,而不是傳入連接。像這樣的規則:
iptables -A FORWARD -d 10.1.1.93 -m conntrack --ctstate NEW -j DROP
應該可以解決您的問題。備註:它在
FORWARD
表中,因為這些連接不會到達INPUT
.