Web 服务器在 OpenVPN 网络中暴露客户端真实 IP 地址

Web 服务器在 OpenVPN 网络中暴露客户端真实 IP 地址

我们的一个公司网站在 Linux 服务器上运行,采用 Apache2 和 PHP5 构建。

一些网页只能从 OpenVPN 子网访问(地址 10.8.0.1/24)。要检查每个请求,PHP 脚本比较$_SERVER["REMOTE_ADDR"]apache 提供的值并决定允许或拒绝进一步执行。

目的是拒绝未配置通过服务器 VPN 工作的设备访问这些页面。

OpenVPN 服务器正在运行在同一台机器上,这就是为什么 PHP 从 VPN 内部的客户端接收像 10.8.0.25 这样的地址,而其他请求则接收真实地址。

  • “保护”页面不被公众访问是正确的方法吗?

在测试这个系统时,我发现了一件奇怪的事情,如果我使用连接到我们的 OpenVPN 网络的 Windows 机器请求其中一个“受保护”的页面,服务器能够看到真实的 IP 地址(不是 10.8.0.xx),而在 Android 设备上执行相同操作时却能按预期工作(服务器无法看到真实的 IP 地址并在 php 中获取 10.8.0.xx)。

我用OpenVPN 连接Android 上的应用程序和OpenVPN 图形用户界面在 Windows 上。在这两种情况下,客户端都通过 VPN 服务器路由其流量,并且“我的 IP 是什么?”服务显示 VPN 地址,而不是我的 ISP 的真实地址。

但不知何故,Windows 客户端会通过 Web 服务器上的真实(提供商)地址进行识别,并且无法访问安全页面,无论 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:另外两个事实 - Web 服务器和受保护的页面使用 SSL 证书 (https) - Windows/Android 设备上的 DNS 仅设置为 Google DNS。

答案1

在 Openvpn/web 服务器上安装 bind。为 www.example.com 添加一个区域以指向 web 服务器的内部 IP,并为 8.8.8.8 和 8.8.4.4 设置转发器,同时确保它正在监听并设置为内部/VPN 子网的解析器。

特定子域的基本区域,请确保根据需要复制任何重复的详细信息。

命名的.conf.选项

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 服务器。

答案2

我看到的只是 DNS 问题。当您尝试连接到网站时,您解析的是互联网 IP,而不是 VPN IP。请执行以下操作:编辑 C:\Windows\System32\drivers\etc\hosts 并添加类似

10.8.0.X   www.yourdomain.com

这应该会使 Windows 计算机解析到正确的 IP 并相应地进行路由。如果可行,则必须配置 VPN 服务器以告知客户端使用 10.8.0.0/24 内的 DNS 服务器(我认为 dhcp-option 是该指令的名称,但您应该进行一些研究)。应配置 DNS 服务器以将 www.yourdomain.com 解析为您的内部服务器 IP 地址。

答案3

您的 VPN 使用的是 10.8.0.0/24 子网,但到 xxx.53.xxx.yy 地址的路由使用网关 192.168.137.1 而不是 10.8.0.5,这意味着从 Windows 客户端向服务器发出的 Web 请求是通过互联网而不是 VPN 进行的。要解决这个问题,您需要在 Windows OpenVPN 客户端中禁用拆分隧道以发送全部通过 VPN 传输流量或将 xxx.53.xxx.yy 静态路由上的网关更改为 10.8.0.5。

答案4

只需将此行添加到 OpenVPN 服务器配置中:

push "route xxx.xxx.xxx.xxx 255.255.255.255 vpn_gateway 1"

您的服务器公共 IP 在哪里xxx.xxx.xxx.xxx。不要忘记重新启动服务器以使更改生效。

相关内容