동일한 서버에 있는 두 개의 다른 VPN 클라이언트로 포트 전달

동일한 서버에 있는 두 개의 다른 VPN 클라이언트로 포트 전달

두 개의 클라이언트가 연결된 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

두 번째 클라이언트를 위해.

다음 규칙에 따라 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)  

이와 같은 설정을 사용하면 서버에 로그인하면 두 클라이언트 중 하나로 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 -- dport 1626 -j SNAT --소스 192.168.2.1

관련 정보