问题描述
我正在尝试从/向 openvpn 网络访问私人网站。但是,Nginx 在 access.log 中告诉客户端使用他的公共 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中可以看到My client使用了他的公网ip。
我澄清一下,除此之外,我的 openvpn 服务器似乎工作正常。例如,当我使用客户端导航到 Internet 时,外部网站会看到服务器的公共 ip (10.10.10.1)。我用 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 作为客户端运行,那么您可能会处理策略路由和多个表,并且仅通过标准表发送 1194 流量,并通过 VPN 端口发送 http/https 流量。