无线网络和有线网络之间的网关不路由数据包

无线网络和有线网络之间的网关不路由数据包

我有以下接口/路线:

# IP 路由显示
192.168.101.0/24 dev eth0 proto 内核范围链接 src 192.168.101.10
192.168.8.0/24 dev tun0 proto 内核范围链接 src 192.168.8.1
默认通过 192.168.101.251 dev eth0

设备 eth0 连接到具有网关(192.168.101.251)的网络。

我的客户端位于连接到 tun0 的接入点(带有一些热点软件)后面:

clients -> tun0 -> gateway -> eth0 -> internet

我可以从 eth0 ping 互联网主机,但热点后面的客户端无法通过 tun0 访问互联网。如何将数据包从 tun0 路由到互联网(并返回)?

答案1

您需要在网关上启用 ip_forward:

sysctl net.ipv4.ip_forward=1

并伪装你的客户:

# /sbin/iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
# /sbin/iptables -A FORWARD -i tun0 -o eth0 -m state --state RELATED,ESTABLISHED -j ACCEPT
# /sbin/iptables -A FORWARD -i tun0 -o eth0 -j ACCEPT

您还需要设置您的客户端使用 tun0 的 IP 作为其默认网关。

答案2

您必须将默认网关路由0.0.0.0tun0

例如:

route add -net default gw 192.168.101.251 dev tun0

可能对你有用。也许你必须删除 eth0 的默认网关

route del -net default gw 192.168.101.251 dev eth0

这将通过tun0设备路由所有互联网流量。如果您将这两行添加到 /etc/network/interfaces 文件的末尾,它将在系统启动时运行。

相关内容