Iptables 在我的 AP 中丢弃 ACK FIN 包

Iptables 在我的 AP 中丢弃 ACK FIN 包

我的 Ubuntu 机器上有一个带 iptables 的接入点。机器有 eth0 和 wlan0,它们桥接在一起形成接口 br0。eth0
和 wlan0 之间不应该有任何防火墙,我希望流量自由流动且不受限制。如果流量在 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

但是,由于某些原因,一些软件包被删除了,所以我无法在 wlan0 设备上播放 YouTube。这是我在日志中发现的

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 是 DENY ALL 规则。

有什么建议可以解决这个问题吗?我是否应该将规则 3 更改为其他内容以允许流量自由流动?

答案1

如果你希望流量畅通不受限制,然后这样做:

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 标志含义的详细信息,请参见:这里

答案2

你转发的只是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

解释在这里

相关内容