Iptables

更改策略後 iptables -L 的輸出

  • September 10, 2022

當我更改 INPUT 的預設策略時,iptables -L 的輸出在第三行之後停止。我通過 ssh 和本地檢查了它。我的終端的輸出(是的,我知道我不應該使用 root)。

root@pi4:/# iptables -L -v
Chain INPUT (policy ACCEPT 73 packets, 16085 bytes)
pkts bytes target     prot opt in     out     source               destination         
 261 18964 ACCEPT     tcp  --  any    any     192.168.0.0/16       anywhere             tcp dpt:60022
  94  7786 ACCEPT     all  --  lo     any     anywhere             anywhere            
   0     0 ACCEPT     tcp  --  any    any     192.168.0.0/16       anywhere             tcp dpt:netbios-ssn
   0     0 ACCEPT     tcp  --  any    any     192.168.0.0/16       anywhere             tcp dpt:microsoft-ds
   0     0 ACCEPT     udp  --  any    any     192.168.0.0/16       anywhere             udp dpt:netbios-ns
   4   962 ACCEPT     udp  --  any    any     192.168.0.0/16       anywhere             udp dpt:netbios-dgm

Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target     prot opt in     out     source               destination         

Chain OUTPUT (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target     prot opt in     out     source               destination         

root@pi4:/# iptables -P INPUT DROP

root@pi4:/# iptables -L -v
Chain INPUT (policy DROP 0 packets, 0 bytes)
pkts bytes target     prot opt in     out     source               destination         
^C

root@pi4:/# 

DNS查找速度變慢。由於新規則集現在阻止接收 DNS 回复,因此對於每一行,在達到超時之前都會有一段時間。

您應該始終使用該-n參數來避免 DNS 查找。其實,-v也應該用它來做一些有意義的輸出。坦率地說,iptables -L幾乎不應該使用,尤其是在 stackexchange 上,因為它很難重現問題中的問題。唯一有用的情況是特定匹配或目標在其輸出上顯示附加狀態資訊。

您應該更喜歡其中之一:

  • iptables -S對於單個表或鏈(如果提供)
  • iptables-save -c對於具有數據包計數的整個規則集(這有助於確定規則是否不匹配)

無論如何,您應該添加一個有狀態規則以允許接收回复流量,包括 DNS 回复:

iptables -I INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT

引用自:https://unix.stackexchange.com/questions/716846