OpenVPN: trasować tylko określone adresy IP przez VPN?

44

W zdalnej sieci prywatnej znajdują się dwa serwery - serwer plików i serwer bazy danych (oba są komputerami Win, jeśli ma to znaczenie).

Serwer plików ma własne dość niezawodne mechanizmy uwierzytelniania i pozwala mi łączyć się bezpośrednio ze zdalnej lokalizacji.

Serwer bazy danych używa prostej nazwy użytkownika i hasła, więc aby zapobiec nieautoryzowanemu dostępowi, jest on zablokowany w sieci lokalnej - ruch zewnętrzny jest blokowany.

Aby uzyskać dostęp do serwera bazy danych, używam klienta OpenVPN w systemie Windows do łączenia się z serwerem VPN w sieci prywatnej.

Domyślnie OpenVPN kieruje wszystkie pakiety sieciowe przeznaczone do sieci zdalnej, w której rezyduje serwer VPN, za pośrednictwem sieci VPN. Niestety, dostęp do serwera plików przez VPN jest bardzo wolny!

Pytanie:

Jak mogę skonfigurować klienta OpenVPN, aby TYLKO kierował ruchem przez VPN, który jest przeznaczony dla jednego, określonego adresu IP - mianowicie serwera bazy danych?

Brian Lacy
źródło
To proste, zobacz tutaj, jak to zrobić superuser.com/a/178675/96461
Sameer

Odpowiedzi:

49

Prawidłowa konfiguracja dla OpenVpn to:

route-nopull 
route 192.168.0.0 255.255.255.0

Te wpisy należą do pliku .ovpn i będą kierować całym ruchem podsieci 192.168.0. * Przez VPN.

Tylko dla jednego adresu IP (192.168.0.1):

route-nopull 
route 192.168.0.1 255.255.255.255
Tomasz
źródło
Jesteśmy głównie anglojęzyczni i niekoniecznie znamy niemiecki. Proszę przetłumacz swoją odpowiedź.
gronostaj
1
+1. Właśnie tego potrzebowałem. Używam klientów ovpn na moim Linuksie, a więc odpowiedź właśnie mnie uratowała. Dzięki.
slayedbylucifer
Czy mogę po prostu przekierować stronę internetową do VPN? Na przykład: www.facebook.com
Nicola Peluchetti
W moim przypadku routing pojedynczego adresu IP przez VPN wydaje się działać poprawnie. Ale przy użyciu maski podsieci wcale nie działa. Jakieś pomysły dlaczego?
running.t
Nadal nie znam odpowiedzi na moje pytanie (powyżej), ale przeprowadziłem dochodzenie i stworzyłem osobny wątek na ten temat: superuser.com/questions/854194/…
running.t
24

Cele

  • Domyślnie używaj zwykłego połączenia internetowego dla całego ruchu internetowego, nawet gdy VPN jest podłączony.
  • Kieruj ruchem do jednego określonego adresu IP przez VPN.

Kroki

  1. Naciśnij Win+ Ri wykonaj ncpa.cpl.

  2. Kliknij połączenie VPN prawym przyciskiem myszy i wybierz Właściwości → Sieć .

  3. Wybierz Protokół internetowy w wersji 4 i przejdź do Właściwości → Zaawansowane ... .

  4. Odznacz Użyj domyślnej bramy w sieci zdalnej i kliknij OK .

  5. (opcjonalnie) Powtórz poprzednie kroki dla protokołu internetowego w wersji 6 .

  6. (Ponownie) połącz się z siecią VPN.

  7. Otwórz wiersz polecenia i uruchom route print -4.

  8. Znajdź interfejs VPN na liście interfejsów i jego bramę w aktywnych trasach .

    Na moim komputerze mam:

    Interface List
     32...........................Super Free VPN
    
    [...]
    
    Active Routes:
    Network Destination        Netmask          Gateway       Interface  Metric
              0.0.0.0          0.0.0.0         On-link        10.6.6.127     31
             10.0.0.0        255.0.0.0        10.88.1.1      10.88.1.102     31
    

    Tutaj brama VPN jest 10.88.1.1, ponieważ jest bramą dla 10.xxx.xxx.xxxbloku.

  9. Dodaj trwałą trasę, która zostanie dołączona do aktywnych tras, ilekroć będzie połączenie z VPN:

    route -p add 23.22.135.169 10.88.1.1 if 32
    

    W tym przykładzie 23.22.135.169jest to adres IP whatismyip.org, 10.88.1.1to adres IP bramy i 32numer interfejsu.

  10. (opcjonalnie) Powtórz poprzednie kroki dla route print -6.

  11. Przetestuj konfigurację.

    Jeśli wszystko się powiedzie, whatismyip.org i www.whatismyip.cx będą teraz wyświetlać różne adresy IP.

Dennis
źródło
1
Z pewnością istnieje prostszy sposób?
Brian Lacy,
1
Czy wiesz, jak to osiągnąć w systemie Linux (Ubuntu)?
Елин Й.
1
@ ЕлинЙ. jeśli używasz Network Managera, po prostu wybierz „Użyj tego połączenia tylko dla zasobów w tej sieci”.
leif81,
1
+1 ... ale czy mógłby to zagrać w golfa?
Olivier Dulac
11

Do konfiguracji klienta OpenVPN dodaj wiersz:

route The.IP.To.Go 255.255.255.255

(Gdzie The.IP.To.Go to adres IP, który chcesz trasować przez VPN)

To instruuje OpenVPN, aby utworzył wpis w tabeli routingu twojego systemu operacyjnego.

Alternatywnie, serwer OpenVPN można zmusić do „wypchnięcia” tej konfiguracji routingu w dół do klientów poprzez dodanie do konfiguracji serwera:

push "route The.IP.To.Go 255.255.255.255"

EDYCJA: Jednej rzeczy mi brakowało adresowania - domyślne przekazywanie całego ruchu ... Może być albo wyłączone na serwerze, albo klienci mogą zignorować dyrektywy „wypychane” (więc nasza druga opcja „wypychania” trasy nie działałaby ) przez:

route-nopull
Adam
źródło
-2
iptables -A PREROUTING -t mangle -i <LAN_interface> \
-d <remote_network>/<remote_netmask> -j ROUTE --gw <openvpn_host_ip>
Dharmesh
źródło
Wyjaśnij, co robi to polecenie. Tylko jedno polecenie bez wyjaśnienia nie jest tak przydatne. Sprawdź także formatowanie posta - wszystkie <brackets>nie są widoczne, jeśli nie są oznaczone jako kod.
slhck