วิธีโหลดตารางเส้นทาง Mac OSX เริ่มต้นใหม่โดยไม่ต้องรีบูตเครื่อง


71

ทักทาย,

ฉันกำลังใช้vpncสำหรับไคลเอนต์ VPN ฉันยังทำสิ่งที่ยุ่งยากบางอย่างด้วยrouteเพื่อให้แน่ใจว่าฉันยังสามารถเข้าถึงเครือข่ายท้องถิ่น ฯลฯ ได้ (รายการที่นี่ไม่สำคัญมาก)

บางครั้งฉันก็รับตารางเส้นทางเพื่อให้แจ็คขึ้นping: sendto: Network is unreachableเพื่อรับURL ที่ควรแก้ไข

ปัจจุบันถ้าฉันรีสตาร์ท Mac OS X ทุกอย่างกลับมาเป็นปกติ สิ่งที่ฉันต้องการจะทำคือรีเซ็ตตารางเส้นทางไปสู่ ​​"ค่าเริ่มต้น" (เช่นสิ่งที่มันถูกกำหนดเป็นตอนบูต) โดยไม่ต้องรีบูตระบบทั้งหมด

ฉันคิดว่าขั้นตอนที่ 1 คือroute flush(เพื่อลบเส้นทางทั้งหมด) และขั้นตอนที่ 2 จำเป็นต้องโหลดเส้นทางเริ่มต้นทั้งหมดใหม่อีกครั้ง

มีความคิดเกี่ยวกับวิธีการทำเช่นนี้หรือไม่? (เช่นขั้นตอนที่ 2 คืออะไร)

แก้ไข นอกจากนี้ฉันสังเกตเห็นอาการอื่นtracerouteก็ล้มเหลวในที่อยู่ในคำถาม ตัวอย่างเช่น

traceroute the.good.dns.name

traceroute: bind: Can't assign requested address

คำตอบ:


64

คุณต้องล้างเส้นทาง ใช้เส้นทาง -n flushหลายครั้ง หลังจากนั้นเพิ่มเส้นทางของคุณด้วยการเพิ่มเส้นทาง


1
ฉันเปลี่ยนสิ่งนี้เป็นคำตอบที่ยอมรับแล้ว มันได้ผล! ฉันทำroute -n flushหลายครั้งแล้วฉันเพิ่งเริ่มระบบเครือข่ายใหม่ผ่านการตั้งค่าระบบ ฉันใช้เวลาหนึ่งปีในการกลับมาและคิดออก :)
เนทเมอเรย์

สิ่งนี้แก้ไขปัญหาที่คล้ายกันสำหรับฉันด้วยไคลเอนต์ Aventail Connect VPN ของ Sonicwall ซึ่งฉันพบว่ามีความล้มเหลว "ไม่สามารถกำหนดที่อยู่ที่ร้องขอ" โดยเฉพาะอย่างยิ่งเมื่อเปลี่ยนเครือข่ายไร้สาย ตอนนี้ฉันมีวิธีการแก้ไขที่ไม่ได้หลีกเลี่ยงวงจรพลังงาน ขอบคุณ!
Alan Donnelly

ว้าว! มันช่วยด้วยปัญหาของฉันกับ BarracudaVPN ... ฉันเปิด / ปิด Wi-Fi และในที่สุดก็สามารถเชื่อมต่อได้อีกครั้ง! ขอบคุณมาก!
hans_meine

19

ฉันพบปัญหานี้ในขณะที่ใช้เซิร์ฟเวอร์ OpenVPN ในบ้านและเชื่อมต่อกับมันโดยใช้แอปพลิเคชั่น Tunnelblick บน Mac

สิ่งที่เกิดขึ้นในตอนท้ายของฉันคือเส้นทางที่มี IP บ้านของฉันเป็นปลายทางและเกตเวย์ที่ไม่ถูกต้องได้รับส่วนที่เหลือหลังจากตัดการเชื่อมต่อจาก VPN การลบเส้นทางนี้แก้ไขปัญหาได้ง่ายๆ

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

ตัวอย่าง: ฉันอยู่ที่โรงเรียนและหลังจากบูตคอมพิวเตอร์ใหม่ฉันเชื่อมต่อกับเครือข่ายไร้สาย ฉันเชื่อมต่อกับเซิร์ฟเวอร์ OpenVPN ที่บ้านด้วย Tunnelblick

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

ฉันตัดการเชื่อมต่อจากเซิร์ฟเวอร์ VPN ฉันเปลี่ยนเครือข่ายไร้สาย นี่เป็นการเปลี่ยนแปลงเกตเวย์เริ่มต้นของฉัน

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

ฉันไม่สามารถเชื่อมต่อกับเครือข่ายในบ้านของฉัน (VPN, ping, อะไรก็ได้) หลังจากเหตุการณ์นี้เกิดขึ้น ถ้าฉันเพียงแค่ลบเส้นทาง:

$ 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

มันใช้งานได้ดี

อาจมีปัญหากับการกำหนดค่าเซิร์ฟเวอร์ / ไคลเอนต์ OpenVPN ซึ่งปล่อยให้สิ่งนี้ (และฉันสนใจที่จะค้นหาว่ามันคืออะไร) แต่ฉันติดตั้ง Tunnelblick post-disconnect script ที่ทำการลบเส้นทางนี้โดยอัตโนมัติ


ที่จริงฉันมีปัญหาคล้ายกันที่นี่ น่ารำคาญจริงๆ
Tom Busby

ฉันพบปัญหาเดียวกันแม้ตัวอย่างสคริปต์ ovpn วิธีแก้ปัญหาเดียวที่ฉันพบคือเหมือนกับ OP ในการลบเส้นทางในสคริปต์การยกเลิกการเชื่อมต่อ: /
jklp

มีวิธีในการเรียกใช้สคริปต์นี้ในทุกการตัดการเชื่อมต่อหรือไม่
Whitecat

@ Whitecat ใช่! ลองดูสิ: superuser.com/a/1305361
Elad Nava

13

ก่อนอื่นคุณต้องมีเส้นทางสำหรับอินเทอร์เฟซเครือข่ายของคุณ หาก VPN ถูกตัดการเชื่อมต่อให้ถอดอินเทอร์เฟซเครือข่ายของคุณแล้วนำมาสำรองด้วย ifconfig จากนั้นใช้เส้นทางคำสั่งเพื่อสร้างใน gw เริ่มต้นของคุณ ดังนั้นสิ่งที่ชอบ:

ifconfig en0 down

ifconfig en0 up

route add <ip address> default


1
ใช่ แต่ Mac OS X รู้ได้อย่างไรว่าที่อยู่ IP ของเส้นทางเริ่มต้นคืออะไร สิ่งที่ฉันอยากเห็นคือวิธีที่ Mac OS X ทำกระบวนการบู๊ตและทำสิ่งเดียวกัน
Nate Murray

1
... ? จะได้รับจาก DHCP ...
จอร์แดน Eunson

5

ฉันพบปัญหาเช่นเดียวกับ @Sean (ฉันกำลังเรียกใช้ OS X ด้วย) เมื่อฉันสลับระหว่างเครือข่ายที่บ้านและที่ทำงานเส้นทางเริ่มต้นจะไม่ถูกลบ

เพื่อความสมบูรณ์เมื่อฉันเชื่อมต่อกับ VPN ที่บ้านและใช้คำสั่งต่อไปนี้ก็จะแสดงเกตเวย์เริ่มต้นดังต่อไปนี้

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

และเมื่อฉันตัดการเชื่อมต่อเกตเวย์ [home-ip] จะยังคงอยู่ที่นั่น เมื่อฉันเชื่อมต่อกับเครือข่ายงานของฉันฉันไม่สามารถเชื่อมต่ออินเทอร์เน็ตได้เลยและพบปัญหาเดียวกันกับ OP

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

ฉันต้องลบเส้นทางด้วยตนเอง

$ sudo route -n delete [home-ip]

เริ่มแรกฉันใส่ "route -n delete" ในpost-disconnect.shสคริปต์ แต่นั่นก็ยุ่งเล็กน้อยดังนั้นแทนที่จะพบลิงค์นี้

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

เห็นได้ชัดว่าสาเหตุเกิดจากการตั้งค่าต่อไปนี้ใน.ovpnไฟล์ของฉัน

user nobody
group nogroup

ซึ่งหมายความว่าเส้นทางถูกตั้งค่าเป็นรูท แต่เมื่อการเชื่อมต่อถูกลบผู้ใช้จะไม่รูทอีกต่อไปดังนั้นจึงไม่สามารถลบเส้นทางได้

ความเห็นทั้ง 2 เส้นในของฉันไฟล์แก้ไขปัญหาโดยไม่ต้องใช้ .ovpnpost-disconnect.sh


ขอบคุณมันใช้งานได้สำหรับฉันเช่นกัน มันเป็นเรื่องโชคร้ายที่ลิงค์รหัส google ไม่ทำงานอีกต่อไป
Toby

ฉันได้ลองใช้ข้อเสนอแนะของคุณปัญหาคือเมื่อฉันเชื่อมต่อกับ VPN มันจะดึงไฟล์ปรับแต่งจากที่อื่นและเขียนทับการเปลี่ยนแปลงของฉัน มันไม่ได้มาจากเซิร์ฟเวอร์เท่าที่ฉันสามารถบอกได้เพราะเมื่อฉันเปลี่ยนไฟล์เหล่านั้นมันก็ไม่สามารถแก้ปัญหาได้ มีตำแหน่งฝั่งไคลเอ็นต์บางส่วนที่ฉันสามารถค้นหาไฟล์เหล่านี้และทำลาย / แก้ไขเพื่อให้การเปลี่ยนแปลงของฉันจะติดอยู่หรือไม่?
ราคาฟินแลนด์

ฉันทำข้อผิดพลาดเล็กน้อยของการสับสน ~ / Library กับ / Library อ๊ะ! สำหรับทุกคนที่อ่านข้อความนี้คุณต้องการแก้ไขไฟล์ใน ~ / Library / Application Support / Tunnelblick / Configurations / <vpnname> .tblk / เนื้อหา / ทรัพยากร
ราคา Finncent
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.