![使用 VPN 通过同一 IP(公共和 VPN)访问两个 Web 服务器(VPS 和 Windows Server)](https://linux22.com/image/646826/%E4%BD%BF%E7%94%A8%20VPN%20%E9%80%9A%E8%BF%87%E5%90%8C%E4%B8%80%20IP%EF%BC%88%E5%85%AC%E5%85%B1%E5%92%8C%20VPN%EF%BC%89%E8%AE%BF%E9%97%AE%E4%B8%A4%E4%B8%AA%20Web%20%E6%9C%8D%E5%8A%A1%E5%99%A8%EF%BC%88VPS%20%E5%92%8C%20Windows%20Server%EF%BC%89.png)
我有两台服务器:一台托管的 VPS,其网站在端口 80 上,还有一台运行 Windows 7 的家庭服务器。请参见下图。
家庭服务器在端口 88 上运行 WAMP,该端口在我家的公共 IP 和本地 IP 上运行。当使用 OPENVPN 将两台服务器(家庭服务器和托管 VPS)连接在一起时,此端口被阻止,并且无法通过 VPN(IP):88 访问网站。
我以前也成功过,我经营过家庭服务器上的单个网站背后托管 VPN并使用 iptables 打开端口 80,这样 IP 就变成使用 VPN 地址的静态 IP。VPN(IP):80 就可以正常工作了,这样我就可以使用 VPN IP 访问端口 80 上的家庭服务器。
是否可以使用来自不同服务器的不同端口上的 VPN IP 运行两个网站?带有 VPS PUBLIC IP 的端口 80 将指向 VPS LAMP 服务器,带有 VPN IP 的端口 88 将指向 WAMP 主服务器。
答案1
虽然与 serverfault 无关,但简短的版本是肯定的。
要将端口 88 传回您的主服务器,您至少需要三条规则:
iptables -t nat -A PREROUTING -p tcp --dport 88 -j DNAT --to <internal VPN address>
iptables -A FORWARD -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
iptables -A FORWARD -o tun+ -p tcp --dport 88 -j ACCEPT
您可能还需要:
iptables -t nat -A POSTROUTING -i tun+ -o <external IF> -j SNAT --to <VPS IP>
iptables -A FORWARD -i tun+ -j ACCEPT
您还需要验证您的 ip_forward sysctl 是否已启用。