Cara memuat ulang tabel routing Mac OSX default tanpa me-reboot

71

Salam pembuka,

Saya menggunakan vpncuntuk klien VPN. Saya juga melakukan beberapa hal rumit dengan routememastikan saya masih dapat mengakses jaringan lokal saya, dll. (Keterangan di sini tidak terlalu penting).

Kadang-kadang saya mendapatkan tabel routing sehingga saya mendapatkan ping: sendto: Network is unreachableurl yang seharusnya bisa diselesaikan.

Saat ini, jika saya me-restart Mac OS X maka semuanya kembali normal. Apa yang ingin saya lakukan adalah mereset tabel routing ke "default" (mis. Apa yang diatur ke saat boot) tanpa seluruh sistem reboot.

Saya pikir langkah 1 adalah route flush(untuk menghapus semua rute). Dan langkah 2 perlu memuat ulang semua rute default.

Adakah pemikiran tentang bagaimana melakukan ini? (mis. apa langkah 2?)

Sunting Juga, saya melihat gejala lain traceroutejuga gagal pada alamat yang dimaksud. Misalnya:

traceroute the.good.dns.name

traceroute: bind: Can't assign requested address

Nate Murray
sumber

Jawaban:

64

Anda harus menyiram rute. Gunakan rute -n flush beberapa kali. Setelah itu tambahkan rute Anda dengan rute tambah.

Cavver
sumber
1
Saya telah mengubah ini menjadi jawaban yang diterima. Berhasil! Saya lakukan route -n flushbeberapa kali, lalu saya baru saja me-restart jaringan saya melalui preferensi Sistem. Hanya butuh satu tahun bagi saya untuk kembali dan mencari tahu ini :)
Nate Murray
Ini memecahkan masalah yang sama bagi saya dengan klien Aventail Connect VPN Sonicwall yang saya temukan sangat rentan terhadap kegagalan "Tidak dapat menetapkan alamat yang diminta", terutama ketika berpindah jaringan nirkabel. Sekarang saya memiliki cara untuk menyelesaikan yang tidak menghindari siklus daya. Terima kasih!
Alan Donnelly
Wow! Itu juga membantu masalah saya dengan BarracudaVPN ... Saya mematikan / mematikan Wi-Fi, dan akhirnya bisa terhubung lagi! Terima kasih banyak!
hans_meine
19

Saya mengalami masalah ini saat menggunakan server OpenVPN rumah dan menghubungkannya menggunakan aplikasi Tunnelblick di Mac.

Apa yang terjadi pada saya adalah rute dengan IP rumah saya sebagai tujuan dan gateway yang salah mendapatkan sisa setelah memutuskan sambungan dari VPN. Menghapus rute ini dapat menyelesaikan masalah dengan mudah

$ sudo route -n delete the.good.dns.name

Contoh: Saya di sekolah dan setelah boot komputer baru, saya terhubung ke jaringan nirkabel. Saya terhubung ke server OpenVPN rumah saya dengan Tunnelblick.

$ netstat -nr
Destination                   Gateway
....
[home-ip]/32                  [school-default-gateway-1] ....
....

Saya memutuskan koneksi dari server VPN. Saya mengubah jaringan nirkabel. Ini mengubah gateway default saya.

$ netstat -nr
Destination                   Gateway
...
[home-ip]/32                  [school-default-gateway-1] ...
...
$ ping [home-ip]
PING [home-ip]: 56 data bytes
ping: sendto: Network is unreachable
ping: sendto: Network is unreachable
Request timeout for icmp_seq 0
...

Dalam keadaan apa pun saya tidak dapat terhubung ke jaringan rumah saya (VPN, ping, apa pun) setelah ini terjadi. Jika saya menghapus saja rute:

$ sudo route -n delete [home-ip]
delete net [home-ip]
$ ping [home-ip]
PING [home-ip]: 56 data bytes
64 bytes from [home-ip]: icmp_seq=1 ttl=56 time=13.111 ms

Ini bekerja dengan baik.

Mungkin ada masalah dengan bagaimana server / klien OpenVPN dikonfigurasi yang meninggalkan ini (dan saya akan tertarik untuk mencari tahu apa itu), tetapi saya menginstal skrip pasca-putus Tunnelblick yang mengotomatiskan penghapusan rute ini.

Sean
sumber
Saya sebenarnya mengalami masalah serupa di sini. Sangat menyebalkan.
Tom Busby
Saya mengalami masalah yang sama, bahkan dengan contoh script ovpn. Satu-satunya solusi yang saya temukan adalah sama dengan OP, dalam menghapus rute dalam skrip post-disconnect: /
jklp
Apakah ada cara untuk menjalankan skrip ini secara otomatis pada setiap pemutusan?
Whitecat
@ Dipilih Ya! Lihat ini: superuser.com/a/1305361
Elad Nava
13

Pertama, Anda memerlukan rute untuk antarmuka jaringan Anda. Jika VPN terputus maka turunkan antarmuka jaringan Anda dan bawa kembali dengan ifconfig. Kemudian gunakan perintah rute untuk membangun gw default Anda. Jadi sesuatu seperti:

ifconfig en0 down

ifconfig en0 up

route add <ip address> default

Jordan Eunson
sumber
1
Ya, tetapi bagaimana Mac OS X tahu apa alamat ip rute default itu? Yang saya benar-benar ingin lihat adalah bagaimana Mac OS X melakukan proses boot dan melakukan hal yang persis sama.
Nate Murray
1
...? Ia mendapat dari DHCP ...
Jordan Eunson
5

Saya mengalami masalah yang sama dengan @Sean (saya juga menjalankan OS X), ketika saya beralih antara jaringan rumah dan kantor, rute default tidak dihapus.

Untuk kelengkapan, ketika saya terhubung ke VPN saya di rumah dan menjalankan perintah berikut, itu akan menampilkan gateway default seperti di bawah ini

$ netstat -nr
Destination                   Gateway
...
[home-ip]/32                  [work-default-gateway-1]

Dan ketika saya terputus, gateway [home-ip] masih ada di sana. Ketika saya terhubung ke jaringan kerja saya, saya tidak bisa terhubung ke internet sama sekali, dan mengalami masalah yang sama seperti OP

$ traceroute the.good.dns.name    
$ traceroute: bind: Can't assign requested address

Saya kemudian harus secara manual menghapus rute dengan

$ sudo route -n delete [home-ip]

Awalnya saya meletakkan "route -n delete" dalam sebuah post-disconnect.shskrip, tapi itu agak berantakan jadi saya malah menemukan tautan ini

https://code.google.com/p/tunnelblick/issues/detail?id=177

Rupanya alasannya adalah karena pengaturan berikut ini di .ovpnfile saya

user nobody
group nogroup

Yang berarti rute diatur sebagai root, tetapi ketika koneksi dihilangkan pengguna tidak lagi root, sehingga rute tidak dapat dihapus.

Mengomentari 2 baris ini di .ovpnfile saya memperbaiki masalah, tanpa harus menggunakan a post-disconnect.sh.

jklp
sumber
Terima kasih, ini berhasil juga untuk saya. Sangat disayangkan bahwa tautan kode google tidak berfungsi lagi.
Toby
Saya sudah mencoba menggunakan saran Anda, masalahnya adalah ketika saya terhubung ke VPN itu menarik file konfigurasi dari suatu tempat dan menimpa perubahan saya. Itu tidak mendapatkan mereka dari server, sejauh yang saya tahu karena ketika saya mengubah file-file itu tidak memperbaiki masalah. Apakah ada lokasi sisi klien di mana saya dapat menemukan file-file ini dan menghancurkan / memodifikasinya sehingga perubahan saya akan tetap?
Harga Finlandia
Saya membuat kesalahan sepele membingungkan ~ / Library with / Library. Ups! Bagi siapa pun yang membaca ini, Anda ingin memodifikasi file di ~ / Library / Dukungan Aplikasi / Tunnelblick / Konfigurasi / <vpnname> .tblk / Contents / Resources
Harga Finlandia