OpenVPN - 客户端可以看到服务器和 LAN,但看不到 Internet

OpenVPN - 客户端可以看到服务器和 LAN,但看不到 Internet

我有以下 OpenVPN 设置:

Client(android OpenVPN client) <-> internet <-> VPN server (linux) <-> LAN

VPN 服务器有eth0(在开放的互联网上可见)和eth1(本地防火墙 LAN 的一部分,192.168.1.0/24)。我使用“NAT hack”使本地 LAN 中的计算机对客户端可见,使用方法如下:

iptables -t nat -I POSTROUTING -s 10.8.0.0/24 -o eth1 -j MASQUERADE

因为我无法访问将 IP 配置推送到 LAN 中的大多数计算机的 DHCP 服务器。

现在我的情况如下:

  • 客户端顺利连接到服务器
  • 配置被推送到客户端
  • 我可以看到本地局域网中的计算机(这似乎与我能找到的解决方案不同 - 所有其他问题都与“NAT hack”的缺失有关 - 我已经解决了!)
  • 但是我无法访问互联网

从服务器推送到客户端的配置是:

'PUSH_REPLY,redirect-gateway autolocal bypass-dhcp,dhcp-option DNS 8.8.8.8,dhcp-option DNS 8.8.4.4,redirect-gateway defl,route 10.8.0.1,topology net30,ping 10,ping-restart 120,ifconfig 10.8.0.6 10.8.0.5' (status=1)

如您所见,提供了有效的(谷歌)DNS,所以据我所知这不是问题。“redirect-gateway autolocal”应该负责互联网访问,但它没有。“redirect-gateway dfl”没有改变任何东西。

我很确定我缺少额外的 iptable 行或路由......但我不知道它应该是什么。

澄清一下:我正在寻找一种通过 VPN 访问互联网的方法,而不是让流量通过 VPN!而且,我无法从客户端 ping 8.8.8.8,所以 DNS 不是问题所在。

编辑:是的,我启用了 IPV4 转发。我认为如果没有它,本地 LAN 将不可见。

pi@router:~ $ sysctl -a | grep net.ipv4.ip_forward    
net.ipv4.ip_forward = 1

答案1

现在我明白你的问题了。你配置的 NAT 仅用于访问 LAN,要访问 WAN,你应该添加另一条规则iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE

更新:检查 WAN 中私有 IP 是否被淹没的最简单方法是使用 tcpdump 检查 eth0 上的输出tcpdump -n -i eth0 | grep 192.168.0。如果没有数据包,则一切正常。

相关内容