我的主要目标是:在服务器上安装一个VPN服务器,并且该服务器上的一个网站应该只能被在同一台服务器上使用VPN的用户访问。
首先,这两个服务器的情况下工作。
也就是说,我有两个服务器,A和B.PPTP VPN服务器安装在A中,nginx在B上。
我已经为我的nginx站点设置了允许规则,如下所示,它们工作正常:
allow ip_of_a; deny all;
但是,当我尝试连接A上的一个站点(VPN服务器也有一个Nginx服务器)时,我的远程IP显示为我的原始IP,而不是通过VPN连接时获得的IP,并且在nginx上获得403 Forbidden页面。 错误日志显示来自我原始IP的连接尝试,而不是VPN的IP。
我知道VPN仍然知道我的原始IP,而不是它提供给我的IP,但是应该有一种解决方法。
VPN分配的本地IP的forms允许10.80.80。*,所以我把另一个允许的forms
allow 10.80.80.0/24;
这没有办法。
我也尝试直接添加VPN给我的本地IP,但它再次没有工作:
allow 10.80.80.100;
这是否需要以某种方式从pptp服务器修复,还是可以从nginx规则修复?
编辑:连接到vpn之前和之后客户端(OS X)上的路由表:
之前:
Internet: Destination Gateway Flags Refs Use Netif Expire default 192.168.1.1 UGSc 18 0 en0 127 127.0.0.1 UCS 0 0 lo0 127.0.0.1 127.0.0.1 UH 17 12724964 lo0 169.254 link#4 UCS 0 0 en0 192.168.1 link#4 UCS 3 0 en0 192.168.1.1 0:25:9c:4a:c6:44 UHLWIir 19 28906 en0 1000 192.168.1.126 0:88:65:5c:6a:f4 UHLWIi 0 33 en0 440 192.168.1.129 127.0.0.1 UHS 1 0 lo0 192.168.1.255 ff:ff:ff:ff:ff:ff UHLWbI 0 24 en0
后:
Internet: Destination Gateway Flags Refs Use Netif Expire default 10.99.99.99 UGSc 16 0 ppp0 default 192.168.1.1 UGScI 11 0 en0 10 ppp0 USc 1 0 ppp0 10.99.99.99 10.99.99.100 UHr 17 8 ppp0 SERVER_IP_HERE 192.168.1.1 UGHS 1 299 en0 127 127.0.0.1 UCS 0 0 lo0 127.0.0.1 127.0.0.1 UH 17 12724968 lo0 169.254 link#4 UCS 0 0 en0 192.168.1 link#4 UCS 3 0 en0 192.168.1.1 0:25:9c:4a:c6:44 UHLWIir 13 28987 en0 988 192.168.1.126 0:88:65:5c:6a:f4 UHLWIi 0 33 en0 428 192.168.1.129 127.0.0.1 UHS 0 0 lo0 192.168.1.255 ff:ff:ff:ff:ff:ff UHLWbI 0 38 en0
VPN服务器在默认情况下不会redirectnetworkingstream量,如此处所述,添加该行
push "redirect-gateway def1"
在您的openvpn.conf将允许您将VPN服务器IP作为远程IP,并且您的Web服务器应允许您通过。
其实你不需要设置DNS服务器。 我已经尝试了以下情况
VPN服务器
创build别名
# ifconfig eth0:1 192.168.127.10 netmask 255.255.255.255 up
将nginxconfiguration为别名地址
server { listen 192.168.127.10:80; server_name site1.example.net; location / { root /var/www/html; } }
configurationiptables
# iptables -t nat -I PREROUTING -p tcp -d xxx.xxx.xxx.xxx --dport 80 -j DNAT --to-destination 192.168.127.10:80
xxx.xxx.xxx.xxx其中xxx.xxx.xxx.xxx服务器的公网IP地址和该站点的ip地址