가상 머신 내에서만 액세스할 수 있는(브리지 어댑터 필요 없음) VPN을 통해 트래픽을 라우팅하려면 어떻게 해야 합니까?

가상 머신 내에서만 액세스할 수 있는(브리지 어댑터 필요 없음) VPN을 통해 트래픽을 라우팅하려면 어떻게 해야 합니까?

tun0성공적인 인증 인터페이스 후에 VPN을 생성하는 공급업체 제공 클라이언트를 사용하여 특정(오래된) 버전의 Ubuntu(및/또는 Windows)를 통해서만 연결할 수 있는 회사 VPN이 있는 흥미로운 상황이 있습니다 . 개인 Linux 컴퓨터에서 다른 배포판을 사용하고 있는데 라이브러리 문제로 인해 VPN 클라이언트가 실행되지 않습니다.

해결 방법으로 VM이 브리지 모드로 구성될 때 Ubuntu VM(VirtualBox에서)을 라우터 역할을 하도록 구성하는 방법을 대략 알아냈습니다. 불행하게도 이것은 브리지된 VM에 대한 다른 IP를 문제 없이 얻을 수 있기 때문에 일부 네트워크(예: 홈 네트워크)에서는 작동하지만 많은 공용 네트워크에서는 작동하지 않습니다.

VM에서 두 개의 네트워크 어댑터(하나는 NAT를 사용하고 다른 하나는 호스트 전용 연결)를 사용하여 이 작업을 수행할 수 있어야 한다고 생각하지만 트래픽을 내 장치로 보낼 수 있도록 라우팅을 설정하는 방법을 잘 모르겠습니다. VPN 터널을 통해 호스트하세요.

지금까지의 설정은 다음과 같습니다.

[host]$ VBoxManage list hostonlyifs 

Name:            vboxnet0
GUID:            786f6276-656e-4074-8000-0a0027000000
DHCP:            Disabled
IPAddress:       192.168.56.1
NetworkMask:     255.255.255.0
IPV6Address:     fe80::800:27ff:fe00:0
IPV6NetworkMaskPrefixLength: 64
HardwareAddress: 0a:00:27:00:00:00
MediumType:      Ethernet
Wireless:        No
Status:          Up
VBoxNetworkName: HostInterfaceNetworking-vboxnet0

게스트 인터페이스(VPN 연결 후 - enp0s3NAT 어댑터, enp0s8호스트 전용 어댑터):

[guest]$ ip addr show
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
2: enp0s3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
    link/ether 08:00:27:b2:d9:c2 brd ff:ff:ff:ff:ff:ff
    inet 10.0.2.15/24 brd 10.0.2.255 scope global dynamic noprefixroute enp0s3
       valid_lft 83176sec preferred_lft 83176sec
3: enp0s8: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
    link/ether 08:00:27:3c:81:82 brd ff:ff:ff:ff:ff:ff
    inet 192.168.56.101/24 brd 192.168.56.255 scope global dynamic noprefixroute enp0s8
4: tun0: <POINTOPOINT,UP,LOWER_UP> mtu 1384 qdisc fq_codel state UNKNOWN group default qlen 500
    link/none 
    inet XXX.XXX.XXX.XXX peer 1.1.1.1/32 scope global tun0

게스트에서 다음 명령을 사용하여 호스트 전용 어댑터와 VPN 터널 간의 변환을 활성화합니다.

sudo sysctl net.ipv4.conf.all.forwarding=1
sudo sysctl net.ipv6.conf.all.forwarding=1
sudo iptables -A FORWARD -i enp0s8 -o tun0 -j ACCEPT
sudo iptables -A FORWARD -i tun0 -o enp0s8 -j ACCEPT
sudo iptables -t nat -A POSTROUTING -o tun0 -j MASQUERADE

호스트에서 192.168.56.1기본 경로를 (호스트 vm 어댑터만)로 바꿀 수 있지만 분명히 데이터가 전혀 나올 수 없습니다. VM은 자체적으로 인터넷에 액세스할 수 없기 때문에 호스트를 통해 인터넷을 오가는 트래픽이 필요하지만 VM의 VPN 연결을 통해 최대한 많은 트래픽을 강제로 적용하고 싶습니다. 가까워진 것 같고 이게 가능할 것 같은데 부족한 부분이 뭔지 잘 모르겠습니다.

그런데, SOCKS 프록시를 VM에 SSH로 연결하면 일부 애플리케이션에서 작동하게 할 수 있을 것 같은데요? 가능하다면 모든 트래픽을 VPN을 통해 라우팅하고 싶습니다.

편집하다:

다음은 제가 말하는 내용을 어느 정도 보여주는 다이어그램입니다. 이를 통해 더 명확해지기를 바랍니다. 혼란스러운 점은 가상 머신의 트래픽이 tun0인터넷에 도달하려면 브리지 어댑터를 통과해야 한다는 것입니다. 트래픽이 점선을 넘지 않고 완전히 VM을 통과하여 그 방향으로 나가도록 라우팅을 설정하는 것이 가능한지 잘 모르겠습니다. VM을 통해 모든 트래픽을 보내면(기본 경로를 호스트 어댑터로만 변경) 루프에 빠지고 트래픽이 전혀 인터넷에 연결되지 않습니다.

필수 네트워크 다이어그램

답변1

두 가지 옵션이 있는 것 같습니다.

  1. VPN 없이는 액세스할 수 없는 특정 범위의 (회사) 호스트에 대해 기본이 아닌 경로를 추가합니다. 예를 들어 10.0.0.0/8기업 서브넷에 액세스하려고 한다고 가정하면 다음을 사용하여 경로를 추가할 수 있습니다. ip route add 10.0.0.0/8 via 192.168.56.101여기서 는 호스트 어댑터( / ) 192.168.56.101에만 있는 게스트의 IP 주소입니다 . 물론 기업 DNS 서버를 사용하여 DNS도 업데이트해야 합니다.vboxnet0enp0s8/etc/resolv.conf

    • 장점: 브리지 어댑터 없이 작동합니다. 실제로 저는 NAT 어댑터와 함께 이 구성을 자주 사용합니다.
    • 단점: 회사 트래픽만 VPN을 통해 라우팅됩니다. 이는 실제로 좋은 부작용일 수 있지만 귀하의 질문에 따르면 바람직하지 않습니다.
  2. 게스트가 전용 어댑터에 완전히 액세스할 수 있도록 장치 패스스루를 사용하면 브리지 어댑터(예: )가 필요하지 않습니다 wlp2so. 예를 들어 USB Wi-Fi 어댑터를 사용할 수 있습니다.

    • 장점: 모든 트래픽은 VPN을 통해 라우팅될 수 있습니다.
    • 단점: 손님을 위한 특별한 장비가 필요합니다.

답변2

이는 여행용 라우터의 훌륭한 사용 사례인 것 같습니다. 컴퓨터와 네트워크 사이에 배치하여 로컬 DHCP 서버로 사용할 수 있습니다. 이런 식으로 하면 정말 좋을 것 같아요GL-iNet GL-AR750S "슬레이트". 그런 다음 어디에서나 브리지 모드 설정을 사용할 수 있습니다. "악성 무선 액세스 포인트"가 마음에 들지 않는 장소에 있더라도 이더넷 포트만 사용하면 됩니다.

이와 같은 장치에는 다른 많은 유용한 용도가 있습니다. 또한 보조 배터리와 소형 파일 서버로도 사용됩니다. StackExchange 창립자 Jeff Atwood는 잘 작동했던 최초의 여행용 라우터 중 하나를 개인적으로 사용한 것에 대해 여기에 글을 썼습니다.https://blog.codinghorror.com/your-own-personal-wifi-storage/

관련 정보