使用 OpenVPN 隧道进行端口转发

使用 OpenVPN 隧道进行端口转发

我试图通过使用 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

相关内容