OpenVPN 转发客户端的公共 IP

OpenVPN 转发客户端的公共 IP

我的设置如下:

192.168.1.0/24 - 服务器局域网 192.168.3.0/24 - VPN子网

192.168.1.11 - vpn 服务器 192.168.1.12 - apache 服务器

openvpn 服务器配置

local 192.168.1.11
port port_number
proto tcp
dev tun
ca /etc/openvpn/keys/ca.crt
cert /etc/openvpn/keys/vpnserver.crt
key /etc/openvpn/keys/vpnserver.key
dh /etc/openvpn/keys/dh.pem
tls-auth /etc/openvpn/keys/ta.key 0
server 192.168.3.0 255.255.255.0
push "route 192.168.1.0 255.255.255.0"
ifconfig-pool-persist ipp.txt
keepalive 10 120
cipher AES-128-CBC
comp-lzo
user nobody
group nogroup
persist-key
persist-tun
tcp-nodelay
status openvpn-status.log
log-append /var/log/openvpn.log
verb 3
mute 20
client-to-client
username-as-common-name
client-cert-not-required
key-method 2
tls-server
max-clients 15
plugin /usr/lib/openvpn/openvpn-auth-ldap.so "/etc/openvpn/auth/auth-ldap.conf"

openvpn 客户端配置

client
remote [public_ip_of_192.168.1.11] port_number
nobind
resolv-retry infinite
proto tcp
dev tun
ca filename.crt
tls-auth filename.key 1
auth-user-pass
cipher AES-128-CBC
ns-cert-type server
persist-key
persist-tun
fast-io
pull
comp-lzo
route-method exe
route-delay 2

我从远程位置完美地连接到 vpn;子网 192.168.1.0/24 可访问。
但是,当我在 192.168.1.12 上访问 apache 服务器时,apache 日志显示请求来自我的公共 IP(客户端的公共 IP)。

Apache 是否可能看到 vpn IP(192.168.3)而不是每个客户端的公共 IP?

任何帮助都非常感谢!
谢谢

答案1

好的,那么根据我有限的经验,这应该是可行的,我不明白您如何将外部 IP 地址显示在 Web 服务器日志中。可能值得确保您的测试正常工作。您的 Web 服务器是否也可通过防火墙的端口转发访问,并且您意外地直接访问它 - 例如,确保您已明确将 192.168.1.12 IP 放入浏览器 URL 中。

假设看起来没问题,我发现在 openvpn 服务器上使用 tcpdump 是观察数据包进出的好方法,这可以确认数据包是否离开 openvpn 服务器并发往具有错误 IP 地址的 apache 服务器,而不是以某种方式直接从防火墙发往那里。

答案2

一般来说,假设所有配置都正确,这种情况就不会发生。

然而,这里有许多事情需要检查和确认(由于 TUN 设备,我假设服务器端是 Linux)

  1. 您是否在此处设置了适当的 NAT 或路由配置:
    • Apache 盒子上的 192.168.3.0/24 路由
    • OpenVPN 服务器的 iptables 中的 SNAT 规则将 VPN 子网 NAT 到 OpenVPN 服务器 IP
  2. 您的客户端是否获得了 192.168.1.0/24 的实际路由 - 它是否显示在您的客户端路由设置中(netstat -rn适用于 Linux 或route printWindows)
  3. 其他协议访问是否报告相同的 IP 差异 - 例如w在 SSH 终端上运行或显示您的登录的 SSH 身份验证日志?
  4. 您如何在 apache 中访问网站 - 是通过 192.168 IP 还是通过主机名?如果是主机名,您确定已覆盖 DNS 以返回私有 IP 而不是公共 IP 吗?
  5. 确认您没有使用任何类型的 HTTP 代理,因为此类代理可能会破坏 VPN 客户端的配置
    • 暗示- 确保你的 Apache 盒子的 IP 在绕过代理配置中
  6. 哪个请求显示公共 IP?它是初始请求还是 HTML 输出所请求的资产的附加请求?如果是后者 - 可能是因为他们使用的 DNS 主机名解析为公共 IP 而不是私有 IP?

相关内容