OpenVPNトンネルを使用したポート転送

OpenVPNトンネルを使用したポート転送

openvpnを使用してサイト間を別のサーバーにトンネリングしてWebサーバーを非表示にします。

アーキテクチャは次のとおりです。

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を表します。

人々はSERVER1パブリックIPを隠し、SERVER2を介してSERVER1のWebサーバーにアクセスしたいと思います。

openvpnを使用してサイト間トンネルを作成したため、SERVER2はopenvpnプライベートIPを使用してSERVER1のWebサーバーにアクセスできますが、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トン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

おすすめ記事