设置 IPTABLES 后,WiFi AP 没有互联网连接

设置 IPTABLES 后,WiFi AP 没有互联网连接

我已经设置了一个 Ubuntu 20.04 服务器作为网关/路由器。
现在网关可以正常工作了,我现在无法再通过家里的几个 AP 访问 WiFi。
我可以连接到 AP,但就是无法访问互联网。
看来 DHCP(dnsmasq)已经分配了一个 IP 地址。我只是无法连接互联网。
我的 IPTABLES 规则中是否缺少了什么?

*nat
:PREROUTING ACCEPT [0:0]
:INPUT ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
:POSTROUTING ACCEPT [0:0]

# Network Address Translation (NAT)
-A POSTROUTING -o enp1s0f0 -j MASQUERADE

COMMIT

*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]

#################
# Service rules #
#################

# Basic Global Accept Rules
# Loopback
-A INPUT -i lo -j ACCEPT

# ICMP
-A INPUT -i enp1s0f0 -p icmp -j DROP
-A INPUT -i enp1s0f1 -p icmp -j ACCEPT

# Traceroute
-A INPUT -p udp -m udp --dport 33434:33523 -j DROP

# Established
-A INPUT -i enp1s0f0 -s 0.0.0.0/0 -m state --state ESTABLISHED,RELATED -j ACCEPT

# DNS - accept from LAN
-A INPUT -i enp1s0f1 -p tcp --dport 53 -j ACCEPT
-A INPUT -i enp1s0f1 -p udp --dport 53 -j ACCEPT

# SSH - accept from LAN
-A INPUT -i enp3s0 -p tcp --dport 22 -j ACCEPT

# Deal with AP's
#-A INPUT -i enp1s0f1 -s 192.168.1.0/24 -d 0.0.0.0/0 -j ACCEPT
-A INPUT -s 192.168.1.0/24 -d 0.0.0.0/0 -j ACCEPT

# DHCP client requests - accept from LAN
-A INPUT -i enp1s0f1 -p udp --dport 67:68 -j ACCEPT

# Drop all other input traffic
-A INPUT -j DROP

####################
# Forwarding rules #
####################

# Forward packets along established/related connections
-A FORWARD -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT

# Forward from LAN to WAN
-A FORWARD -i enp1s0f1 -o enp1s0f0 -j ACCEPT

# Drop all other forwarded traffic
-A FORWARD -j DROP

COMMIT

答案1

无法从客户端创建传出的互联网连接。一开始,iptables 不知道如何处理数据包,数据包随后会遍历 FORWARD 链。

在您的 INPUT 链中,可能在您的端口 67,68 之前,添加以下行:

sudo iptables -A INPUT -i enp1s0f1 -s $INTNET -d $UNIVERSE -j ACCEPT

其中:
$INTNET 是您的内部网络定义,
即我的情况中的 INTNET="192.168.111.0/24"。
$UNIVERSE 可以是任意值,
即 UNIVERSE="0.0.0.0/0"

也改变这一点:

-A INPUT -m state --state ESTABLISHED -j ACCEPT

更改为:

sudo iptables -A INPUT -i enp1s0f0 -s $UNIVERSE -m state --state ESTABLISHED,RELATED -j ACCEPT

答案2

@DougSmythies
根据您的回答,我删除了“-i enp1s0f1”部分,它似乎可以工作。
我还发现我可以指定单独的 IP 地址,即:
sudo iptables -A INPUT -s 192.168.1.84 -d 0.0.0.0/0 -j ACCEPT
这将允许我控制 LAN 上的单个设备。
我不确定为什么包含 LAN 接口会导致它出现故障,但一旦我将其删除,它就可以正常工作。

相关内容