我有这个iptables规则:
# iptables -n -L -v --line-numbers
Chain INPUT (policy DROP 0 packets, 0 bytes)
num pkts bytes target prot opt in out source destination
1 7392 4841K ACCEPT all -- lo * 0.0.0.0/0 0.0.0.0/0
2 250K 531M ACCEPT all -- * * 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED
3 0 0 ACCEPT all -- * * 192.168.0.0/24 0.0.0.0/0
4 0 0 ACCEPT all -- * * 80.1.1.69 0.0.0.0/0
5 6929 360K ACCEPT all -- * * 110.50.200.145 0.0.0.0/0
6 23 1404 ACCEPT all -- * * 100.40.30.0/24 0.0.0.0/0
7 781 46428 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:22 state NEW,ESTABLISHED
8 101 5928 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:25 state NEW,ESTABLISHED
9 5664 338K ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:80 state NEW,ESTABLISHED
10 846 65748 LOGGING all -- * * 0.0.0.0/0 0.0.0.0/0
11 0 0 REJECT all -- * * 0.0.0.0/0 0.0.0.0/0 reject-with icmp-host-prohibited
Chain FORWARD (policy DROP 0 packets, 0 bytes)
num pkts bytes target prot opt in out source destination
1 0 0 REJECT all -- * * 0.0.0.0/0 0.0.0.0/0 reject-with icmp-host-prohibited
Chain OUTPUT (policy ACCEPT 147K packets, 381M bytes)
num pkts bytes target prot opt in out source destination
Chain LOGGING (1 references)
num pkts bytes target prot opt in out source destination
1 734 46882 LOG all -- * * 0.0.0.0/0 0.0.0.0/0 limit: avg 6/min burst 5 LOG flags 0 level 7 prefix `iptables: '
2 846 65748 DROP all -- * * 0.0.0.0/0 0.0.0.0/0
事情是日志文件显示如下行:
Jan 28 17:31:30 myhostname kernel: iptables: IN=eth0 OUT= MAC=78:24:ff:3a:3b:0e:00:09:0f:09:3b:06:08:00 SRC=188.85.58.233 DST=210.6.60.254 LEN=40 TOS=0x00 PREC=0x00 TTL=54 ID=40229 DF PROTO=TCP SPT=56131 DPT=80 WINDOW=0 RES=0x00 RST URGP=0
Jan 21 22:54:03 myhostname kernel: iptables: IN=eth0 OUT= MAC=78:24:af:3a:3b:0c:00:09:0f:09:3b:06:08:00 SRC=217.12.26.61 DST=210.6.60.254 LEN=40 TOS=0x00 PREC=0x00 TTL=41 ID=0 DF PROTO=TCP SPT=35401 DPT=25 WINDOW=0 RES=0x00 RST URGP=0
请注意,我打开了端口80和25。
为什么某些连接会在80和25上被iptables阻塞?我通过这两种服务来获取流量,但我不明白为什么ip表会阻止某些连接。
谢谢
答案 0 :(得分:0)
您将在这些日志行的末尾注意到,数据包设置了tcp重置标志:
...WINDOW=0 RES=0x00
的 RST
强> URGP=0
可能conntrack认为连接不是一个接收敏感数据包的状态,而conntrack会将它们标记为INVALID
。这意味着它们不会被规则#2选中。当你的链中的规则#7-9被击中时,它们也不算作NEW
或ESTABLISHED
。
因此,他们点击你的日志规则#10并被规则#11拒绝。
您可以忽略此问题,或在日志行之前的某处添加规则以处理INVALID
数据包:
-m conntrack --ctstate INVALID -j DROP