UFW,允许从 wlan 到 eth

UFW,允许从 wlan 到 eth

我想使用我的 ubuntu 12.04 笔记本作为智能手机的 wifi 热点。一切正常,使用 dnsmasq 和 hostapd 并允许 UFW 上的端口 68 和 53。但要访问网络,必须禁用 UFW。连接正常(wifi 已连接,IP 已正确接收,dns 查询已转发...)在 UFW 完整日志中我看到:

Oct  3 17:09:41 ccd-7840l kernel: [28302.397796] [UFW AUDIT] IN=wlan1 OUT=eth8 MAC=8c:...:00 SRC=192.168.0.59 DST=74.125.234.196 LEN=60 TOS=0x00 PREC=0x00 TTL=63 ID=22391 DF PROTO=TCP SPT=46279 DPT=443 WINDOW=14600 RES=0x00 SYN URGP=0 
Oct  3 17:09:41 ccd-7840l kernel: [28302.397841] [UFW BLOCK] IN=wlan1 OUT=eth8 MAC=8c:...:00 SRC=192.168.0.59 DST=74.125.234.196 LEN=60 TOS=0x00 PREC=0x00 TTL=63 ID=22391 DF PROTO=TCP SPT=46279 DPT=443 WINDOW=14600 RES=0x00 SYN URGP=0

然后,我添加了以下规则:

sudo ufw allow from 192.168.0.59
sudo ufw allow in on wlan1 from  192.168.0.48/28

但它仍然阻塞。我不知道在 Google 上搜索什么来修复此问题 :)

答案1

解决方案对我有用。

首先,需要在 中启用数据包转发ufw。需要调整两个配置文件。将/etc/default/ufw更改DEFAULT_FORWARD_POLICY"ACCEPT"”

DEFAULT_FORWARD_POLICY="ACCEPT"

然后编辑/etc/ufw/sysctl.conf并取消注释以下内容(我猜你启动虚拟热点的脚本已经设置了 IP 转发,因此你可以跳过这一步,或者可能想要从脚本中删除 IP 转发行):

net/ipv4/ip_forward=1

同样地,对于 IPv6 转发取消注释:

net/ipv6/conf/default/forwarding=1

现在我们将规则添加到/etc/ufw/before.rules文件中。默认规则仅配置过滤表,要启用伪装,nat则需要配置该表。将以下内容添加到文件顶部,紧接着标头注释之后(同样,如果您有一个用于启动热点的脚本,则可以(或可能应该)从中删除与伪装相关的任何行):

# nat Table rules
*nat
:POSTROUTING ACCEPT [0:0]

# Forward traffic through eth8.
-A POSTROUTING -s 192.168.0.0/24 -o eth8 -j MASQUERADE

# don't delete the 'COMMIT' line or these nat table rules won't be processed
COMMIT

注释并非绝对必要,但记录您的配置是一种很好的做法。此外,在修改 中的任何规则文件时/etc/ufw,请确保以下行是每个修改表的最后一行:

# don't delete the 'COMMIT' line or these rules won't be processed
COMMIT

对于每个表,COMMIT都需要一个相应的语句。在这些示例中,仅nat显示了和过滤表,但您也可以为 raw 和 mangle 表添加规则。

[Note]  

在上面的例子中,将eth8和替换192.168.0.0/24为您网络的适当接口和 IP 范围。

最后,禁用并重新启用ufw以应用更改:

sudo ufw disable && sudo ufw enable

现在应该启用 IP 伪装。您还可以向 中添加任何其他 FORWARD 规则/etc/ufw/before.rules。建议将这些附加规则添加到 ufw-before-forward 链中。

相关内容