Openvpnサーバーをセットアップしたが、ポートをクライアントに転送できない。
以下は私がやろうとしていることです:
WAN: 123.45.67.89:4444 -> [OpenVPN Server] -> CLIENT: 192.168.1.10:4444
これを行う方法について多くの異なる答えを見ましたが、私が何をしようとしても機能しないようで、 ポートテスト は常にポートが閉じていると表示します。
OpenVPNをルーテッドモードで使用していて、クライアントをWANにNAT処理していると仮定します。その場合は、次のことを行う必要があります。
iptables -t nat -A PREROUTING -i eth0 -d 123.45.67.89 -p tcp --dport 4444 -j DNAT --to-destination 192.168.1.10
(eth0をWANが実際にオンになっている)インターフェースに変更します)。
NATを使用していない場合は、接続しようとしているホストが192.168.1.10から123.45.67.89を宛先とするパケットをルーティングすることを知っていることを確認するだけです(これは明らかにRFC1918 IPで機能しません)インターネット)。いずれにせよ、他の唯一の要件は、IPv4ルーティングを有効にしていて(そうしないとVPNがまったく機能しないと思います)、ブロックする他のファイアウォールルールがないことです。このトラフィック。
これがiptablesでの私たちのソリューションでした。 Linuxでip_forwardを設定する必要があります。
*nat
:PREROUTING ACCEPT [56:16971]
:INPUT ACCEPT [1:52]
:OUTPUT ACCEPT [31:2256]
:POSTROUTING ACCEPT [31:2256]
-A POSTROUTING -s 10.2.0.0/24 -o enp1s0 -j MASQUERADE
-A PREROUTING -i enp1s0 -p tcp --dport 9000 -j DNAT --to-destination 10.2.0.22
COMMIT
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [5618:4419840]
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT
-A INPUT -j REJECT --reject-with icmp-Host-prohibited
-A FORWARD -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
-A FORWARD -s 10.2.0.0/24 -j ACCEPT
-A FORWARD -i enp1s0 -o tun1 -p tcp --dport 9000 --syn -m conntrack --ctstate NEW -j ACCEPT
-A FORWARD -i enp1s0 -o tun1 -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
-A FORWARD -i tun1 -o enp1s0 -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
-A FORWARD -j REJECT --reject-with icmp-Host-prohibited
COMMIT
# Completed on Wed Dec 20 18:30:08 2017
1194_UDPポートのみがルーターからOpenVPNサーバーに転送される場合、OpenVPNサーバーはプライベートIPアドレスでルーターの背後で動作できます。例:ルーター1.1.1.1のパブリックIP(WANインターフェース)ルーター192.168.10.1のLANインターフェースOpenVPNサーバーIP 192.168.10.10
ROUTERでポート転送ルールを作成しますInternal_port External_port Internal_Server_ip 1194 1194 192.168.10.10
OpenVPNサーバーをインストールして構成するときは、そのIPを192.168.10.10に設定します