OPEN VPN을 통해 포트 22의 SSH를 제외한 모든 것을 공용 IP를 통해 라우팅합니다.

OPEN VPN을 통해 포트 22의 SSH를 제외한 모든 것을 공용 IP를 통해 라우팅합니다.

공개 VPN 연결을 통해 VPS [Ubuntu] SSH 서비스를 라우팅할 수 있지만 다른 모든 데이터는 공개 주소를 통해 종료되도록 허용할 수 있습니까? 이를 달성하려면 어떤 종류의 iptables 마법이 필요합니까?

SSH 데이터 → OPEN VPN을 통해 기타 모든 데이터 → 공개를 통해

VPN에 연결하기 전의 ifconfig 세부 정보는 다음과 같습니다.

eth0      Link encap:Ethernet  HWaddr 52:54:00:32:2a:e6
          inet addr:18x.144.31.77  Bcast:185.144.31.255  Mask:255.255.254.0
          inet6 addr: 2a03:a0e0:bad:bad::574/128 Scope:Global
          inet6 addr: 2a03:a0e0:bad:bad::573/128 Scope:Global
          inet6 addr: 2a03:a0e0:bad:bad::572/128 Scope:Global
          inet6 addr: 2a03:a0e0:bad:bad::571/128 Scope:Global
          inet6 addr: 2a03:a0e0:bad:bad::570/64 Scope:Global
          inet6 addr: fe80::5054:ff:fe32:2ae6/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:73928 errors:0 dropped:1 overruns:0 frame:0
          TX packets:723 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:4508581 (4.5 MB)  TX bytes:95511 (95.5 KB)

lo        Link encap:Local Loopback
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:65536  Metric:1
          RX packets:25 errors:0 dropped:0 overruns:0 frame:0
          TX packets:25 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:2520 (2.5 KB)  TX bytes:2520 (2.5 KB)

VPN 연결 후

eth0      Link encap:Ethernet  HWaddr 52:54:00:32:2a:e6
          inet addr:185.144.31.77  Bcast:185.144.31.255  Mask:255.255.254.0
          inet6 addr: 2a03:a0e0:bad:bad::574/128 Scope:Global
          inet6 addr: 2a03:a0e0:bad:bad::573/128 Scope:Global
          inet6 addr: 2a03:a0e0:bad:bad::572/128 Scope:Global
          inet6 addr: 2a03:a0e0:bad:bad::571/128 Scope:Global
          inet6 addr: 2a03:a0e0:bad:bad::570/64 Scope:Global
          inet6 addr: fe80::5054:ff:fe32:2ae6/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:3749 errors:0 dropped:0 overruns:0 frame:0
          TX packets:381 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:282634 (282.6 KB)  TX bytes:60862 (60.8 KB)

lo        Link encap:Local Loopback
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:65536  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)

tun0      Link encap:UNSPEC  HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00
          inet addr:10.8.2.62  P-t-P:10.8.2.61  Mask:255.255.255.255
          UP POINTOPOINT RUNNING NOARP MULTICAST  MTU:1500  Metric:1
          RX packets:65 errors:0 dropped:0 overruns:0 frame:0
          TX packets:62 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:100
          RX bytes:7025 (7.0 KB)  TX bytes:16197 (16.1 KB)

답변1

iptables의 대안: 네트워크 네임스페이스를 사용합니다. 루트로서 다음과 같은 작업을 수행하십시오.

ip addr show dev tun0
ip netns add vpnssh
ip link set tun0 netns vpnssh
ip netns exec vpnssh su -c 'xterm &' user_name

tun0OpenVPN 엔드포인트의 네트워크 인터페이스와 user_name이를 실행 중인 사용자는 어디에 있습니까 ssh? inet(이라고 함 vpn_local_ip) 및 피어( vpn_peer_ip) 주소를 기록해 두십시오 tun0.

이제 모든 하위 프로세스에서만 "표시"되는 xterm이 있지만 tun0(validation을 사용하여 ip link) 불행하게도 이를 이동하면 삭제됩니다. sudo따라서 이 창에서

ip link set tun0 up
ip addr add vpn_local_ip peer vpn_peer_ip dev tun0
ip route del default
ip route add default via vpn_local_ip dev tun0

이제 ssh이 창을 실행할 수 있으며 OpenVPN 연결을 사용합니다. 필요에 따라 모든 것을 스크립팅합니다( ip netns exec vpnssh ...2부).

관련 정보