[unix] VPN 서비스에 연결된 서버로 ssh

가상 사설 서버가 있는데 서버가 VPN 서비스에 연결되어있는 동안 웹 서버를 실행하고 싶습니다

내 공급자에 대한 VPN 연결이 작동하지 않으면이 서버, ssh, scp, http 등으로 원하는 작업을 수행 할 수 있습니다.

일단 openvpn이 실행되고 공급자의 VPN 서비스에 연결되면 어떠한 방법으로도 물론 서버를 액세스 할 수 없습니다.

사진은 다음과 같습니다.

           My VPS                             ------------
         +----------------+                  /            \
         |                |                 /   Internet  /       101.11.12.13
         |        50.1.2.3|-----------------\   cloud    /----<--- me@myhome
         |                |                  /           \
         |     10.80.70.60|                 /             \
         +----------------+                 \              \
                        :                    \_____________/
                        :                           :
                        :                           :
                        :                           :
                        :                           :
                  +------------------+              :
                  |     10.80.70.61  |              :
                  |               \  |              :
                  |                \ |              :
                  | 175.41.42.43:1197|..............:
                  |   175.41.42.43:yy|
                  |       .....      |
                  |   175.41.42.43:xx|
                  +------------------+



Legend
------ Line No VPN connection present
...... Line VPN connection established

명확히 할 것 :

  • 위와 아래의 모든 IP 주소와 포트 번호는 허구입니다.
  • 포트 번호 xx, yy 및 그 사이의 모든 항목이있는 사실은 내가 아는 것이 아니라 내 가정입니다.
  • 매분마다 다른 VPS를 ping하고 apache2를 실행하는 cron 작업을 설정했습니다. apache2 로그에서 VPN이 활성 상태 일 때 원래 IP 주소가 50.1.2.3에서 175.41.42.43으로 변경되어 VPN이 제대로 작동하는 것을 볼 수 있습니다.

OpenVPN 로그는 다음을 보여줍니다.

UDPv4 link remote: [AF_INET]175.41.42.43:1197
[ProviderName] Peer Connection Initiated with [AF_INET]175.41.42.43:1197
TUN/TAP device tun0 opened
do_ifconfig, tt->ipv6=0, tt->did_ifconfig_ipv6_setup=0
sbin/ip link set dev tun0 up mtu 1500
/sbin/ip addr add dev tun0 local 10.80.70.60 peer 10.80.70.61

이 시점에서, 나는에서 ssh를 할 수 있도록하고 싶습니다 myhomeMy VPSVPN을 위로하고 퍼티를 사용하는 동안, 사진에.

과거에는 직장 중 하나 @에서 문자열에 세 개의 표시가있는 매우 안전한 서버 하나에 ssh하는 매우 이상한 순서가 주어졌습니다 . 그래서 상상했던 것처럼 상자에서 상자로 점프했지만 점프 상자에서 일부 버전의 Windows OS 및 독점 앱을 실행했기 때문에 랩에서 무슨 일이 있었는지 알 수 없었습니다. 그래서 나는 많은 관심을 기울이지 않았다. 이제 나는 같은 상황이나 비슷한 상황에 처해 있음을 깨닫기 시작했습니다.

다이어그램 및 / 또는 로그 스 니펫의 IP 주소 및 포트를 사용하여 누군가이 터널을 통과하고 서버에 액세스하는 방법을 알려줄 수 있습니까?



답변

VPN 서비스가 가동되면 ssh 패킷이 VPS의 공용 IP 50.2.1.3이 아닌 VPN을 통해 라우팅되므로 VPS가 잠 깁니다.

서버가 다음과 같이 가정합니다.

  • 퍼블릭 IP는 50.1.2.3입니다 (예제 설정에 따라)
  • 퍼블릭 IP 서브넷은 50.1.2.0/24입니다.
  • 기본 게이트웨이는 xxx1입니다.
  • eth0은 장치 대 게이트웨이

iproute2를 사용하여 다음을 수행하십시오.

ip rule add table 128 from 50.1.2.3
ip route add table 128 to 50.1.2.0/24 dev eth0
ip route add table 128 default via x.x.x.1

그런 다음 OpenVPN 클라이언트 구성을 실행하십시오. openvpn --config youropenvpn-configfile.ovpn &

그러면 서버가 VPN 서비스에 연결되어있는 동안 서버로 ssh 할 수 있습니다.

비 SSH 세션에서 공개 IP에 대한 액세스를 제한하려면 적절한 iptable 필터를 추가해야합니다.


답변

조금 늦을 수도 있지만 …

문제는 기본 게이트웨이가 OpenVPN에 의해 ​​변경되고 OpenVPN을 시작하기 전에 적절한 경로를 설정하지 않으면 현재 SSH 연결이 끊어진다는 것입니다.

다음은 저에게 효과적입니다. iptables와 ip (iproute2)를 사용합니다. 아래에서는 OpenVPN이 시작되기 전의 기본 게이트웨이 인터페이스가 “eth0″이라고 가정합니다. eth0이 더 이상 기본 게이트웨이 인터페이스가 아니더라도 eth0에 연결할 때 연결에 대한 응답 패킷이 eth0에서 다시 되돌아 오도록하는 것입니다.

연결 표시, 방화벽 표시 및 라우팅 테이블에 동일한 번호를 사용할 수 있습니다. 나는 그들 사이의 차이점을 더 분명하게하기 위해 별개의 숫자를 사용했습니다.

# set "connection" mark of connection from eth0 when first packet of connection arrives
sudo iptables -t mangle -A PREROUTING -i eth0 -m conntrack --ctstate NEW -j CONNMARK --set-mark 1234

# set "firewall" mark for response packets in connection with our connection mark
sudo iptables -t mangle -A OUTPUT -m connmark --mark 1234 -j MARK --set-mark 4321

# our routing table with eth0 as gateway interface
sudo ip route add default dev eth0 table 3412

# route packets with our firewall mark using our routing table
sudo ip rule add fwmark 4321 table 3412

===

최신 정보:

위의 내용은 데비안 제시에서 잘 작동합니다. 그러나 이전 Wheezy 시스템에서는 라우팅 테이블 항목에 “via”를 추가해야한다는 것을 알았습니다.

# our routing table with eth0 as gateway interface
sudo ip route add default dev eth0 via 12.345.67.89 table 3412

“12.345.67.89”는 원래 비 VPN 게이트웨이 여야합니다.


답변