Jak selektywnie kierować ruchem sieciowym przez VPN w Mac OS X Leopard?

96

Nie chcę wysyłać całego mojego ruchu sieciowego do VPN, gdy jestem podłączony do sieci mojej firmy (przez VPN) z domu. Na przykład, kiedy pracuję w domu, chciałbym móc wykonać kopię zapasową wszystkich moich plików na urządzeniu Time Capsule w domu i nadal mieć dostęp do wewnętrznej sieci firmy.

Korzystam z wbudowanego klienta VPN Leoparda. Próbowałem odznaczyć opcję „Wyślij cały ruch przez połączenie VPN”. Jeśli to zrobię, utracę dostęp do wewnętrznych stron internetowych mojej firmy, czy to za pośrednictwem curl lub przeglądarki internetowej (chociaż wewnętrzne adresy IP są nadal dostępne). Byłoby idealnie, gdybym mógł selektywnie wybrać zestaw adresów IP lub domen, które mają być kierowane przez VPN, a resztę pozostawić we własnej sieci. Czy jest to możliwe dzięki wbudowanemu klientowi VPN Leoparda? Jeśli masz jakieś zalecenia dotyczące oprogramowania, również je chciałbym usłyszeć.

newtonapple
źródło
2
Pierwsze rozwiązanie będzie działać tylko w sieci PPP VPN. Poniższy rozwiązanie będzie działać na Cisco VPN (i innych rodzajów nic konkretnego do Cisco) superuser.com/questions/91191/...
dr jimbob

Odpowiedzi:

84

Utwórz plik / etc / ppp / ip-up z następującą zawartością:

#!/bin/sh
/sbin/route add <SUBNET> -interface $1 

zastępując <SUBNET>podsieć, chcesz trasować przez VPN (np. 192.168.0.0/16)

wykonaj jako root:

chmod 0755 /etc/ppp/ip-up

Ten plik będzie wykonywany przy każdym połączeniu z VPN.

Parametry podane do skryptu:

  • $1: Interfejs VPN (np. ppp0)
  • $2: Nieznany, był 0w moim przypadku
  • $3: IP serwera VPN
  • $4: Adres bramy VPN
  • $5: Zwykła (inna niż VPN) brama do połączeń LAN
Aleksei Balandin
źródło
1
Czubek Aleksieja działał dla mnie. Zastanawiam się tylko, czy pierwsza linia (#! / Bin / sh) coś robi. Nie jest to skomentowane. Pytam o to, ponieważ opisuję to do użytku w naszej firmie i im prościej, tym lepiej :-) Dzięki, Edgar
Edgar Wieringa
1
@EdgarWieringa: przekonwertował swoją odpowiedź na komentarz. Mam nadzieję, że to lepiej! :)
studiohack
6
@Edgar - nie. Ta pierwsza linia jest wyjątkowa. en.wikipedia.org/wiki/Shebang_(Unix)
James Moore
6
W wersji 10.7 / Lion miałem więcej szczęścia z: / sbin / route add 172.16.0.0/16 -interface 1 Argumenty, które widziałem, że otrzymałem ip-up to: 1 $ = interfejs VPN, np. 'Ppp0' $ 2 = '0' (nie pewna, jaka jest ta wartość) 3 USD = Twój adres IP VPN 4 USD = Adres IP publicznej bramy VPN 5 USD = Normalna domyślna brama dla Ethernetu / Wi
Gabe Martin-Dempesy
4
Co się stanie, jeśli mam skonfigurowane dwa lub więcej połączeń VPN? Jak mogę je rozróżnić, /etc/ppp/ip-upaby odpowiednio dodać trasy? Czy przyjazna nazwa VPN zostanie przekazana jako 6. argument ( ipparam)?
Kal
11

Chciałem zrobić podobną rzecz. Połącz VPN, a następnie poprowadź dodatkową sieć przez tę VPN. Skończyło się z następującą częścią Applescript:

-- Connect Work VPN

tell application "System Events"
    tell network preferences
        tell current location
            tell service "Work"
                connect
                tell current configuration
                    repeat until get connected = true
                        delay 1
                    end repeat
                end tell
            end tell
        end tell
    end tell
end tell

set gateway to "192.168.1.1"

do shell script "route add 172.16.0.0/16 " & gateway with administrator privileges

Musisz zmienić "Work"nazwę połączenia VPN, 192.168.1.1adres bramy i 172.16.0.0/16adres sieci, do której chcesz kierować. Można dodać dodatkowe sieci, powtarzając ostatnią linię z różnymi adresami.

Martin Hilton
źródło
1
(Drobny dodatek, dla tych, którzy zastanawiają się nad tym adresem IP: tak jak mówił pytający, 172.16.0.0/16 to prywatna przestrzeń adresowa, podobnie jak 10.xxx i 192.168.xx Tak więc jest to właściwie część VPN, a nie jakakolwiek zewnętrzna strona internetowa itp.)
Arjan
1
Czy 192.168.1.1twój router jest w sieci VPN, czy router w sieci LAN? I nie musisz ustawiać domyślnej trasy z powrotem do swojej sieci LAN?
Jack M.
8

W Preferencjach sieciowych w MacOS jest ukryta funkcja : możesz sortować interfejsy .

Otwórz Preferencje systemowe -> Sieć -> Kliknij gearlewy dolny róg ->Set service Order...

<code> Ustaw zamówienie usługi ... </code> Zamawianie VPN

Bardzo ważne jest, aby interfejsy sieciowe były posortowane w takiej kolejności, w jakiej mają być używane. Jeśli chcesz, aby WSZYSTKIE dane inne niż LAN były przesyłane do sieci VPN, umieść interfejs VPN u góry. Sortuj w ten sposób

  1. VPN
  2. Ethernet
  3. Lotnisko

Nie tak jak to:

  1. Lotnisko
  2. Ethernet
  3. VPN

W ten sposób nie trzeba sprawdzać następujących ustawień w Session Options:

Wyślij cały ruch przez połączenie VPN

✅ Testowane przy L2TP VPNpołączeniu

GabLeRoux
źródło
Nie sądzę, że to odpowiada na pytanie, chyba że OP tworzy kopię zapasową Time Machine przez Ethernet i łączy się z siecią firmową Widok na lotnisko (połączenie bezprzewodowe)
Josh Newman
1
Użyłem sztuczki startowej ppp, ale nie zadziałało, dopóki nie przeniosłem połączenia VPN poniżej połączenia bezprzewodowego. To jest poprawna odpowiedź.
Arosboro,
To naprawdę będzie główna odpowiedź! Bardzo dziękuję, nie da się tego rozgryźć!
Andre Soares,
1
Działa to dla VPN LPSTP IPSec, ale NIE działa dla VPN Cisco IPSec. Sieci VPN Cisco IPSec nie są dostępne w oknie dialogowym „Ustaw zlecenie serwisowe”
goofology,
1

Sprawdziłem online, czy mogę coś znaleźć. O ile rozumiem, wydaje się, że chcesz móc korzystać z komputera w normalny sposób, a jednocześnie możesz łączyć się z wewnętrznymi witrynami firmy, więc możesz musisz skonfigurować niestandardową tabelę routingu.

Ten link najwyraźniej dotyczy tylko wersji 10.4, ale linie poleceń mogą nadal działać.

Alexis Hirst
źródło