Linux
使用 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
您需要將傳入 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