我想使用我的 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 链中。