已解决 Forbidden 403:从 openvpn 网络访问私人网站(客户端使用 public ip 而不是 openvpn ip)

SOLVED Forbidden 403: access private web site from and to openvpn network (client use public ip instead openvpn ip)

我正在尝试访问私人网站 from/to 一个 openvpn 网络。但是,nginx 在 access.log 中告诉客户端使用他的 public IP 而不是他的私有 openvpn ip。

在这里你可以看到我的网络:

OpenVPN server (tun mode): 
     10.10.10.1 (server public ip)
          172.17.0.1 (docker bridge)
               172.17.0.2 (openvpn server container)
               192.168.255.1 (openvpn server private ip)

My client :
     10.10.10.2 (public ip)
          192.168.255.10 (openvpn private ip)

mywebsite.domain.com : this is my private web site i'm trying to access.

nginx conf :(此 nginx conf 的允许行不起作用...)。 “位置参数在这里并不重要”。

allow 192.168.255.10/32;
deny all;
location / {
    proxy_http_version 1.1;
    proxy_set_header Connection "";
    proxy_pass http://localhost:9000;
}

我尝试连接“我的客户”时遇到 403 禁止。

如果我使用这个 nginx conf :

allow 10.10.10.2;

那么,mywebsite.domain.com就可以正常工作了。

所以...为什么“我的客户端”不使用内部 openvpn IP? (即 192.168.255.10)。在 nginx access.log 中,我可以看到我的客户端使用他的 public ip.

我澄清一下,除了这一点,我的 openvpn 服务器似乎工作正常。例如,当我使用客户端导航到 Internet 时,外部网站会看到服务器 (10.10.10.1) 的 public ip。我用 mon-ip.io 来检查。

有人有想法吗?

提前致谢!

已解决! https://serverfault.com/questions/858657/openvpn-and-website-on-the-same-server-ip

这是路由问题。

为了建立和维护与您的 VPN 的连接,您的 VPN 客户端必须有一个路由到您在服务器上用于传入 VPN 连接的地址。假设采用标准路由,这意味着任何发往同一 IP 的 VPN 服务器都将直接通过 Internet。

选项。

  • 简短的基本答案是为您的 VPN 服务器获取并使用单独的 IP 地址。不要将您用于 VPN 的 IP 用于其他任何用途。

  • 在您的 VPN 主机上设置一些 DNS 服务器,并在您连接时为映射到内部 IP 地址的托管站点传送记录。

  • 如果您是 运行 Linux 作为您的客户,那么您可以乱用策略路由和多个 table,然后发送只有 1194 流量通过标准 table,端口 http/https 流量通过 VPN。