iptables在我的AP中丢弃ACK FIN包

我在我的Ubuntu机器上使用iptables有一个访问点。 该机器有eth0和wlan0桥接形成接口br0。
eth0和wlan0之间不应该有任何防火墙,我希望stream量能够自由stream畅地stream动。 如果stream量在eth0或wlan0处停止,则防火墙将启动

所以我在iptables中尝试了这个代码。

$IPTABLES -N RULE_3 $IPTABLES -A FORWARD -m physdev --physdev-is-bridged --physdev-in eth0 --physdev-out wlan0 -m state --state NEW -j RULE_3 $IPTABLES -A FORWARD -m physdev --physdev-is-bridged --physdev-in wlan0 --physdev-out eth0 -m state --state NEW -j RULE_3 $IPTABLES -A RULE_3 -j LOG --log-level info --log-prefix "RULE 3 -- ACCEPT " $IPTABLES -A RULE_3 -j ACCEPT 

但是,由于某些原因一些包被丢弃,所以我不能f.ex在wlan0设备上streamyoutube。 这我在我的日志中find

 Apr 10 21:32:03 NASHTPC kernel: [273846.062793] RULE 8 -- DENY IN=br0 OUT=br0 PHYSIN=wlan0 PHYSOUT=eth0 MAC=************** SRC=192.168.0.15 DST=17.172.208.47 LEN=40 TOS=0x00 PREC=0x00 TTL=64 ID=63737 PROTO=TCP SPT=58807 DPT=443 WINDOW=65535 RES=0x00 ACK FIN URGP=0 Apr 10 21:32:03 NASHTPC kernel: [273846.070615] RULE 3 -- ACCEPT IN=br0 OUT=br0 PHYSIN=wlan0 PHYSOUT=eth0 MAC=**************** SRC=192.168.0.15 DST=17.172.208.47 LEN=64 TOS=0x00 PREC=0x00 TTL=64 ID=2782 DF PROTO=TCP SPT=58808 DPT=443 WINDOW=65535 RES=0x00 SYN URGP=0 Apr 10 21:32:03 NASHTPC kernel: [273846.776553] RULE 8 -- DENY IN=br0 OUT=br0 PHYSIN=wlan0 PHYSOUT=eth0 MAC=************** SRC=192.168.0.15 DST=17.172.208.47 LEN=40 TOS=0x00 PREC=0x00 TTL=64 ID=10631 PROTO=TCP SPT=58807 DPT=443 WINDOW=65535 RES=0x00 ACK FIN URGP=0 

看起来问题是防火墙正在丢弃我的ACK / FIN包。 规则8是一个拒绝所有规则。

对于如何解决这个问题,有任何的build议吗? 我是否应该将规则3更改为其他内容以允许stream量自由stream动?

如果你想让stream量不受限制地stream通,那就这样做吧:

 iptables -A FORWARD -m physdev --physdev-is-bridged --physdev-in eth0 --physdev-out wlan0 -j ACCEPT iptables -A FORWARD -m physdev --physdev-is-bridged --physdev-in wlan0 --physdev-out eth0 -j ACCEPT 

有关TCP标志的含义的更多信息,请参阅: 此处

您只转发NEW状态,而不是ACK FIN,在SYN / ACK数据包之后被视为ESTABLISHED正在执行

你可以试试这个:

 $IPTABLES -N RULE_3 $IPTABLES -A FORWARD -m physdev --physdev-is-bridged --physdev-in eth0 --physdev-out wlan0 -m state --state NEW,RELATED,ESTABLISHED -j RULE_3 $IPTABLES -A FORWARD -m physdev --physdev-is-bridged --physdev-in wlan0 --physdev-out eth0 -m state --state NEW,RELATED,ESTABLISHED -j RULE_3 $IPTABLES -A RULE_3 -j LOG --log-level info --log-prefix "RULE 3 -- ACCEPT " $IPTABLES -A RULE_3 -j ACCEPT 

这里解释