
Windows 7 호스트의 VirtualBox에서 웹 서버를 실행하는 Oracle Linux 게스트가 있습니다. 다음 3가지 작업을 수행하려면 네트워킹을 설정해야 합니다.
- 호스트는 브라우저와 SSH를 통해 게스트에 연결할 수 있습니다
- 게스트는 호스트의 VPN을 통해 내부 네트워크의 다른 서버와 통신할 수 있습니다.
- 게스트는 외부 인터넷에 접속할 수 있습니다
몇 가지 답변을 읽고 몇 가지 구성을 시도했는데 결과는 다음과 같습니다.
브리지됨
- 호스트가 게스트에게 연락할 수 없습니다.
- 게스트는 VPN을 통해 볼 수 없습니다
- 손님이 인터넷에 접속할 수 있습니다
NAT
- 호스트가 게스트에게 연락할 수 없습니다.
- 손님은 VPN을 통해 볼 수 있습니다
- 손님이 인터넷에 접속할 수 없습니다
호스트 전용
3가지 조건이 모두 실패합니다.
NAT 네트워크
- 호스트가 게스트에게 연락할 수 없습니다.
- 손님은 VPN을 통해 볼 수 있습니다
- 손님이 인터넷에 접속할 수 없습니다
또한 호스트가 VPN을 통해 연결되는 경우도 있고 회사 네트워크에 직접 연결되는 경우도 있다는 점을 지적하고 싶습니다. 직접 연결하면 브리지 어댑터가 3가지 조건을 모두 만족합니다. 이상적으로는 VPN이 있든 직접 연결이 있든 관계없이 3가지 조건을 모두 만족하는 구성이 있을 것입니다.
답변1
나는 가지고 있었다정확한동일한 문제를 해결하기까지 진행했으므로 문제와 해결 방법을 자세히 설명하게 되어 기쁩니다.
VPN을 사용하지 않고
요구 사항을 충족하는 데 필요한 구성을 이해하는 것이 중요합니다.없이VPN이 포함됩니다. 또한 이 정보는 호스트나 게스트 모두에서 소프트웨어 방화벽이 간섭하지 않는다고 가정합니다.
VPN이 없으면 일반적으로 가상 머신 구성에 두 개의 네트워크 어댑터를 생성하여 이 문제를 해결합니다.
NAT
첫 번째 어댑터 는 게스트가 호스트의 네트워크 인터페이스를 통해 네트워크 리소스(인터넷 포함)에 액세스할 수 있도록 모드 로 설정되어야 합니다 .
Host-only
두 번째 어댑터는 호스트와 게스트 간의 양방향 통신을 활성화하는 으로 설정되어야 합니다 .
이 어댑터는 호스트 전용 어댑터를 구성하려면 VirtualBox의 글로벌 네트워킹 기본 설정을 수정해야 하기 때문에 첫 번째 어댑터보다 설정이 약간 더 복잡합니다(참고: 관리자 권한이 필요함).
VirtualBox에서 로 이동합니다 File -> Preferences -> Network
. 탭을 클릭 Host-only Networks
하고 작은 +
아이콘을 클릭하여 새 어댑터를 추가합니다. VirtualBox의 권한을 높이라는 메시지가 표시됩니다.
탭 작성은 Adapter
필수입니다. 다음과 같아야 합니다( #2
관련되지 않은 용도로 사용되는 라벨이 붙은 어댑터는 무시하세요).
서버 탭 의 값은 DHCP
선택 사항입니다. 게스트의 네트워킹 구성 내에서 이 어댑터의 IP 주소를 하드 코딩하려는 경우 이러한 값은 필요하지 않습니다. 반면에 DHCP를 사용하려는 경우 값은 다음과 같을 수 있습니다.
VirtualBox 구성과 관련된 마지막 단계는 VM의 네트워크 구성으로 돌아가서 방금 만든 호스트 전용 어댑터를 참조하는 두 번째 어댑터를 추가하는 것입니다.
이제 게스트 운영 체제에서는 이 두 네트워크 인터페이스를 활용하도록 네트워크를 구성해야 합니다.
Debian 또는 Ubuntu GNU/Linux에서 구성은 /etc/network/interfaces
다음과 같이 수정하는 것만큼 간단합니다.
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).
# The loopback network interface
auto lo
iface lo inet loopback
# The primary network interface
auto eth0
iface eth0 inet dhcp
# The secondary network interface
auto eth1
iface eth1 inet static
address 192.168.56.101
netmask 255.255.255.0
(순수주의자는 디렉토리를 /etc/network/interfaces.d
대신 활용하는 것을 선호할 수도 있지만 이는 이 설명의 범위를 벗어납니다.)
게스트의 네트워킹 서비스를 다시 시작하거나 더 간단하게 전체 게스트 VM을 다시 시작하면 모든 것이 "제대로 작동"합니다.
이 시점에서 게스트 VM을 핑하고 응답을 받을 수 있어야 합니다 192.168.56.101
(소프트웨어 방화벽이 방해하지 않는 경우).
마찬가지로 호스트에 ping을 보낼 수 있어야 합니다 10.0.2.2
. 이 IP 주소는 VirtualBox의 NAT 구현에 "하드 코딩"되어 있거나 적어도 일부 명확하지 않은 구성 지시문을 통해 지정된 것으로 보이며 그 출처에 대해 사용할 수 있는 정보가 거의 없습니다. 그러나 아쉽게도 "그냥 작동합니다".
이 구성을 고려하면 질문에 설명된 세 가지 조건이 모두 충족됩니다.
입력: VPN
하지만 여기에 문제가 있습니다. VPN을 도입하면 중단 문제가 발생합니다(특정 VPN 및 해당 구성에 따라 다름).
최신 VPN은 다음을 수행할 수 있습니다.분할 터널링이는 앞서 언급한 VirtualBox 구성이 세 가지 요구 사항에 따라 작동하는 데 필요합니다. (좋은) 보안상의 이유로 분할 터널링이 비활성화되는 경우가 많으며 이것이 바로 귀하의 경우(그리고 나의 경우)의 문제입니다.
VPN에 연결하면 VPN 클라이언트(제 경우에는 Cisco AnyConnect Secure Mobility Client, 3.1.02026)가 호스트 컴퓨터의 라우팅 테이블을 검사하고 기억한 다음 일반적으로 중앙에서 가져오는 값으로 그 위에 포장합니다. 관리 위치(즉, 로컬 관리자 권한이 있어도 설정을 재정의하는 것이 불가능합니다).
command.exe
Windows에서 다음을 열어 직접 라우팅 테이블을 검사할 수 있습니다 .
C:\>route print
VPN에 연결하기 전에 라우팅 테이블에는 이 VirtualBox 구성이 올바르게 작동하도록 하는 중요한 항목이 포함되어 있습니다. VPN에 연결하면 이러한 항목이 제거되어 호스트와 게스트 간의 통신이 차단됩니다.
(이 동작의 근본 원인과 관련이 없기 때문에 여기서는 생략한 다른 항목이 많이 있습니다.)
VPN에 연결하기 전에:
192.168.56.0 255.255.255.0 On-link 192.168.56.1 266
192.168.56.1 255.255.255.255 On-link 192.168.56.1 266
192.168.56.255 255.255.255.255 On-link 192.168.56.1 266
224.0.0.0 240.0.0.0 On-link 192.168.56.1 266
255.255.255.255 255.255.255.255 On-link 192.168.56.1 266
VPN에 연결한 후:
192.168.56.1 255.255.255.255 On-link 192.168.56.1 266
224.0.0.0 240.0.0.0 On-link 192.168.56.1 266
255.255.255.255 255.255.255.255 On-link 192.168.56.1 266
VPN 클라이언트는 다음 줄을 제거합니다.
192.168.56.0 255.255.255.0 On-link 192.168.56.1 266
192.168.56.255 255.255.255.255 On-link 192.168.56.1 266
마지막 두 항목이 없으면 호스트와 게스트는 통신할 수 없으며 이는 VPN 구성에서 분할 터널링이 비활성화된 경우 정확하게 의도된 동작입니다.
일반적으로 다음 두 명령은 해당 경로를 복원합니다.
C:\>route ADD 192.168.56.0 MASK 255.255.255.0 192.168.56.1 METRIC 266
C:\>route ADD 192.168.56.255 MASK 255.255.255.255 192.168.56.1 METRIC 266
그러나 VPN 클라이언트는 경계를 늦추지 않고 라우팅 테이블을 수정하려는 시도를 차단합니다. 내 고객은 두 번째 항목은 허용하지만 첫 번째 항목은 허용하지 않는 것 같습니다. (그리고 주기적으로 두 가지 모두에 영향을 미칠 수도 있습니다. 이에 대해서는 테스트하지 않았습니다.)
만약에특정 VPN 및 해당 수행자 구성을 사용하면 분할 터널링을 활성화할 수 있으며 일반적으로 다음과 같이 켜집니다.
VPN 연결이 끊어지면 정상적으로 작동하는 VPN 클라이언트는 연결하기 전에 있던 라우팅 테이블을 복원합니다. 내 VPN 클라이언트가 이 작업을 안정적으로 수행하는 것 같습니다. 이는 VPN에 연결하거나 연결을 끊을 때 게스트 VM을 다시 시작할 필요가 없기 때문에 유익합니다. 이러한 경우 VM의 보조 어댑터는 재설정되지만 자동으로 투명하게 IP 주소를 다시 획득하여 호스트와 게스트 간의 통신을 거의 즉시 복원합니다. 더 좋은 점은 호스트와 게스트 간의 NFS 마운트(저는 CIFS 마운트를 사용하고 있음)가 VPN 연결/연결 끊기 작업 전반에 걸쳐 연결된 상태를 유지한다는 것입니다.
귀하의 VPN이 분할 터널링을 허용하는 경우가 드물지만 이를 활성화하기만 하면 됩니다. 이 경우 "모든 것이 제대로 작동하는지" 여부에 대해 귀하의 의견을 듣고 싶습니다.
답변2
게스트 Linux 시스템에서 Windows 호스트 VPN을 사용하는 방법
1-) VPN 설정을 엽니다. 일부 로컬 포트 번호를 지정하십시오.
2-) 가상 머신 설정을 엽니다. 네트워크가 NAT에 연결되어 있는지 확인하세요. 그런 다음 고급을 클릭하고 포트 포워딩을 클릭하세요.
3-) 규칙을 추가하려면 클릭하고 VPN에 지정한 것과 동일한 포트 번호를 입력하세요.
4-) 가상 머신을 시작합니다. 네트워크 설정으로 이동하세요. 수동을 선택하고 IP 주소와 이전에 지정한 포트에 10.0.2.2(기본 virtualbox NAT 게이트웨이)를 입력합니다.
5-) Firefox를 열고 whoer.net으로 이동하여 VPN이 작동하는지 확인하세요. 모두 완료