To jest pytanie kanoniczne dotyczące rozwiązywania konfliktów podsieci IPv4 między siecią lokalną klienta VPN a siecią łączącą się z nim.
Po połączeniu ze zdalną lokalizacją przez OpenVPN klienci próbują uzyskać dostęp do serwera w sieci, która istnieje w podsieci, takiej jak 192.0.2.0/24. Czasami jednak sieć w sieci LAN klienta ma ten sam adres podsieci: 192.0.2.0/24. Klienci nie mogą połączyć się ze zdalnym serwerem przez wpisanie jego adresu IP z powodu tego konfliktu. Nie mogą nawet uzyskać dostępu do publicznego Internetu po podłączeniu do sieci VPN.
Problem polega na tym, że ta podsieć 192.0.2.0/24 musi być routowana przez VPN, ale musi także być routowana jako sieć LAN klienta.
Czy ktoś wie, jak złagodzić ten problem? Mam dostęp do serwera OpenVPN.
Odpowiedzi:
Można to rozwiązać za pomocą NAT; po prostu nie jest zbyt elegancki.
Zatem przy założeniu, że nie można rozwiązać tego problemu, mając sieci wewnętrzne, które mają tak rzadkie numery sieci, że nigdy nie wchodzą w konflikt, oto zasada:
Ponieważ zarówno lokalna, jak i zdalna podsieć mają identyczne numery sieciowe, ruch z twojego klienta nigdy nie zda sobie sprawy, że musi przejść przez bramę tunelu, aby dotrzeć do miejsca docelowego. I nawet jeśli sobie to wyobrażamy, sytuacja byłaby taka sama dla zdalnego hosta, ponieważ ma zamiar wysłać odpowiedź.
Więc zostań ze mną i udawaj, że jak dotąd nie ma żadnych problemów ubocznych, piszę, że aby uzyskać pełną łączność, trzeba będzie NAT obu końców w tunelu, aby zróżnicować hosty i umożliwić routing.
Tworzenie niektórych sieci tutaj:
Wewnątrz tunelu VPN hostami biurowymi jest teraz 198.51.100.x, a hostami zdalnymi biurowymi 203.0.113.x. Udawajmy, że wszystkie hosty są mapowane 1: 1 w NAT ich odpowiednich bram VPN. Przykład:
Więc jeśli host 192.0.2.5/24 w biurze zdalnym chce połączyć się z hostem z tym samym adresem IP w sieci biurowej, musi to zrobić, używając adresu 198.51.100.5/24 jako miejsca docelowego. Zdarza się:
Chociaż istnieje rozwiązanie, istnieje wiele kwestii, które należy rozwiązać, aby działało w praktyce:
Rozwiązanie tego problemu wymaga starannego zaprojektowania. Jeśli twoje zdalne biuro naprawdę składa się z wojowników drogowych, dodajesz warstwę problemów w tym:
W zależności od klienta VPN może być możliwe automatyczne wybranie jednej sieci VPN lub drugiej w zależności od adresu sieciowego segmentu lokalnego.
Zauważ, że wszystkie wzmianki o NAT w tym kontekście oznaczają funkcję NAT, która, że tak powiem, ma miejsce w perspektywie tunelu. Procesowo, statyczne mapowanie NAT musi zostać wykonane, zanim pakiet „wejdzie” do tunelu, tj. Zanim zostanie zamknięty w pakiecie transportowym, który ma go przenieść przez Internet do innej bramy VPN.
Oznacza to, że nie należy mylić publicznych adresów IP bram VPN (które w praktyce mogą być również NAT: ed, ale wtedy całkowicie poza perspektywą transportu do zdalnej strony przez VPN) z unikalnymi prywatnymi adresami używanymi jako maskarady dla duplikatów adresów prywatnych. Jeśli ta abstrakcja jest trudna do wyobrażenia, ilustruje to, w jaki sposób NAT może być fizycznie oddzielony od bramki VPN w tym celu:
Wykorzystanie NAT w nakładających się sieciach .
Skondensowanie tego samego obrazu do logicznej separacji wewnątrz jednego komputera, zdolnego do wykonywania zarówno funkcji NAT, jak i bramy VPN, po prostu posuwa ten sam przykład o krok dalej, ale kładzie większy nacisk na możliwości dostępnego oprogramowania. Złamanie go razem z, na przykład OpenVPN i iptables, i opublikowanie rozwiązania tutaj byłoby godnym wyzwaniem.
Pod względem oprogramowania z pewnością jest to możliwe: PIX / ASA 7.x i później: VPN IPsec LAN-to-LAN z nakładającymi się przykładami konfiguracji sieci
i:
Konfigurowanie tunelu IPSec między routerami ze zduplikowanymi podsieciami LAN
Rzeczywista implementacja zależy zatem od wielu czynników, zaangażowanych systemów operacyjnych, powiązanego oprogramowania i jego możliwości. Ale z pewnością jest to wykonalne. Musisz trochę pomyśleć i poeksperymentować.
Nauczyłem się tego od Cisco, co widać po linkach.
źródło
Jeśli potrzebujesz tymczasowego brudnego obejścia dla pojedynczego lub garstki znanych serwerów ips, najprostszym rozwiązaniem powinna być statyczna opcja routingu po stronie klienta.
W moim przypadku dodałem żądany serwer docelowy (192.168.1.100) do mojej tabeli routingu na moim kliencie linuksowym poprzez:
Następnie usuń tę statyczną trasę za pomocą polecenia route delete.
źródło
dev tun0
potrzebujesz-interface tun0
tak to jest najgorsze. dla mnie zdarzało się to cały czas z pokoi hotelowych, zanim administratorzy VPN zdali sobie sprawę, że powinni użyć bardziej niejasnych zakresów IP. 10.0.0.0/24 i 10.1.1.1/24 są najgorsze. jeśli możesz pomóc, nigdy nie używaj ip takiej sieci bezprzewodowej.
więc odpowiedź brzmi: „napraw” WAP, aby użyć innej sieci wewnętrznej (tj. 10.255.255.0/24), a następnie dać ci dzierżawę różnic (tj. ip w zakresie, który może przekierowywać z powrotem do VPN Corp), lub jeśli nie masz / cant dostać admin na wap, po prostu przejdź do starbucks. lub 20 minut wardriving :)
jeśli jest to tylko ustawienie laboratoryjne, użyj innych zakresów.
źródło
Jestem na komputerze Mac z systemem El Capitan. Chociaż powyższe sugestie nie działały dla mnie, doprowadziły mnie do skutecznego rozwiązania:
ifconfig
uruchom VPN, zrób
ifconfig
i zanotuj, który jest nowym interfejsem. W moim przypadku był to ppp0 z adresem IP 192.168.42.74Wpisz:
Najpierw przetestowałem a,
ping
a następnie udowodniłem, że działa, uzyskując dostęp do serwera git.Kiedy próbowałem użyć dev ppp0 do końca polecenia route, jak wspomniano powyżej, to narzekało.
źródło
192.168.1.79
pochodzący z tej wymiany?Mam proste rozwiązanie, którego używam w przestrzeni coworkingowej o sprzecznym zakresie adresów IP (10.x)
Połączyłem się z siecią za pomocą telefonu komórkowego, a następnie udostępniłem połączenie sieciowe przez bluetooth mojemu laptopowi. Teraz mogę korzystać z VPN dla mojego zdalnego pracodawcy.
Jestem pewien, że będzie działać tak samo przez USB, jeśli potrzebujesz szybszego połączenia.
źródło
Jeśli potrzebujesz tylko jednego lub dwóch adresów IP, dodaj instrukcję route do pliku konfiguracyjnego ovpn w następujący sposób:
trasa 192.168.1.10 255.255.255.255
trasa 192.168.1.11 255.255.255.255
Dodaje trasę tylko dla tych IP po podłączeniu VPN i usuwa ją, gdy VPN się rozłączy.
W każdym razie pracował dla mnie w systemie Windows.
źródło
Odpowiedź Aydina K. dotyczy Linuksa. Jeśli chcesz taką samą funkcjonalność dla systemu Windows, możesz wpisać
lub
identyfikator interfejsu można uzyskać za pomocą polecenia:
źródło
Przypominamy: cały ten problem wynika z wielu lat braku adresu IPv4 i szerokiego wykorzystania prywatnego zakresu adresów IP za NAT do obejścia tego braku!
Idealne i ostateczne rozwiązanie tego problemu jest dość proste (aczkolwiek może i będzie potrzebowało trochę czasu na globalne wdrożenie): IPv6 ...
W świecie IPv6 nie ma publicznego niedoboru adresów IP (i nie będzie takiego wydarzenia za kilka dekad). Nie ma więc powodu, aby nie mieć publicznego adresu IP na każdym urządzeniu w każdej sieci. A jeśli potrzebujesz izolacji sieci, kontynuuj filtrowanie za pomocą zapory ogniowej, ale bez brzydkiego NAT ...
źródło