VPN 연결이 가능한 별도의 노트북을 통해 가정용 컴퓨터에서 VPN 서버에 액세스하는 방법

VPN 연결이 가능한 별도의 노트북을 통해 가정용 컴퓨터에서 VPN 서버에 액세스하는 방법

내 로컬 작업 환경의 경우 다른 곳에 있는 워크스테이션에서 회사의 모든 서버에 직접 액세스하고 싶습니다. 이를 정말 흥미롭게 만들기 위해 가능한 유일한 액세스는 회사 관리 노트북의 VPN을 통해서만 가능하며 노트북은 로컬 네트워크에 연결할 수 없습니다.

분명히 어떤 IT 부서도 이러한 문제를 해결하는 데 도움을 줄 수 없습니다.

답변1

집에 있는 컴퓨터에서 업무용 노트북으로 SSH를 통해 연결할 수 있다면 다음을 사용할 수 있습니다.SSH 터널또는SSH 점프 호스트

답변2

SSH 터널링 문서가 많이 있지만 이 특정 시나리오를 다루지는 않습니다.

따라서 워크스테이션<->노트북<->회사 네트워크에서 나가기 위해서는 N에 별도의 네트워크에 연결하기 위한 라우터 역할을 하는 시스템을 추가로 설치해야 합니다.

노트북에 2개의 네트워크 포트가 있는 가상 머신을 추가해야 합니다. 하나는 NAT를 통해 호스트 네트워크에 연결되고 다른 하나는 브리징을 통해 LAN에 연결됩니다.

따라서 W <-> VM1 <-> VM2 <-> N1 <-> N2 <-> CN 연결을 얻을 수 있습니다.

SSH 구성을 통해 구성할 수 있습니다. 가짜 IP의 몇 가지 예.

W =   192.0.0.3   <LAN>      VM1 = 192.0.0.2
VM1 = 192.0.0.2   <route>    VM2 = 10.0.0.3
VM2 = 10.0.0.3    <NAT>      NATRouter = 10.0.0.1
NR =  10.0.0.1    <nat2host> N1 = 20.0.0.4
N2 = 20.0.0.4     <vpnroute> CN 0.0.0.0/0

이는 시스템 간의 네트워크 홉에 대한 설명입니다.
따라서 CN의 서버에 연결하려면 2가지 별도 단계를 해결해야 합니다. 중간 홉에 대한 SSH 구성을 설정해야 합니다. .ssh/config 항목:

# reaching the VM
Host VM
    User            vmuser
    IdentityFile    ~/.ssh/vm_id_rsa
    ForwardX11      yes

# reaching a host inside the CN
Host CNhost
    User            companyuser
    IdentityFile    ~/.ssh/cnhost_id_rsa
    ForwardX11      yes
    ProxyCommand    ssh -A vm nc %h %p 2>  /dev/null    

또 다른 중요한 문제는 가상 머신 내의 올바른 라우팅입니다. 브리지된 LAN 192.0.0.0/24에 대한 경로는 NAT 10.0.0.1에 대한 기본 경로보다 낮은 메트릭을 가져야 합니다.

vm$ ip route
default via 10.0.0.1 metric 100
10.0.0.0/24 dev nat1 metric 100
192.0.0.0/24 dev bridge1 metric 99

이제 흥미로운 상황은 회사 네트워크 내부의 서버에서만 액세스할 수 있는 내부 네트워크의 서버에도 액세스하려는 경우입니다. 클래식 점프 호스트 구성. 이를 위해서는 또 다른 .ssh/config 항목이 필요합니다.

# reaching a host on a CN internal network
Host CNInternalhost
    User            cnInternalUser
    IdentityFile    ~/.ssh/cninternalhost_id_rsa
    ForwardX11      yes
    ProxyCommand    ssh -A CNhost nc %h %p 2>  /dev/null

이제 CNInternalhost에 간단히 SSH를 통해 접속할 수 있습니다.
그렇지 않은 경우 라우팅 테이블을 확인해야 합니다. (예: 경로 누락 또는 잘못된 표시)


그러나 우리는 또한 로컬 워크스테이션에서 직접 이 내부 호스트의 서비스에 액세스하고 싶습니다!

이를 위해 이제 .ssh/config에 사전 구성된 홉을 사용하여 터널을 생성합니다.

ssh -L <portOnLocalhost>:CNInternalhost:<portOnCNInternalHost> CNhost

이제 localhost:< portOnLocalhost >에서 CNInternalhost: < portOnCNInternalHost >에 액세스할 수 있습니다.

로컬 설정에서 추가 네트워크 이름(ServerX)을 재사용하려면 로컬 호스트에 LAN IP에 대한 호스트 별칭을 추가하고 이에 대한 추가 터널을 생성할 수 있습니다.

echo 192.0.0.3 ServerX >> /etc/hosts

여기에는 추가 .ssh/config 항목도 필요합니다.

# configuring another host on the CN internal network
Host serverX
    User            cnInternalUser
    IdentityFile    ~/.ssh/serverX_id_rsa
    ForwardX11      yes
    ProxyCommand    ssh -A CNhost nc %h %p 2>  /dev/null

이 SSH 구성을 사용하면 이제 다음과 같은 터널을 만들 수 있습니다.

ssh -L serverX:<portOnLocalhost>:serverX:<portOnLocalhost> CNhost

CNhost에서 serverX에 액세스할 수 있는 한.
우리는 할 수있다:

$ wget serverX:<portOnLocalhost>

관련 정보