Czy zmusić maszynę wirtualną do korzystania tylko z połączenia VPN?

2

Oto co mam:

Mac OS X 10.10 - działający VirtualBox i działający jako klient OpenVPN. Działa to dobrze w sieci VPN i ma być moją maszyną hosta. Istnieje również połączenie Wi-Fi na tym komputerze, które działa jako moja brama do świata zewnętrznego. Ten komputer Mac jest skonfigurowany z NAT do łączenia się z routerem WiFi.

Windows 7 Pro - jest to instancja wirtualna, która ma być uruchamiana przez VirtualBox na komputerze Mac.

Mój serwer OpenVPN działa na CentOS, ale nie sądzę, że ma to znaczenie dla celów mojego pytania.

Jak mogę się upewnić, że mój komputer z systemem Windows tworzy połączenia tylko przez VPN, a nigdy przez Wi-Fi?

Kiedy zaczynałem, myślałem, że klient OpenVPN będzie działał jak nowa karta sieciowa i mogę udostępnić tylko ten adapter w ustawieniach VirtualBox. Ale tak się nie wydaje, VirtualBox po prostu bierze go jako adapter NAT.

Dla jasności pożądany przypadek użycia będzie następujący:

  • Klient OpenVPN działa poprawnie na komputerze hosta Mac, co oznacza, że ​​działa dobrze na komputerze z systemem Windows.

  • OpenVPN działa na kliencie Mac, ale Mac działa przez połączenie Wi-Fi. Maszyna z systemem Windows nie ma już dostępu do żadnych zasobów internetowych, ponieważ nie ma połączenia.

Jak mogę to osiągnąć?

Nieznany koder
źródło
1
@Arjan tak, dziękuję. Odniesienie do CentOS dotyczy mojego serwera OpenVPN . Myślę więc, że ta część informacji nie powinna mieć wpływu na odpowiedzi, ponieważ moje pytanie jest w zasadzie tylko po stronie klienta.
Nieznany Coder
Pytanie Jak zmusić gości VirtualBox do udostępniania połączenia VPN hosta? na AskUbuntu szczegółowo omawia ten temat.
Przełom

Odpowiedzi:

3

Odpowiedź brzmi: zależy to od tego, czy używasz OpenVPN w trybie bridgedlub routed: masz routowany OpenVPN, jeśli nowy wirtualny interfejs jest tunX, zmostkowany OpenVPN, jeśli zamiast tego masz tapXinterfejs wirtualny.

W przypadku mostkowanego OpenVPN : wybierz, na ekranie VirtualBox, Sieć-> Most zmostkowany, Nazwa -> dotknij 0.

W przypadku routowanego Openvpn : wybierz na ekranie VirtualBox sieć-> NAT.

W ten sposób nie będziesz potrzebować klienta OpenVPN na maszynie wirtualnej. Ponadto powyższe odpowiedzi obejmują oba ważne przypadki, OP nie podał, który tryb OpenVPN jest używany.

Aby dokładnie sprawdzić, czy powyższe działa poprawnie, załaduj do przeglądarki następujący adres URL: www.whatismyipaddress.com ; z jego danych wyjściowych lub narzędzi geolokalizacyjnych przedstawionych w odpowiedzi, jeśli nie jesteś pewien, będziesz w stanie ustalić, jakie jest twoje pozorne zewnętrzne IP.

MariusMatutiae
źródło
dziękuję za odpowiedź, to jest we właściwej linii. Sprawdziłem adres IP, o którym wspomniałeś. Ale bardziej martwię się tym, jak to wszystko zareaguje, gdy host utraci połączenie VPN. W scenariuszu NAT, gdy sieć VPN zostanie utracona na hoście, host korzysta z Wi-Fi i przekazuje to samo połączenie do klienta - nie jest to pożądany proces. Jak zareagowałoby Twoje rozwiązanie w przypadku utraty połączenia VPN?
Nieznany Coder,
@JimBeam To zależy. Maszyna wirtualna jest zawsze kierowana przez dowolne dostępne połączenie. Jeśli połączenie OpenVPN zostanie utracone, a tabela routingu zostanie zmieniona, wówczas maszyna wirtualna zostanie przekierowana przez Wi-Fi. Jeśli OpenVPN zostanie utracony na krótki czas, tabela routingu nie zostanie zmieniona, a następnie połączenie OpenVPN zostanie ponownie ustanowione, twoja maszyna wirtualna nigdy nie zostanie przekierowana przez Wi-Fi. Jeśli trzeba , za wszelką cenę, przejść przez OpenVPN, to tylko polityka routingu może dać pewność, że żadne pakiety są kierowane thru wifi. Zwykle OpenVPN są jednak dość solidne.
MariusMatutiae
To: W przypadku mostkowanego OpenVPN: wybierz, na ekranie VirtualBox, Sieć-> Most zmostkowany, Nazwa -> dotknij 0. nie działa dla mnie (host OSX + gość Ubuntu)
Worker
1
@ Worker Co masz na myśli mówiąc, że nie działa ? Nie możesz znaleźć tap0 ? Brak połączenia zewnętrznego? Jakiś komunikat o błędzie?
MariusMatutiae
1
@ Worker Działa idealnie w systemie Linux. Nie próbowałem tego na MacOS, ale nie go wypróbować na FreeBSD (zarówno jako gość i jako gospodarz) i na OpenBSD (jako gość tylko ), i działa idealnie w takich sytuacjach. Jestem więc nieco zaskoczony twoimi ustaleniami .
MariusMatutiae
1

Wygląda na to, że szukasz „zmostkowanego” interfejsu wirtualnego NAT. W ten sposób można powiązać interfejs wirtualny (czyli interfejs do komunikacji między hostem Mac a gościem systemu Windows) tylko z jednym określonym interfejsem hosta. O ile rozumiem pytanie, masz skonfigurowany interfejs VPN na hoście, prawda? Aby uzyskać szczegółowe informacje, patrz http://www.virtualbox.org/manual/ch06.html#network_bridged

Echsecutor
źródło
To interesująca odpowiedź. Jednak nie widzę powodu, dla którego należy połączyć się z VPN na hoście. Możesz połączyć się z adapterem na hoście, ale nie specjalnie z VPN. Więc w tym scenariuszu, jeśli VPN ulegnie awarii na hoście, użyje WifI, a adapter Bridged nadal będzie korzystać z połączenia Wi-Fi. Nie zatrzyma to ruchu z maszyny wirtualnej. Masz jakieś przemyślenia na ten temat?
Nieznany Coder
Zależy to od sposobu implementacji klienta VPN. Na hostach Windows mają tendencję do prezentowania się jako adaptery.
Dzisiaj
Tak samo jest w OS X, VPN jest osobnym adapterem.
qasdfdsaq
0

Oświadczenie: Nigdy nie korzystałem z Virtualbox, więc może to nie być możliwe.

Opcja 1 Powiąż kartę sieciową komputera z systemem Windows z interfejsem openvpn.

Opcja 2 Nieco bardziej skomplikowana, utwórz sieć przed oknem Windows i użyj małego routera Openvpn na Linuksie, a następnie skonfiguruj iptables, aby Windows mógł korzystać tylko z interfejsu openvpn. Wówczas system Windows nie miałby dostępu do Internetu, gdy VPN był wyłączony, ponieważ blok linuksowy by go zablokował.

Michael B.
źródło
@MariusMatutiae W cichych słowach Dziewicy Maryi ... przyjdź ponownie? - aka o czym ty do diabła mówisz ?!
Michael B,
0

Najlepszym sposobem, aby upewnić się, cały ruch jest kierowany przez VPN byłoby uruchomić klienta VPN wewnątrz maszyny wirtualnej. Jeśli korzystasz z klienta OpenVPN na maszynie wirtualnej, możesz ustawić tę push "redirect-gateway"opcję w swojej konfiguracji, aby upewnić się, że cały ruch klienta jest kierowany przez VPN. Jeśli połączenie z serwerem zostanie utracone, wszystkie żądania klientów powinny następnie przekroczyć limit czasu (w przeciwieństwie do routingu przez pozostały adapter NAT).

Jeśli wystąpi problem z samym klientem OpenVPN, możesz użyć Zapory systemu Windows, aby jawnie wyłączyć dostęp procesów do pozostałej karty NAT dostarczonej przez VirtualBox. Można to zrobić, stosując domyślną zasadę / zasadę odmowy dla wszystkich połączeń przychodzących i wychodzących na głównej karcie sieciowej, dodając wyjątek tylko dla klienta OpenVPN. To zmusi cały pozostały ruch w maszynie wirtualnej do kierowania przez adapter tunelu lub po prostu zostanie zablokowany, jeśli nie będzie dostępny.

Przełom
źródło
Usiłuję NIE uruchamiać klienta VPN klienta na mojej maszynie wirtualnej
Unknown Coder
@JimBeam Dlaczego nie skorzystać z zapory ogniowej na komputerze-hoście, aby uniemożliwić procesowi VirtualBox dostęp do adaptera sieciowego oprócz tunelu OpenVPN?
Przełom
jak dokładnie miałbym to zrobić w OSX, proszę?
Nieznany Coder,
Nie posiadam żadnych produktów Apple, więc naprawdę nie mogę w tej chwili wiele pomóc ... Być może poproś moderatora, aby zamiast tego przeniósł to pytanie na AskDifferent.SE (lub ponownie rozważ użycie OpenVPN w maszynie wirtualnej).
Przełom