我有以下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是:
'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 。 如果没有数据包,那么一切正常。