我试图通过使用 openvpn 隧道站点到站点到另一台服务器来隐藏我的网络服务器。
这是架构:
SERVER1 SERVER2
WEBSERVER <=> (OPENVPN CLIENT) <=> PEOPLE
(OPENVPN SERVER) Private IP: 10.8.0.2
Private IP: 10.8.0.1
当然,SERVER1和SERVER2也都有一个公共IP(连接到WAN),私有IP代表用于将它们与VPN链接的IP。
我希望人们通过 SERVER2 访问 SERVER1 上的网络服务器,以隐藏 SERVER1 公共 IP。
我使用 openvpn 创建了一个站点到站点隧道,因此从 SERVER2 我可以使用 openvpn 私有 IP 访问 SERVER1 上的网络服务器,但是我无法从 SERVER2 公共 IP 访问它。
在此先感谢您的帮助!
ip 输出
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
link/ether 9a:63:f1:37:d8:f5 brd ff:ff:ff:ff:ff:ff
inet PUBLIC_IP/20 brd PUBLIC_IP
scope global eth0
valid_lft forever preferred_lft forever
inet 10.19.0.5/16 brd 10.19.255.255 scope global eth0
valid_lft forever preferred_lft forever
inet6 2a03:b0c0:3:e0::c4:6001/64 scope global
valid_lft forever preferred_lft forever
inet6 fe80::9863:f1ff:fe37:d8f5/64 scope link
valid_lft forever preferred_lft forever
40: tun0: <POINTOPOINT,MULTICAST,NOARP,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UNKNOWN group default qlen 100
link/none
inet 10.8.0.2 peer 10.8.0.1/32 scope global tun0
valid_lft forever preferred_lft forever
答案1
您需要将传入 Server2(在端口 80 和/或 443 上)的流量重定向到 Server1 的 OpenVPN tun IP 地址。
有不止一种方法可以做到这一点。我个人过去曾做过以下工作:
选项1: 在 Server2 上运行 Web 服务器,并将所有请求转发到这两个端口的“本地”IP 地址 10.8.0.1。 Web 服务器甚至可以缓存请求,我发现这是有利的。
选项2: 使用IP转发(更少的开销)。在服务器2上:
sysctl net.ipv4.ip_forward=1
然后转发(*):
iptables -t nat -A PREROUTING -p tcp -d PUBLIC_IP --dport 80 -j DNAT --to-destination 10.8.0.1:80
您可能还需要伪装:
iptables -t nat -A POSTROUTING -j MASQUERADE
如果有效,请将第一个选项保存到/etc/sysctl.conf
:
net.ipv4.ip_forward = 1
并保存您的 IP 表规则。这取决于你的分布!在 CentOS 7 中:
mv -i /etc/sysconfig/iptables /etc/sysconfig/iptables.bak
iptables-save > /etc/sysconfig/iptables
systemctl stop firewalld
systemctl mask firewalld
yum install iptables-services
systemctl enable iptables
您的情况可能会有所不同,因为过去几年防火墙发生了很多变化,而且发行版之间也发生了变化。
(*) 如果您需要的不仅仅是一个端口,您可以使用一个范围:
iptables -t nat -A PREROUTING -p tcp -d PUBLIC_IP --dport 80:1080 -j DNAT --to-destination 10.8.0.1:80-1080