Webserver 在 OpenVPN 網路中暴露客戶端真實 IP 地址
我們的企業網站之一在 Linux 伺服器上執行,使用 Apache2 和 PHP5 建構。
幾個網頁只能從 OpenVPN 子網(地址 10.8.0.1/24)訪問。為了檢查每個請求,php 腳本會比較
$_SERVER["REMOTE_ADDR"]
apache 提供的值並決定允許或拒絕進一步執行。目的是拒絕未配置為通過伺服器 VPN 工作的設備訪問這些頁面。
OpenVPN 伺服器在同一台機器上執行,這就是 PHP 從 VPN 內部的客戶端接收像 10.8.0.25 這樣的地址以及其他請求的真實地址的原因。
- “保護”頁面不被公眾訪問是正確的方法嗎?
測試這個系統我發現了一件奇怪的事情,如果我使用 Windows 機器請求這些“受保護”頁面之一,連接到我們的 OpenVPN 網路,伺服器能夠看到真實的 IP 地址(不是 10.8.0.xx),同時做同樣的事情在 Android 設備上按預期工作(伺服器無法看到真實 IP 地址並在 php 中獲取 10.8.0.xx)。
我在 Android 上使用OpenVPN Connect應用程序,在 Windows上使用*OpenVPN GUI 。*在這兩種情況下,客戶端都通過 VPN 伺服器路由其流量,“我的 IP 是什麼?” 服務顯示 VPN 地址,而不是我的 ISP 的真實地址。
但不知何故,Windows 客戶端通過其在網路伺服器上的真實(提供者)地址被辨識,並且無論 VPN 是否打開,都無法訪問受保護的頁面。
- 可能的原因是什麼?
我懷疑 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 機器上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:另外兩個事實
- 網路伺服器和受保護的頁面使用 SSL 證書 (https) - Windows/Android 設備上的 DNS 僅設置為 Google DNS。
在 Openvpn/web 伺服器上安裝綁定。為 www.example.com 添加一個區域以指向 Web 伺服器的內部 IP,並為 8.8.8.8 和 8.8.4.4 設置轉發器,同時確保它正在偵聽並設置為內部/VPN 子網的解析器。
特定子域的基本區域,請務必根據需要複製任何重複的詳細資訊。
命名.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
確保您測試並配置 openvpn 以推送此 dns 伺服器。