我有以下接口/路线:
# 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.0
至tun0
例如:
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 文件的末尾,它将在系统启动时运行。