同じサーバー上の2つの異なるVPNクライアントにポートを転送する

同じサーバー上の2つの異なるVPNクライアントにポートを転送する

2つのクライアントが接続されているOpenVPNサーバーがあります。クライアントにはパブリックIPアドレスがないため、SSH経由でクライアントにアクセスする唯一の方法はVPNを使用することです。

サーバーを実行しているコンピュータは、パブリックIPアドレスがwxyzのルータの背後にあります。サーバーのLANアドレスは10.0.0.5です。ルーターのLANアドレスは10.0.0.1で、サーバーを実行しているコンピューター(10.0.0.5)はDMZとして使用されます。

クライアント#1は常にVPNアドレス192.168.2.6を取得し、ポート1802でSSHサービスを実行します。

クライアント#2は常にVPNアドレス192.168.2.14を取得し、ポート1804でSSHサービスを実行します。

私が望むのは、次の方法でどこからでもこれらのクライアントにSSHで接続できることです。

ssh w.x.y.z -p1802

最初の顧客と

ssh w.x.y.z -p1804

2番目のクライアントのため。

次の規則に従ってiptablesを設定しました。

:OUTPUT ACCEPT [6473:428732]  
-A PREROUTING -d w.x.y.z -p tcp -m tcp --dport 1802 -j DNAT --to-destination 192.168.2.6  
-A PREROUTING -d w.x.y.z -p tcp -m tcp --dport 1804 -j DNAT --to-destination 192.168.2.14

これは私のルーティングテーブルです。

カーネルIPルーティングテーブル

Destination     Gateway         Genmask         Flags Metric Ref    Use Iface  
192.168.2.2     *               255.255.255.255 UH    0      0        0 tun0  
192.168.2.0     192.168.2.2     255.255.255.0   UG    0      0        0 tun0  
10.0.0.0        *               255.255.255.0   U     0      0        0 eth0  
169.254.0.0     *               255.255.0.0     U     0      0        0 eth0  
default         10.0.0.1        0.0.0.0         UG    0      0        0 eth0 

ifconfig出力:

[root@osrv sysconfig]# /sbin/ifconfig  
eth0      Link encap:Ethernet  HWaddr 80:51:EA:74:92:A5  
          inet addr:10.0.0.6  Bcast:10.0.0.255  Mask:255.255.255.0  
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1  
          RX packets:4554899 errors:0 dropped:0 overruns:0 frame:0  
          TX packets:4568878 errors:0 dropped:0 overruns:0 carrier:0  
          collisions:0 txqueuelen:1000 
          RX bytes:1083718390 (1.0 GiB)  TX bytes:1131399760 (1.0 GiB)  
          Interrupt:11 Base address:0xa000  

lo        Link encap:Local Loopback  
          inet addr:127.0.0.1  Mask:255.0.0.0  
          UP LOOPBACK RUNNING  MTU:16436  Metric:1  
          RX packets:11833 errors:0 dropped:0 overruns:0 frame:0  
          TX packets:11833 errors:0 dropped:0 overruns:0 carrier:0  
          collisions:0 txqueuelen:0  
          RX bytes:5197664 (4.9 MiB)  TX bytes:5197664 (4.9 MiB)  

tun0      Link encap:UNSPEC  HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00  
          inet addr:192.168.2.1  P-t-P:192.168.2.2  Mask:255.255.255.255  
          UP POINTOPOINT RUNNING NOARP MULTICAST  MTU:1500  Metric:1  
          RX packets:985135 errors:0 dropped:0 overruns:0 frame:0  
          TX packets:947116 errors:0 dropped:0 overruns:0 carrier:0  
          collisions:0 txqueuelen:100  
          RX bytes:215916038 (205.9 MiB)  TX bytes:429598806 (409.6 MiB)  

このような設定では、サーバーにログインすると、2 つのクライアントの 1 つとして SSH 経由で接続できます。

ssh 192.168.2.6 -p 1802
ssh 192.168.2.14 -p1804

どちらもとてもうまくいきます。

ただし、インターネットでこれを実行しようとすると、次のようになります。

ssh w.x.y.z -p 1802

うまくいきますが、

ssh w.x.y.z -p 1804

応答がありません。

私が逃したものは何ですか?

ベストアンサー1

私は自分の質問に答えると思います。

SNATルールを省略しました。これにより問題が解決しました。
-A POSTROUTING -d 192.168.2.6 -p tcp -m tcp --dport 1624 -j SNAT --to-source 192.168.2.1
-A POSTROUTING -d 192.168.2.14 -p tcp -m tcp --dj - ソース192.168.2.1

おすすめ記事