我正在尝试设置 UFW,以允许连接到使用 创建的 Wi-Fi 热点的客户端使用 DHCP 和 DNS nmcli
。我希望设置尽可能严格,以避免有线(eth0
)——即“互联网”——接口等上发生任何 DHCP 冲突。简而言之:
- 热点客户端
wlan0
必须位于 NAT 后面,并且必须能够从相应的热点 DHCP 获取 IP 和 DNS 配置, - 上的热点客户端
wlan0
必须能够访问有线接口提供的互联网(eth0
), - 有线网络上的其他设备(
eth0
)必须不知道它们的一个“邻居”充当网关、提供 DHCP/DNS 等事实。
我已经通过 设置了 NAT 和转发,只要客户端设备使用静态 IP 配置iptables
,一切就都正常。但是,当配置为使用 DHCP 时,客户端设备无法获取此信息,因此无法连接到热点。
热点使用的子网为 10.42.0.0/24,网关为 10.42.0.1(NetworkManager 默认值)。当我尝试wlan0
使用
# DHCP
ufw allow in on wlan0 from 10.42.0.0/24 to 10.42.0.1 port 67 proto udp
ufw allow out on wlan0 from 10.42.0.1 to 10.42.0.0/24 port 68 proto udp
# DNS
ufw allow in on wlan0 from 10.42.0.0/24 to 10.42.0.1 port 53
ufw allow out on wlan0 from 10.42.0.1 to 10.42.0.0/24 port 53
我的 UFW 配置变成(即,只存在这四条额外规则):
$ ufw status verbose
Status: active
Logging: on (low)
Default: deny (incoming), allow (outgoing), deny (routed)
New profiles: skip
To Action From
-- ------ ----
10.42.0.1 67/udp on wlan0 ALLOW IN 10.42.0.0/24
10.42.0.1 53 on wlan0 ALLOW IN 10.42.0.0/24
10.42.0.0/24 68/udp ALLOW OUT 10.42.0.1 on wlan0
10.42.0.0/24 53 ALLOW OUT 10.42.0.1 on wlan0
但是:即使有了这些规则,热点客户端也无法从 DHCP 获取 IP/DNS 配置。不用说,当我暂时禁用 UFW 时就不会出现这样的问题了……
在这篇帖子中,用户“telcoM”发表了一条评论,我发现可能需要允许bootps
和bootpc
协议,而不是分别允许端口 67 和 68。尽管如此,我还是找不到执行此操作所需的 UFW 语法——迄今为止所做的所有尝试(例如ufw allow in on wlan0 from 10.42.0.0/24 to 10.42.0.1 bootps
)都导致 UFW 发出抱怨(通常ERROR: Wrong number of arguments
)。
我做错什么了?
谢谢。