OpenVPN – 客户端看到服务器和局域网,但不是互联网

我有以下OpenVPN设置:

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

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

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

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

现在我有以下情况:

  • 客户端连接到服务器没有问题
  • configuration被推送到客户端
  • 我可以看到本地局域网中的计算机(这似乎与我所能find的解决scheme有所不同 – 所有其他问题都与“NAT黑客”的缺失有关 – 我已经解决了这个问题!
  • 但我没有访问互联网

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

 '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提供,所以不能成为一个问题,AFAIK。 “redirect网关autolocal”应该照顾互联网接入,但事实并非如此。 “redirect-gateway dfl”不会改变任何东西。

我很确定我缺less额外的iptable行或路由…但我失去了它应该是。

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

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

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

现在我明白你的问题了。 你只configurationNAT来访问局域网,为了访问WAN,你应该添加另一个规则iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE

更新:最简单的方法来检查你是不是用私有IP洪stream广域网,使用tcpdump来检查eth0上的输出,例如tcpdump -n -i eth0 | grep 192.168.0 tcpdump -n -i eth0 | grep 192.168.0 。 如果没有数据包,那么一切正常。