Berikut ini berfungsi untuk saya. Jalankan ini setelah terhubung ke Cisco VPN. (Saya menggunakan klien Cisco bawaan OS X, bukan klien bermerek Cisco.)
sudo route -nv add -net 10 -interface utun0
sudo route change default 192.168.0.1
Ganti 10
perintah pertama dengan jaringan yang ada di sisi lain terowongan.
Ganti 192.168.0.1
dengan gateway jaringan lokal Anda.
Saya memasukkannya ke skrip bash, seperti ini:
$ cat vpn.sh
#!/bin/bash
if [[ $EUID -ne 0 ]]; then
echo "Run this as root"
exit 1
fi
route -nv add -net 10 -interface utun0
route change default 192.168.0.1
Saya juga menemukan penjelasan tentang cara menjalankan ini secara otomatis ketika Anda menghubungkan VPN, tetapi ini terlambat pada hari Jumat dan saya merasa tidak ingin mencobanya :)
Edit:
Sejak itu saya meninggalkan pekerjaan di mana saya menggunakan Cisco VPN, jadi ini dari memori.
The 10
dalam perintah pertama adalah jaringan yang Anda inginkan untuk rute di atas VPN. 10
adalah tangan pendek untuk 10.0.0.0/8
. Dalam kasus Tuan Anh Tran, sepertinya jaringannya 192.168.5.0/24
.
Adapun gateway mana yang harus ditentukan dalam perintah kedua, itu harus gateway lokal Anda. Ketika Anda masuk ke VPN yang mencegah split-tunneling, itu memberlakukan kebijakan itu dengan mengubah tabel perutean Anda sehingga semua paket dialihkan pada antarmuka virtual. Jadi, Anda ingin mengubah rute default Anda kembali ke apa itu sebelum mendapatkan VPN .
Cara termudah untuk mengetahui gateway adalah dengan menjalankan netstat -rn
sebelum masuk ke VPN, dan lihat alamat IP di sebelah kanan tujuan "default". Misalnya, inilah tampilannya di kotak saya sekarang:
Internet:
Destination Gateway Flags Refs Use Netif Expire
default 10.0.1.1 UGSc 29 0 en1
10.0.1/24 link#5 UCS 3 0 en1
10.0.1.1 0:1e:52:xx:xx:xx UHLWIi 55 520896 en1 481
10.0.1.51 7c:c5:37:xx:xx:xx UHLWIi 0 1083 en1 350
10.0.1.52 127.0.0.1 UHS 0 0 lo0
Gerbang saya adalah 10.0.1.1
- di sebelah kanan tujuan "default".
Menggunakan informasi dari mehaase, saya menulis skrip Python yang benar-benar menyederhanakan proses ini di Mac. Ketika Anda menjalankannya, skrip akan menyimpan info firewall Anda, meluncurkan klien AnyConnect, tunggu login, lalu perbaiki rute dan firewall. Jalankan script dari 'terminal'.
sumber
Skrip Python dalam jawaban sebelumnya ini sangat membantu, namun, itu tidak menangani rute yang digunakan AnyConnect untuk mengambil alih antarmuka lain pada perangkat (seperti antarmuka VMware). Itu juga tidak dapat menangani beberapa jaringan VPN.
Berikut ini skrip yang saya gunakan:
sumber
Kemungkinan besar admin Anda ingin mengatur koneksi VPN untuk menggunakan perutean lokal untuk subnet 10.121. * Dan 10.122. * Dan membiarkan remote (mesin rumah Anda) merutekan semua permintaan lainnya. (Ini menghemat bandwidth dan liabilitas mereka)
Apakah Anda menggunakan "VPN Client" Cisco? os OS X?
jika Anda menggunakan VPN OS X (disiapkan melalui panel Preferensi jaringan) Anda harus dapat mengklik "lanjutan" dan memilih tab "VPN sesuai Permintaan". kemudian berikan subnet yang diperlukan agar VPN dapat digunakan.
sumber
Saya menginginkan 'aplikasi' asli yang dapat saya jalankan saat masuk (dan terus berjalan / tersembunyi) untuk mengaktifkan perutean Split Tunnel, mirip dengan fungsi Locamatic . Mungkin saya akan bercabang Locamatic di beberapa titik dan bermain dengannya. Saya juga dapat mengunggah AppleScript ini ke Github. Saya tidak ingin dipusingkan dengan dasmon seperti yang disarankan oleh jawaban ini .
Skrip ini menganggap VPN memiliki
VPN (Cisco IPSec)
nama default dan rute VPN adalah10.10.10.1/22
>10.10.20.10
. Ini perlu diubah / rute tambahan ditambahkan. Jalankan terminal>netstat -rn
ketika VPN terhubung (sebelum mengaktifkan skrip ini) untuk melihat rute yang ditambahkan VPN.Script ini juga menghasilkan notifikasi gaya growl di Notification Center :)
Aku berlari ke dalam beberapa masalah dengan Mark E. Haase 's jawaban sebagai saya memodifikasi Cisco VPN gateway yang ada dari
UCSc
keUGScI
(en0 interface tertentu) rute dan menambahkan gateway VPN sebagaiUCS
rute, mengharuskan penghapusan dua gateway default dan menambahkan kembaliUGSc
gateway default asliSyukurlah untuk StackExchange / google, ini adalah AppleScript pertama saya dan saya tidak akan bisa menyatukannya tanpa googling beberapa jam.
Saran / koreksi / optimasi diterima!
AppleScript ( GitHubGist ):
simpan sebagai aplikasi:
klik kanan> tampilkan isi paket, tambahkan yang berikut ke info.plist (ini menyembunyikan ikon aplikasi dari dock, mengharuskan penggunaan Activity Monitor atau terminal>
pkill -f 'Split Tunnel'
untuk keluar dari aplikasi, hilangkan jika Anda INGIN ikon dock:buat file satu-baris baru
routeNOPASSWD
(tanpa ekstensi) menggunakan kode berikut PERSIS (ini dapat mencegah akses sudo jika dilakukan secara tidak benar, googlevisudo
untuk info lebih lanjut - ini memungkinkan perintah sudo di AppleScript dijalankan TANPA prompt kata sandi, hilangkan jika Anda INGIN prompt kata sandi ketika tabel routing perlu diubah):salin file ini ke
/etc/sudoers.d
jalankan perintah berikut di terminal (perintah kedua akan meminta kata sandi - ini memungkinkan
sudo route
perintah dalam AppleScript untuk dijalankan TANPA meminta kata sandi, hilangkan jika prompt kata sandi diinginkan ketika skrip mengubah tabel routing)akhirnya tambahkan aplikasi ke System Prefs> Users and Groups> item login
sumber
Anda harus dapat bertanya kepada administrator perute yang Anda sambungkan untuk mengatur "grup" terpisah yang memisahkan tunneling dan memberi Anda file PCF yang berisi nama grup dan kata sandi grup untuk grup itu.
sumber
Saya memiliki masalah yang sama dan berhasil berkat @mehaase ini
Setelah membuat
~/vpn.sh
seperti yang dijawab oleh @mehaase Anda dapat memasukkan ini ke dalam skrip automator aplikasi yang dapat dijalankan menggunakan langkah-langkah ini:do shell script "sudo ~/vpn.sh" with administrator privileges
Anda mungkin juga perlu menjalankan
chmod 700 ~/vpn.sh
dari Terminal untuk memberikan skrip eksekusi hak istimewa.Setelah terhubung ke VPN, Anda cukup menjalankan skrip aplikasi ini. Masukkan kata sandi admin Anda dan klik ok - Selesai. :)
sumber