Problem:
Łączę się przez klienta OpenVPN na komputerze, potrzebuje aby ruch był tunelowany tylko do jednego adresu IP.
Cały pozostały ruch ma wychodzić przez lokalny adres IP.
Rozwiązanie
Mechanizm nazywa się split-tunneling i umożliwia przekierowanie ruchu VPN tylko do konkretnych adresów IP.
Po zestawieniu sesji VPN przez OpenVPN klienta, cały ruch do Internetu wychodzi przez VPN, czyli ma inny publiczny adres IP niż nasz lokalny.
Przykład:
Chcemy aby tylko ruch do adresu wp.pl (212.77.100.101) wychodził przez tunel VPN
W pliku konfiguracyjnym zmieniamy ostatnią linijkę:
Usuwamy:
redirect-gateway def1
Dodajemy:
route-nopull route 212.77.100.101 255.255.255.255 vpn_gateway
Oczywiście możemy dodać więcej adresów IP w kolejnych linijkach.
Niestety nie możemy dodać nazwy domeny jak "wp.pl" wiec zmiana nie zadziała na portalach gdzie oprócz głównego adresu IP,
pod którym jest strona, dane pobierane są jeszcze z innych źródeł np. portale vod.
Oczywiście dodatkowe adresy możemy pozyskać za pomocą sniffera, ale to już bardziej zaawansowana zabawa ;)
Plik przed zmianą:
client dev tun remote "adres serwera vpn" 443 proto tcp-client remote-cert-tls server auth-user-pass auth.txt tls-client pull persist-key resolv-retry infinite reneg-sec 0 verb 3 script-security 2 system auth-nocache route-delay 2 redirect-gateway def1
Plik po zmianie:
client dev tun remote "adres serwera vpn" 443 proto tcp-client remote-cert-tls server auth-user-pass auth.txt tls-client pull persist-key resolv-retry infinite reneg-sec 0 verb 3 script-security 2 system auth-nocache route-delay 2 route-nopull route 212.77.100.101 255.255.255.255 vpn_gateway