我有一个具有运行 OpenVPN 的公共 IP 的 VPS 和一个本地服务器,这是唯一的 VPN 客户端。
是否可以将端口 80 上的传入流量路由到客户端?
我的本地服务器在移动数据上运行,我没有获得公共 IP。我寻找的结果是一个显示数据的简单网站,我可以通过浏览 VPN IP 来访问该网站。
答案1
正如所解释的这里您应该能够使用 iptables 将流量从一个接口中的端口转发到其他接口上的某个其他 IP。请记住,您可能需要配置 OpenVPN 服务器以始终向本地服务器发出相同的 IP,您可以了解如何操作这里。
在本质上,
- 确保您的服务器允许转发
sudo sysctl net.ipv4.ip_forward=1
- 假设您的 VPN IP 是
10.0.0.1
并且您的服务器外部接口是eth0
,将来自外部端口 80 的连接转发到您的 VPN IP 并允许其应答:
iptables -t nat -A PREROUTING -p tcp -i eth0 --dport 80 -j DNAT --to-destination 10.0.0.1:80
iptables -A FORWARD -p tcp -d 10.0.0.1 --dport 80 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
调试连接问题tcpdump
是您的朋友,如下所示:
# Print all packets on port 80 that pass through the eth0 interface
sudo tcpdump -ni eth0 port 80
请注意,作为一般建议,您应该始终使用加密,以至于默认情况下还需要 443 端口才能启用 HTTPS。