Sieć używa tylko jednego DNS po połączeniu z VPN

9

Moja firma ma VPN, z którym muszę się połączyć. W OSX robię to przy użyciu openvpnnastępującej konfiguracji:

client
dev tun
proto udp
remote <GATEWAY_ADDRESS> <PORT>
resolv-retry infinite
nobind
user nobody
group nobody
persist-key
persist-tun
ca /Users/Tommy/.openvpn/dev/ca-dev.crt
cert /Users/Tommy/.openvpn/dev/tommy.brunn-20131122-dev.crt
key /Users/Tommy/.openvpn/dev/tommy.brunn-20131122-dev.key
ns-cert-type server
tls-auth /Users/Tommy/.openvpn/dev/ta-dev.key 1
cipher BF-CBC
comp-lzo
verb 3
auth-nocache
;daemon
;writepid openvpn.pid

W Ubuntu zainstalowałem network-manager-openvpni dodałem nowe połączenie VPN (próba zaimportowania pliku konfiguracji spowodowała awarię) z tymi samymi ustawionymi opcjami konfiguracji: Zrzuty ekranu z moich ustawień

Po połączeniu się z VPN nie mogę rozwiązać żadnych domen.

Jeśli dokonam edycji /etc/NetworkManager/NetworkManager.conf, skomentuję wiersz dns=dnsmasqi uruchomię ponownie network-manager, mogę rozwiązać domeny wewnętrzne z mojej firmy, ale inne domeny, takie jak google.com, w ogóle nie zostaną rozwiązane. Upewniłem się, że ustawiłem „Metodę” na „Tylko adresy automatyczne (VPN)” na kartach IPv4 i IPv6 menedżera sieci dla mojego połączenia VPN, ale nie robi to żadnej różnicy.

Próbowałem również ponownie włączyć dnsmasqi zmodyfikować, /etc/resolvconf/resolv.conf.d/base aby zawierał nameserver 127.0.1.1, a następnie działał sudo resolveconf -u, ale wtedy żadne domeny nie zostaną ponownie rozwiązane.

Chciałbym móc połączyć się z moją siecią VPN, aby domeny wypychane przez serwer DNS mojej firmy zostały rozwiązane w ten sposób, a wszystkie inne domeny zostały rozwiązane normalnie.

EDYCJA: Okazuje się, że dnsmasq nie był właściwie zainstalowany, co myślałem, że będzie domyślnie. Niemniej jednak, jeśli go zainstaluję, włączę ponownie /etc/NetworkManager/NetworkManager.conf, dodaj adres lokalnego serwera nazw /etc/resolvconf/resolv.conf.d/base, uruchom ponownie wszystkie usługi i połącz się z VPN, mogę rozwiązać domeny z firmowego DNS, ale nie mogę rozwiązać żadnych innych domen. W zasadzie taka sama sytuacja jak wtedy, gdy całkowicie wyłączyłem dnsmasq.

EDYCJA: Zawartość /etc/dnsmasq.conf: http://paste.ubuntu.com/7297231/

Tommy Brunn
źródło
Czy możesz nam pokazać swoje ustawienia dnsmasq? Dnsmasq zwykle pobiera swoje serwery DNS z /etc/resolv.conf, więc jeśli się nie zmieniłeś, prawdopodobnie pobierasz DNS tylko przez VPN.
jkt123 20.04.2014
Pewnie. Dodałem link do mojego/etc/dnsmasq.conf
Tommy Brunn

Odpowiedzi:

4

Z twojej konfiguracji twoja instalacja dnsmasq pobiera listę serwerów DNS, z których możesz korzystać /etc/resolv.conf. Domyślnie dnsmasq próbuje preferować używanie serwerów DNS, które są uruchomione, ale wyśle ​​dane żądanie tylko do jednego serwera DNS. Może to powodować problemy, jeśli masz wiele serwerów DNS, które mogą / będą obsługiwać tylko niektóre zapytania.

Wierzę, że możesz rozwiązać ten problem, upewniając się, że masz skonfigurowany serwer DNS w sieci LAN (ten, którego używasz, gdy nie masz połączenia z VPN) /etc/resolv.conf, a także serwer DNS w sieci firmowej, w której chcesz używać przez VPN.

Następnie musisz edytować /etc/default/dnsmasqi dodawać lub edytować DNSMASQ_OPTS=wiersz, który ma zostać dołączony --all-servers.

Jeśli nadal nie możesz uzyskać zapytań DNS przy tej konfiguracji, skopiuj plik resolv.conf utworzony podczas wykonywania powyższych kroków do innej lokalizacji, na przykład ~/resolv.confskonfiguruj /etc/resolv.confza pomocą nameserver 127.0.0.1i ustaw następującą opcję w /etc/dnsmasq.conf:

resolv-file=/home/your_username/resolv.conf

To powinno skonfigurować twój system do wysyłania zapytań do twojej instalacji dnsmasq o DNS, a on z kolei użyje zarówno lokalnego serwera DNS, jak i serwera DNS VPN dla każdego zapytania.

Edycja : Możesz znaleźć serwery DNS, których obecnie używasz do określonego połączenia za pomocą nmclinarzędzia. Aby znaleźć serwery DNS używane przez moje połączenie bezprzewodowe, użyłem następującej składni:

nmcli dev list iface wlan0 | grep IP4.DNS

Jeśli uruchomisz to polecenie, gdy nie masz połączenia z siecią VPN, a następnie ponownie, gdy będziesz podłączony i będziesz w stanie rozwiązać adresy firmowe, powinieneś wyłączyć i włączyć listę serwerów DNS. Mam nadzieję, że to pomoże.

Edycja 2 : Patrząc na tabele routingu, wygląda na to, że administrator VPN skonfigurował Cię do kierowania całego ruchu przez VPN podczas połączenia (Twoja domyślna brama zmienia się na adres VPN). Ponieważ oba serwery DNS są adresami publicznymi i żaden z nich nie ma określonej trasy skonfigurowanej podczas połączenia z siecią VPN, próbujesz przeprowadzić normalne wyszukiwanie DNS za pośrednictwem sieci VPN i właśnie to kończy się niepowodzeniem.

W zależności od konfiguracji VPN możesz mieć kilka sposobów, aby to działało:

  • Jeśli VPN pozwoli ci na dostęp do Internetu za pośrednictwem sieci firmowej, ale nie będzie wykonywać zapytań DNS do serwerów w Internecie, dodaj trasy do serwerów DNS w następujący sposób: sudo route add -host 83.255.245.11 gw 192.168.0.1i sudo route add -host 193.150.193.150 gw 192.168.0.1po połączeniu z VPN.

  • Jeśli VPN nie pozwoli ci na dostęp do Internetu za pośrednictwem sieci firmowej, musisz zmienić domyślne ustawienia bramy na komputerze, aby wskazywały na 192.168.0.1 po połączeniu z VPN. W takim przypadku należy skonfigurować zwykłą bramę domyślną, a następnie dodać trasy sieciowe, aby uzyskać dostęp do urządzeń tylko VPN.

Może być konieczne zmniejszenie tabeli routingu w przypadku połączenia z siecią VPN pokazanego na drugim pasku adresu w następujący sposób:

Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         192.168.0.1     0.0.0.0         UG    0      0        0 eth0
192.168.0.0     0.0.0.0         255.255.255.0   U     1      0        0 eth0
10.100.0.0      10.100.0.105    255.255.255.0   UGH   0      0        0 tun0
10.100.0.105    0.0.0.0         255.255.255.255 UH    0      0        0 tun0

Następnie dodaj trasy zgodnie z potrzebami, aby uzyskać dostęp do sprzętu firmowego. W powyższej tabeli routingu założyłem sieć / 24 w sieci VPN, która może być niepoprawna. Musisz odpowiednio ustawić maskę.

jkt123
źródło
Jak mogę znaleźć adresy mojego lokalnego serwera DNS i adresu w sieci firmowej?
Tommy Brunn
Zmodyfikowałem swoją odpowiedź, aby podać te informacje.
jkt123
Według nmcli dostaję dokładnie te same serwery DNS, kiedy jestem połączony z VPN, jak wtedy, gdy nie jestem, chociaż wyraźnie nie powinienem, ponieważ mogę rozwiązać domenę wewnętrzną w sieci firmowej, gdy „ m podłączony.
Tommy Brunn
Czy działając nmclibez połączenia VPN potrafiłeś poprawnie rozwiązać DNS? Jeśli nie, należy rozłączyć się z VPN, upewnić się, że DNS działa poprawnie, a następnie uruchomić nmcli.
jkt123
Tak, byłem w stanie rozwiązać DNS normalnie po odłączeniu od VPN. Przykładowe dane wyjściowe: paste.ubuntu.com/7345250
Tommy Brunn
0

Istnieją pewne luki, których nie mogę wypełnić, związane ze sposobem, w jaki NetworkManager może koordynować za Ciebie. Spróbuję jednak wyjaśnić, jak muszą działać rzeczy, które koordynuje. Nie jest to idealna odpowiedź, ale mam nadzieję, że jest przydatna. W rzeczywistości, biorąc pod uwagę, że jest to stare pytanie, to naprawdę dotyczy potomności.

Prawdopodobnie nie chcesz korzystać z korporacyjnej sieci VPN, z wyjątkiem połączeń z siecią korporacyjną. W takim przypadku byłoby lepiej, gdyby Twoja konfiguracja VPN kierowała tylko odpowiednie zakresy sieciowe do sieci VPN i utrzymywała domyślną trasę wskazującą na router lokalny, jak poprzednio. Byłoby miło, gdyby firmy konfigurowały swoje sieci VPN tak, aby kierowały tylko ruchem lub sieciami, ale niestety wydaje się to rzadkie. Na szczęście możesz skonfigurować trasy w lokalnej konfiguracji.

To wciąż pozostawia potencjalny problem z DNS. Komentarze jtk123 na temat tego, co dnsmasq robi z DNS, nie są specyficzne dla dnsmasq - tak działa DNS. Jeśli klient DNS lub pośredni program tłumaczący otrzyma odpowiedź, że pozycja DNS nie istnieje, powrót do pytania o inny serwer DNS nie jest normalnym zachowaniem. Oznacza to, że potrzebujesz resolvera dns, który odpowie tak, jak chcesz, czy żądanie dotyczy sieci firmowej, czy nie.

Być może sieć Twojej firmy odpowiada na zapytania DNS związane z szerszym Internetem, w którym to przypadku po prostu z niego korzystasz, i prawdopodobnie jest to w porządku. W przeciwnym razie potrzebny jest lokalny serwer DNS, który przekazuje żądania domen powiązanych z firmą na ich serwer DNS i, w razie potrzeby, przekazuje inne żądania w innym miejscu.

dnsmasq może zostać poproszony o przekazywanie żądań dotyczących określonych domen do określonych wcześniejszych serwerów DNS. np. zobacz opcję --server zgodnie z opisem na stronie podręcznika dnsmasq.conf. Nie jestem jednak pewien, jak sprawić, by menedżer sieci dobrze się z tym bawił (o czym obecnie chcę się dowiedzieć).

Mc0e
źródło