我们的一个企业网站运行在Linux服务器上,使用Apache2和PHP5构build。
只能从OpenVPN子网 (地址10.8.0.1/24) 访问多个网页 。 要检查每个请求, php脚本比较由apache提供的$_SERVER["REMOTE_ADDR"]值,并决定授予或拒绝进一步的执行。
目的是拒绝从未configuration为通过服务器VPN工作的设备访问这些页面。
OpenVPN服务器运行在同一台机器上 ,这就是为什么PHP从VPN内部的客户端接收地址10.8.0.25的原因,以及其他请求的真实地址。
testing这个系统我发现一个奇怪的事情,如果我请求使用Windows机器的这些“受保护”页面之一,连接到我们的OpenVPNnetworking,服务器能够看到真正的IP地址(而不是10.8.0.xx)在Android设备上按预期工作(服务器无法看到真正的IP地址,并在PHP中获得10.8.0.xx)。
我在Android上使用OpenVPN Connect应用程序,在Windows上使用OpenVPN GUI 。 在这两种情况下,客户端通过VPN服务器路由其stream量,“什么是我的IP?” 服务显示VPN地址,而不是我的ISP的真实地址。
但不pipe怎样,Windows客户端都可以通过networking服务器上的真实(提供商)地址来识别,而无论VPN是打开还是closures,都无法访问受保护的页面。
我怀疑OpenVPN在Windows PC上无法正常工作。 否则,为什么服务器以不同的方式识别Android和Windows vpn客户端?
谢谢。
UPD:在VPN / websrv机器上的iptables -L
Chain INPUT (policy ACCEPT) target prot opt source destination ACCEPT tcp -- 10.8.0.0/24 anywhere tcp dpts:63000:64000 REJECT tcp -- anywhere anywhere tcp dpts:63000:64000 reject-with icmp-port-unreachable ACCEPT udp -- 10.8.0.0/24 anywhere udp dpts:64000:65000 REJECT tcp -- anywhere anywhere tcp dpts:64000:65000 reject-with icmp-port-unreachable DROP all -- anywhere anywhere match-set banned_ips src
UPD :: cmd /k route print在Windows机器上cmd /k route print
Interface List 5...54 04 a6 3d 36 ff ......Realtek PCIe GBE Family Controller 7...fc 75 16 86 ad 84 ......Microsoft Wi-Fi Direct Virtual Adapter 17...00 ff b7 66 85 11 ......TAP-Windows Adapter V9 12...00 50 56 c0 00 01 ......VMware Virtual Ethernet Adapter for VMnet1 13...00 50 56 c0 00 08 ......VMware Virtual Ethernet Adapter for VMnet8 6...fc 75 16 86 ad 82 ......D-Link DWA-125 Wireless N 150 USB Adapter(rev.A3) 1...........................Software Loopback Interface 1 2...00 00 00 00 00 00 00 e0 Microsoft ISATAP Adapter 3...00 00 00 00 00 00 00 e0 Teredo Tunneling Pseudo-Interface 11...00 00 00 00 00 00 00 e0 Microsoft ISATAP Adapter #2 18...00 00 00 00 00 00 00 e0 Microsoft ISATAP Adapter #3 8...00 00 00 00 00 00 00 e0 Microsoft ISATAP Adapter #4 =========================================================================== IPv4 Route Table =========================================================================== Active Routes: Network Destination Netmask Gateway Interface Metric 0.0.0.0 0.0.0.0 192.168.137.1 192.168.137.97 25 0.0.0.0 128.0.0.0 10.8.0.5 10.8.0.6 20 10.8.0.0 255.255.255.0 10.8.0.5 10.8.0.6 20 10.8.0.4 255.255.255.252 On-link 10.8.0.6 276 10.8.0.6 255.255.255.255 On-link 10.8.0.6 276 10.8.0.7 255.255.255.255 On-link 10.8.0.6 276 127.0.0.0 255.0.0.0 On-link 127.0.0.1 306 127.0.0.1 255.255.255.255 On-link 127.0.0.1 306 127.255.255.255 255.255.255.255 On-link 127.0.0.1 306 128.0.0.0 128.0.0.0 10.8.0.5 10.8.0.6 20 xxx.53.xxx.yy 255.255.255.255 192.168.137.1 192.168.137.97 25 192.168.10.0 255.255.255.0 10.8.0.5 10.8.0.6 20 192.168.20.0 255.255.255.0 10.8.0.5 10.8.0.6 20 192.168.137.0 255.255.255.0 On-link 192.168.137.97 281 192.168.137.97 255.255.255.255 On-link 192.168.137.97 281 192.168.137.255 255.255.255.255 On-link 192.168.137.97 281 192.168.171.0 255.255.255.0 On-link 192.168.171.1 276 192.168.171.1 255.255.255.255 On-link 192.168.171.1 276 192.168.171.255 255.255.255.255 On-link 192.168.171.1 276 192.168.229.0 255.255.255.0 On-link 192.168.229.1 276 192.168.229.1 255.255.255.255 On-link 192.168.229.1 276 192.168.229.255 255.255.255.255 On-link 192.168.229.1 276 224.0.0.0 240.0.0.0 On-link 127.0.0.1 306 224.0.0.0 240.0.0.0 On-link 192.168.171.1 276 224.0.0.0 240.0.0.0 On-link 192.168.229.1 276 224.0.0.0 240.0.0.0 On-link 10.8.0.6 276 224.0.0.0 240.0.0.0 On-link 192.168.137.97 281 255.255.255.255 255.255.255.255 On-link 127.0.0.1 306 255.255.255.255 255.255.255.255 On-link 192.168.171.1 276 255.255.255.255 255.255.255.255 On-link 192.168.229.1 276 255.255.255.255 255.255.255.255 On-link 10.8.0.6 276 255.255.255.255 255.255.255.255 On-link 192.168.137.97 281 =========================================================================== Persistent Routes: None IPv6 Route Table
xxx.53.xxx.yy是VPN / websrv机器IP。
UPD:另外两个事实 – Web服务器和受保护的页面使用SSL证书(https) – Windows / Android设备上的DNS仅设置为Google DNS。
在Openvpn / web服务器上安装绑定。 为www.example.com添加一个区域以指向Web服务器的内部IP,并为8.8.8.8和8.8.4.4设置转发器,同时确保它正在侦听并设置为内部/ VPN子网的parsing器。
特定子域的基本区域,请确保根据需要复制任何重复的详细信息。
named.conf.options
forwarders { 8.8.8.8; 8.8.4.4; }; allow-recursion { 10.8.0.0/24; }; allow-query { 10.8.0.0/24; }; listen-on { any; }
区域文件
$TTL 300 @ IN SOA www.example.com. dnsadmin.example.com. ( 2015000000 ; serial, YYYYMMDDRR 8H ; refresh, seconds 2H ; retry, seconds 4W ; expire, seconds 1D ) ; minimum, seconds @ IN NS ns1 ns1 IN A 10.8.0.5 @ IN A 10.8.0.5
确保你testing并configurationopenvpn来推送这个DNS服务器。
我所看到的只是一个DNS问题。 当您尝试连接到网站时,您parsing互联网IP,而不是VPN IP。 你的以下内容:编辑C:\ Windows \ System32 \ drivers \ etc \ hosts并添加一个条目
10.8.0.X www.yourdomain.com
这应该使Windows机器相应地parsing到正确的IP和路由。 如果这样,那么你必须configurationVPN服务器,告诉客户端使用10.8.0.0/24以内的DNS服务器(我认为dhcp-option是指令的名称,但你应该做一些研究)。 DNS服务器应configuration为将www.yourdomain.comparsing为您的内部服务器IP地址。
您的VPN使用10.8.0.0/24子网,但到xxx.53.xxx.yy地址的路由使用网关192.168.137.1而不是10.8.0.5,这意味着从Windows客户端向服务器发送的Web请求将会通过互联网,而不是VPN。 要解决这个问题,您需要在您的Windows OpenVPN客户端中禁用拆分隧道,以通过VPN发送所有stream量,或者将xxx.53.xxx.yy的静态路由上的网关更改为10.8.0.5。
在Windows计算机上,您是否检查度量标准,并查看VPN路由是否处于较低的度量标准,因此具有更高的优先级? 也许这是衡量标准的问题。
还有一件事你可以尝试在服务器上设置openvpnconfiguration,这样客户端就可以通过VPN连接路由所有的stream量。