我在我的工作室的办公室build立了一个networking,使用Raspberry Pi作为VPN服务器,让远程客户端访问局域网资源。
路由器端口转发1194端口到RPi,所以它可以从互联网访问。
一段时间后,我成功地使用Shorewall设置了OpenVPN,以授予VPN客户端访问选定的局域网服务器的权限。 但由于某种原因,VPN客户端根本无法访问Internet。
这是我的Shorewall设置:
我在区域 , 接口和主机文件中设置了三个区域。
区
#ZONE TYPE fw firewall net ipv4 loc:net ipv4 vpn ipv4
接口
#ZONE INTERFACE OPTIONS net eth0 dhcp,tcpflags,nosmurfs,routefilter,logmartians,sourceroute=0 vpn tun0
主机
#ZONE HOSTS loc eth0:192.168.200.0/24 (LAN subnet)
OpenVPN服务器的隧道文件中有一个条目:
隧道
#TYPE ZONE GATEWAY openvpnserver net 0.0.0.0/0
从VPN到eth0的数据包被伪装,因为LAN客户端的默认网关是路由器,而不是RPi。
伪装
#INTERFACE SOURCE ADDRESS eth0 10.8.0.0/24 (VPN subnet) 192.168.200.54 (local RPi address)
策略拒绝从vpn到loc的连接,并接受从vpn到net的连接。 规则文件中接受从vpn到loc的特定连接。
我错过了什么? 为什么VPN客户端无法访问Internet?
这个问题根本不在Shorewall的configuration中。 实际上从VPN访问互联网,但VPN客户端有错误的DNS服务器地址。
OpenVPN的server.conf中有一行
push "dhcp-option DNS 192.168.0.1"
在给定的设置中没有任何意义。 我纠正了地址,现在VPN客户端可以访问Internet。