因此,我尝试通过 ppp0 接口(类似于 4g 加密狗)设置热点对互联网的访问。
我已经为 ppp0 设置了具有最高优先级(度量 1)的默认路由。
将所有 iptable 策略设置为 ALLOW 并启用 ip 转发(如下所示),但我仍然无法 ping 通
ping -I eth2 8.8.8.8
请注意,ping -I ppp0 8.8.8.8 有效,并且默认操作(ping 8.8.8.8)通过 ppp0
这是我的配置
# route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 10.16.172.175 0.0.0.0 UG 1 0 0 ppp0
0.0.0.0 192.168.0.1 0.0.0.0 UG 10 0 0 eth0
192.168.0.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0
192.168.82.0 0.0.0.0 255.255.255.0 U 0 0 0 eth2
# cat /proc/sys/net/ipv4/ip_forward
1
iptables -F
iptables -P INPUT ACCEPT
iptables -P FORWARD ACCEPT
iptables -P OUTPUT ACCEPT
iptables -P POSTROUTING ACCEPT
答案1
仅有端口转发是不够的。
本地 wifi 网络上的设备具有 IP 192.168.0.*
。您将它们设置为转发到路由器。然后路由器将它们的数据包转发到互联网 - 而不更改它们。
问题是只有您的路由器知道如何处理192.168.0.*
,因为它是一个本地地址空间。
您需要在路由器上设置 IP 伪装。本质上,它需要更改途中的传出数据包,就好像它们是直接来自它一样。当然,它需要对传入数据包进行反向操作。您可以阅读更多详细信息这里。
除此之外,你还需要一个DHCP 服务器用于网络自动配置,并且至少有一个本地缓存 DNS 服务器也会很有用。