vpn连接内网,转发访问到内网,怎么得到的ip是真实的客户端IP?

发布于 2024-08-19  404 次阅读


vpn连接内网,转发访问到内网,怎么得到的ip是真实的客户端IP?

1、通过nginx的转发

户的真实 IP。确保你的 DNS 设置不会对客户端 IP 进行遮蔽。

以下是一个简单的示例,说明如何通过 Nginx 获取真实客户端 IP:

server {
    listen 80;

    location / {
        proxy_pass http://your_backend;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }
}

这个配置确保了真实的客户端 IP 地址被正确地传递到后端应用程序。

通过上述方式,你应该能够在 VPN 连接内网时获取到真实的客户端 IP 地址。

2、通过iptables的转发

使用 CONNMARK
另外一种方法是使用 connmark 来标记连接,这样可以在后续的规则中使用这些标记来处理请求。例如:

  1. 复制代码

    iptables -t mangle -A PREROUTING -i eth0 -p tcp --dport 80 -j CONNMARK --set-mark 1
    iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j DNAT --to-destination 192.168.1.100:80
    iptables -t nat -A POSTROUTING -m connmark --mark 1 -j SNAT --to-source 
  2. Web 服务器配置
    如果你在后端有 Web 服务器(如 Nginx 或 Apache),确保它能够读取 X-Forwarded-ForX-Real-IP 头,以获取真实的客户端 IP。你可以通过修改 Web 服务器的配置来实现这一点。

综上所述

通过正确配置 iptables 规则并结合 Web 服务器的设置,你可以在使用 NAT 转发流量时保留真实客户端 IP。如果没有适当配置,默认情况下,流量的源 IP 会被 NAT 设备的 IP 地址替换。