Bagaimana cara merutekan lalu lintas jaringan secara selektif melalui VPN di Mac OS X Leopard?

96

Saya tidak ingin mengirim semua lalu lintas jaringan saya ke VPN ketika saya terhubung ke jaringan perusahaan saya (melalui VPN) dari rumah. Misalnya, ketika saya bekerja dari rumah, saya ingin dapat mencadangkan semua file saya ke Time Capsule di rumah dan masih dapat mengakses jaringan internal perusahaan.

Saya menggunakan klien VPN bawaan Leopard. Saya sudah mencoba menghapus centang "Kirim semua lalu lintas melalui koneksi VPN." Jika saya melakukan itu, saya akan kehilangan akses ke situs web internal perusahaan saya baik itu melalui curl atau browser web (meskipun IP internal masih dapat dijangkau). Itu akan ideal jika saya dapat secara selektif memilih satu set IP atau domain untuk dialihkan melalui VPN dan menyimpan sisanya di jaringan saya sendiri. Apakah ini dapat dicapai dengan klien VPN bawaan Leopard? Jika Anda memiliki rekomendasi perangkat lunak, saya ingin mendengarnya juga.

newtonapple
sumber
2
Solusi pertama hanya akan bekerja pada PPP VPN. Solusi berikut ini akan bekerja pada Cisco VPN (dan jenis lainnya yang tidak khusus untuk Cisco) superuser.com/questions/91191/…
dr jimbob

Jawaban:

84

Buat file / etc / ppp / ip-up dengan konten berikut:

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

mengganti <SUBNET>dengan subnet, Anda ingin merutekan melalui VPN (mis. 192.168.0.0/16)

dieksekusi sebagai root:

chmod 0755 /etc/ppp/ip-up

File ini akan dieksekusi setiap kali Anda terhubung ke VPN.

Parameter yang diberikan ke skrip:

  • $1: Antarmuka VPN (mis. ppp0)
  • $2: Tidak diketahui, 0dalam kasus saya
  • $3: IP server VPN
  • $4: Alamat gateway VPN
  • $5: Gateway biasa (non-vpn) untuk koneksi LAN Anda
Aleksei Balandin
sumber
1
Ujung Aleksei bekerja untuk saya. Saya hanya ingin tahu apakah baris pertama (#! / Bin / sh) melakukan apa saja. Bukankah sudah dikomentari. Saya menanyakan ini karena saya menggambarkan ini untuk digunakan di perusahaan kami dan semakin sederhana semakin baik :-) Terima kasih, Edgar
Edgar Wieringa
1
@EdgarWieringa: mengonversi jawaban Anda menjadi komentar. Semoga itu lebih baik! :)
studiohack
6
@ Edgar - tidak. Baris pertama itu istimewa. en.wikipedia.org/wiki/Shebang_(Unix)
James Moore
6
Pada 10.7 / Lion, saya lebih beruntung dengan: / sbin / route add 172.16.0.0/16 -interface $ 1 Argumen yang saya lihat mendapatkan ip-up adalah: $ 1 = antarmuka VPN, misalnya 'ppp0' $ 2 = '0' (tidak yakin apa nilainya) $ 3 = IP VPN Anda $ 4 = VPN gateway publik IP address $ 5 = Gateway default normal untuk ethernet / wifi
Gabe Martin-Dempesy
4
Apa yang terjadi jika saya memiliki dua koneksi VPN yang dikonfigurasi? Bagaimana cara membedakan di antara mereka /etc/ppp/ip-upsehingga saya dapat menambahkan rute yang sesuai? Apakah nama VPN yang ramah dilewatkan sebagai argumen ke-6 ( ipparam)?
Kal
11

Saya ingin melakukan hal serupa. Hubungkan VPN dan kemudian rutekan jaringan tambahan melalui VPN itu. Saya berakhir dengan sedikit Applescript berikut:

-- 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

Anda perlu mengubah "Work"ke nama koneksi VPN Anda, 192.168.1.1ke alamat gateway Anda, dan 172.16.0.0/16ke alamat jaringan yang ingin Anda rute. Jaringan tambahan dapat ditambahkan dengan mengulangi baris terakhir dengan alamat yang berbeda.

Martin Hilton
sumber
1
(Tambahan kecil, bagi mereka yang bertanya-tanya tentang alamat IP ini: seperti yang dibicarakan oleh penanya, 172.16.0.0/16 adalah ruang alamat pribadi seperti 10.xxx dan 192.168.xx Jadi, sebenarnya ini adalah bagian dari VPN, dan bukan situs web eksternal atau apa pun.)
Arjan
1
Jadi 192.168.1.1apakah router Anda di VPN, atau router di LAN? Dan bukankah Anda harus mengatur rute default kembali ke LAN Anda?
Jack M.
8

Ada fitur tersembunyi di Preferensi Jaringan pada MacOS: Anda dapat mengurutkan antarmuka .

Buka System Preferences -> Network -> Klik gearkiri bawah ->Set service Order...

<code> Tetapkan Pesanan layanan ... </code> Pemesanan VPN

Sangat penting bahwa Anda memiliki antarmuka jaringan Anda diurutkan ke dalam urutan yang Anda inginkan untuk digunakan. Jika Anda ingin SEMUA data non-LAN pergi ke VPN, letakkan antarmuka VPN di bagian atas. Semacam ini

  1. VPN
  2. Ethernet
  3. Bandara

Tidak seperti ini:

  1. Bandara
  2. Ethernet
  3. VPN

Dengan cara ini, tidak perlu memeriksa pengaturan berikut di Session Options:

Kirim semua lalu lintas melalui koneksi VPN

✅ Diuji pada L2TP VPNkoneksi

GabLeRoux
sumber
Saya tidak berpikir ini menjawab pertanyaan, kecuali OP mencadangkan ke Time Machine melalui Ethernet dan menghubungkan ke tampilan jaringan perusahaan Airport (Koneksi nirkabel)
Josh Newman
1
Saya menggunakan trik startup ppp, tetapi tidak berhasil sampai saya memindahkan koneksi vpn saya di bawah koneksi nirkabel. Ini jawaban yang valid.
Arosboro
Benar-benar akan menjadi jawaban utama! Terima kasih banyak, tidak mungkin untuk mencari tahu!
Andre Soares
1
Ini berfungsi untuk L2TP IPSec VPN, tetapi TIDAK bekerja untuk Cisco IPSec VPN. Cisco IPSec VPN tidak tersedia dalam dialog "Tetapkan Pesanan Layanan"
goofology
1

Saya telah melihat-lihat online untuk melihat apakah saya dapat menemukan sesuatu, dan sejauh yang saya mengerti Anda tampaknya ingin dapat menggunakan komputer Anda seperti biasa, sementara juga dapat terhubung ke situs web perusahaan internal, jadi, Anda dapat perlu mengatur tabel perutean kustom.

Tautan ini tampaknya hanya berlaku untuk 10.4, tetapi hal-hal baris perintah masih dapat berfungsi.

Alexis Hirst
sumber