数据包被端口22上的iptables阻塞

当我运行一个调用paramiko的python库时,我注意到在我的iptables日志中有一些阻塞的数据包。 当iptables正在运行时,我发现阻塞的数据包试图找出为什么这个库存在不一致的networking性能。 基本上,服务器(日志下面的10.0.12.206)运行使用paramiko在端口22上的客户端(日志10.0.10.103)安全地执行命令的库。当客户端运行许可的iptables,它工作的很漂亮好。 当客户端使用下面的规则运行iptables时,通常存在无限期挂起,我猜想这可能是由于某些数据包被客户端上运行的iptables阻塞所致,因为这些数据包只在运行时出现在日志中。

这些是我的iptables规则 –

-P INPUT DROP -P FORWARD DROP -P OUTPUT DROP -A INPUT -i lo -j -ACCEPT -A OUTPUT -o lo -j -ACCEPT -A INPUT -i eth0 -p tcp --dport 22 -m state --state NEW,ESTABLISHED -j ACCEPT -A OUTPUT -o eth0 -p tcp --dport 22 -m state --state NEW,ESTABLISHED -j ACCEPT -A OUTPUT -o eth0 -p udp --dport 53 -m state --state NEW,ESTABLISHED -j ACCEPT -A INPUT -m state --state ESTABLISHED,RELATED -j -ACCEPT -A OUTPUT -m state --state ESTABLISHED,RELATED -j -ACCEPT -A INPUT -j LOG --log-prefix "IPtables DROP DEFAULT IN: " -A OUTPUT -j LOG --log-prefix "IPtables DROP DEFAULT OUT: " -P INPUT DROP -P FORWARD DROP -P OUTPUT DROP 

这些是客户端日志中的常用消息,

 Oct 7 16:43:08 ip-10-0-10-103 kernel: IPtables DROP DEFAULT IN: IN=eth0 OUT= MAC=<withheld> SRC=10.0.12.206 DST=10.0.10.103 LEN=52 TOS=0x00 PREC=0x00 TTL=64 ID=18436 DF PROTO=TCP SPT=58634 DPT=22 WINDOW=523 RES=0x00 ACK FIN URGP=0 Oct 7 16:44:14 ip-10-0-10-103 kernel: IPtables DROP DEFAULT OUT: IN= OUT=eth0 SRC=10.0.10.103 DST=10.0.12.206 LEN=260 TOS=0x00 PREC=0x00 TTL=64 ID=57627 DF PROTO=TCP SPT=22 DPT=58634 WINDOW=240 RES=0x00 ACK PSH URGP=0 

我想看看这些阻塞的数据包是否造成了麻烦。 我如何让这些被阻止的数据包通过? 我尝试了一些规则,但没有运气,例如 –

 -A OUTPUT -o eth0 -p tcp --tcp-flags ALL ACK,PSH,URG -j ACCEPT 

我认为问题在于你允许OUTPUT 端口22,但它应该来自端口22:

 -A OUTPUT -o eth0 -p tcp --sport 22 -m state --state NEW,ESTABLISHED -j ACCEPT 

这应该修复您发布的第二条日志行。 我不知道为什么你logging的第一个数据包被抓到了。 你能检查iptables -nvL ,并确保这些规则实际上得到应用?