OpenVPN通过代理,无法获取客户端IP地址

OpenVPN通过代理,无法获取客户端IP地址

我有 3 台电脑:

  • pc1 承载 VPN 服务器
  • pc2 托管代理服务器并充当客户端 1
  • pc3 作为客户端 2
  • pc3 与 pc2 共享网络,但不与 pc1 共享网络
  • pc2与pc1共享网络。
  • client1 通过 pc2 上的代理连接
  • client2 也通过 pc2 上的代理进行连接

因此设置如下:

----------------
|      pc3     |
|  VPN Client2 |
|  10.100.0.3  |
----------------
       |
       | Network A
       |
----------------
|      pc2     |
| Proxy server/|
|  VPN Client1 |
|  10.100.0.2  |
----------------
       |
       | Network B
       |
----------------
|      pc1     |
|  VPN Server  |
|  10.100.0.1  |
----------------

现在,pc1 托管一个网络服务器,它将获取发出网页请求的客户端的 ip 地址。

当我从 PC2 发出请求时,我可以正确地看到该请求来自 PC2。

但是当我从 PC3 发出请求时,我希望看到 VPN 分配的 IP 地址 10.100.0.3,但是,如果客户端 1 已连接,我则会从 PC2 获取 IP 地址,如果客户端 1 未连接,则会获取 VPN 服务器本身的 IP 地址(10.100.0.1)

我以为我创建了一个直接的“隧道”,这会让 pc1 认为请求直接来自 pc3,我做错了什么?

答案1

我不太清楚你的期望。

如果 PC2 是代理,并且所有客户端都配置为使用该代理,那么您所描述的就是我所期望的:客户端 1 通过 PC2 上的代理发出请求,然后代理将该请求转发给 PC1。

因此从网络角度来看,PC1 看到的请求确实来自 PC2。

如果您想让 PC3 的 IP 对 PC1 可见,那么我认为最好的选择是配置您的代理以将 X-Forwarded-For 标头发送到 PC1。

我认为可能存在两个问题:

但是当我从 PC3 发出请求时,我希望看到 VPN 分配的 IP 地址 10.100.0.3,但是,如果客户端 1 已连接,我则会从 PC2 获取 IP 地址,如果客户端 1 未连接,则会获取 VPN 服务器本身的 IP 地址(10.100.0.1)

PC1 是否有规则来伪装来自 VPN 的流量?如果是,那么我想知道客户端 1 尝试连接的 IP 是什么(如果您的客户端连接到 10.100.0.1 以外的其他地址,并且您正在伪装,我倾向于认为您的情况是正常的)。

我以为我创建了一个直接的“隧道”,这会让 pc1 认为请求直接来自 pc3,我做错了什么?

听起来你确实这么做了,但是如果你的客户端使用代理进行 HTTP/S 请求,那么直接隧道将不会使 PC3 的 VPN IP 可见,因为 PC3 并未直接连接到 PC1。

你能确认一下是否真的有伪装吗?你可以用sudo iptables -t nat -vnL

相关内容