จะกำหนดเส้นทาง IP ผ่านส่วนต่อประสานเฉพาะใน OS X ได้อย่างไร


40

ฉันใช้ Mac และพยายามกำหนดเส้นทางที่อยู่เฉพาะผ่านเกตเวย์เฉพาะในการเชื่อมต่อ wifi ของฉัน

ฉันกำลังใช้:

route add -host 54.81.143.201 192.168.15.1

บางครั้งมันก็ใช้งานได้ สิ่งที่ฉันพบคืออินเตอร์เฟสที่เลือกแตกต่างกันทุกครั้ง มันต้องการที่จะen0ทำงาน

netstat -nr เอาท์พุทเมื่อมันไม่ทำงาน:

54.81.143.201      192.168.15.1       UGHS            1       89     en5

นี่คือเมื่อมันทำงาน: (note en0)

54.81.143.201      192.168.15.1       UGHS            0        1     en

ทำไมฉันถึงทำเช่นนี้? เนื่องจาก บริษัท ของเรามีพร็อกซีที่ HipChat ไม่ทำงาน ดังนั้นฉันจึงกำหนดเส้นทางปริมาณการใช้ข้อมูล hipchat ผ่านเครือข่าย wifi แบบเปิดในขณะที่ยังคงใช้งานอีเธอร์เน็ตอยู่

แก้ไข:

ฉันพยายามเพิ่มรายการโดยใช้เพียงส่วนต่อประสาน

route add -host 54.81.143.201 -interface en0

54.81.143.201      78:31:c1:c7:52:74  UHS             0        2     en0

HipChat ล้มเหลวในการเชื่อมต่อ

แก้ไข 2: มีคนขอตารางเส้นทางทั้งหมดของฉันนี่คือวันนี้ โปรดทราบว่า 54.81.143.201 ตอนนี้ถูกผูกไว้กับ en3 และไม่ใช่ en0

Internet:
Destination        Gateway            Flags        Refs      Use   Netif Expire
default            10.7.90.1          UGSc           31        6     en3
10.7.90/24         link#4             UCS             4        0     en3
10.7.90.1          0:23:ac:3d:db:c2   UHLWIir        16        0     en3   1200
10.7.90.44         40:6c:8f:19:4a:bb  UHLWI           0        3     en3    946
10.7.90.63         127.0.0.1          UHS             0        0     lo0
54.81.143.201      192.168.15.1       UGHS            0        0     en3
127                127.0.0.1          UCS             0        0     lo0
127.0.0.1          127.0.0.1          UH              3      209     lo0
169.254            link#4             UCS             1        0     en3
169.254.255.255    0:23:ac:3d:db:c2   UHLSW           0        0     en3

โพสต์ตารางเส้นทางทั้งหมดสำหรับกรณีที่มันไม่ทำงาน สามารถเข้าถึง 192.168.15.1 ผ่าน en5 หรือไม่ ถ้าเป็นเช่นนั้นทำไมมันไม่ทำงาน ถ้าไม่เป็นเรื่องยากที่จะดูว่ามีการเพิ่มเส้นทางนั้นอย่างไร
David Schwartz

@ DavidSchwartz นั่นเป็นสิ่งที่น่าสนใจสำหรับฉัน 192.168.15.1 ไม่สามารถเข้าถึงได้ผ่าน en5 สิ่งนี้ทำงานเมื่อได้รับมอบหมายให้ en0 อย่างถูกต้อง
Sean256

แสดงตารางเส้นทางหรือการกำหนดค่าของ en5 ต้องมีเหตุผลบางอย่างที่เส้นทางกำลังติดตั้งในลักษณะนั้นและนั่นอาจเป็นปัญหาจริง
David Schwartz

@DavidSchwartz ไม่ใช่ en5 เสมอบางครั้งก็เป็น en3 ฉันกำลังโพสต์ตารางเส้นทางทั้งหมดของฉันตอนนี้
Sean256

ในตารางเส้นทางที่คุณแสดงให้เห็นen3ว่าถูกต้องชัดเจน 192.168.15.1 ไม่สามารถเข้าถึงได้ผ่านอินเทอร์เฟซอื่น ๆ วิธีเดียวในการเข้าถึง 192.168.15.1 ในตารางเส้นทางนั้นคือผ่านเส้นทางเริ่มต้นใช่ไหม (โดยตรงไปตรงมาดูเหมือนว่าคุณไม่รู้ว่าคุณกำลังทำอะไรอยู่ดูเหมือนว่าคุณประหลาดใจที่ระบบไม่สามารถทำสิ่งที่เป็นไปไม่ได้)
David Schwartz

คำตอบ:


34

ลอง:

route add -host 54.81.143.201 -interface en0

2
นี่คือสิ่งที่ฉันได้รับเมื่อฉันลองทำเช่นนั้น: เส้นทาง: ที่อยู่ไม่ดี: en0
Sean256

ขออภัยฉันไม่มี Mac เพื่อทดสอบสิ่งนี้ ดูเหมือนว่าไวยากรณ์ผิด ฉันแก้ไขคำตอบ กรุณาลองอีกครั้ง.
drk.com.ar

1
สิ่งเดียวกันที่น่าเศร้า -> เส้นทาง: ที่อยู่ไม่ดี: en0
Sean256

ลองอีกครั้ง. ครั้งนี้ฉันลบเกตเวย์ นอกจากนี้คุณสามารถเพิ่มเอาต์พุต ifconfig ให้กับคำถามของคุณเพื่อดูการกำหนดค่า IP ที่เกี่ยวข้องได้หรือไม่
drk.com.ar

ฉันเพิ่งลอง (จริง ๆ แล้วฉันเคยมีมาก่อน) และมันเพิ่มรายการในตารางของฉันมันไม่ได้แก้ปัญหา HipChat ล้มเหลวในการเชื่อมต่อ นี่คือรายการในตารางเส้นทางเมื่อทำแบบนั้น -> 54.81.143.201 78: 31: c1: c7: 52: 74 UHS 0 2 en0
Sean256

3

ตามที่คนอื่นระบุนี่เป็นปัญหา 3 ประการ

  1. ดูเหมือนว่าอินเตอร์เฟสไร้สายของคุณจะเปลี่ยนระหว่าง en0, en3 และ en5

    บน MacBook Air ของฉัน en0 จะไร้สายเสมอ Thunderbolt-to-Ethernet เสมอ en3 และ USB-to-Ethernet นั้น en5 เสมอ แต่ถ้าคุณเสียบอะแดปเตอร์เข้ากับพอร์ตอื่นบน Mac ของคุณชื่อ NIC จะเปลี่ยนไป คุณต้องแก้ปัญหานี้ก่อน ตรวจสอบให้แน่ใจว่าเครือข่ายไร้สายของคุณมีชื่อเดียวกันเสมอ มิฉะนั้นเมื่อคุณป้อนคำสั่งเส้นทางแบบคงที่หากไม่มีการเสียบ NIC กับen0ตำแหน่งคำสั่งจะ (เห็นได้ชัด) ล้มเหลวด้วย "ข้อผิดพลาดที่อยู่" (ที่อยู่ทางกายภาพไม่มีลิงก์)

    ตรวจสอบให้แน่ใจว่าอแด็ปเตอร์นั้นเชื่อมต่อกับ SSID เดียวกันเสมอ ที่อยู่เกตเวย์ต้องมีความถูกต้องสำหรับซับเน็ตและเครือข่าย WiFi ที่แตกต่างกันจะมีซับเน็ตต่างกัน นี่อาจทำให้เกิดข้อผิดพลาดประเภทอื่น

    คุณไม่ได้ระบุว่าไร้สายเป็นการเชื่อมต่อเครือข่ายของคุณเท่านั้น จากที่กล่าวมาข้างต้นฉันเดาว่าไม่ ... สิ่งนี้และระบบเครือข่ายเสมือนจริงเนื่องจาก VMware หรือ Parallels อาจทำให้เกิดความซับซ้อนเพิ่มเติม (ตัวอย่างเช่นหากทั้งสองเครือข่ายที่เชื่อมต่อใช้พื้นที่ IP เดียวกัน ... เครื่องเสมือนมักจะเชื่อมต่อและมี IP / เส้นทาง / ลิงค์ของตัวเอง ... ) การโพสต์ทอพอโลยีเครือข่ายจะช่วยได้

  2. หลังจากที่ทำลองอย่างใดอย่างหนึ่งหรือsudo route add -host 54.81.143.201 -iface en0 sudo ipfwหากคุณไม่แน่ใจเกี่ยวกับชื่อของอะแดปเตอร์คุณสามารถระบุที่อยู่ MAC แทนเช่นนี้:sudo route add -host 54.81.143.201 -link 14:10:9f:e7:fd:0a

    ที่เกี่ยวข้อง: https://discussions.apple.com/thread/5049994?searchText=policy%20route

  3. หากคุณรีบูตสิ่งนี้อาจไม่คงอยู่ คุณจะต้องจัดการแยกต่างหาก



2

ฉันสามารถเพิ่มเส้นทางข้ามส่วนต่อประสานโดยใช้-linkตัวเลือกเพื่อระบุที่อยู่ MAC

route add -host 54.81.143.201 -link [mac addr of 192.168.15.1 on en0]

ที่จะส่งทราฟฟิก54.81.143.201ออกจากอินเตอร์เฟสที่เหมาะสม

คุณมี192.168.15.*ที่อยู่โฮสต์ที่แยกกันสองที่กำหนดไว้หนึ่งที่สำหรับแต่ละอินเตอร์เฟสใช่ไหม มิฉะนั้นคุณสามารถส่งทราฟฟิกจากอินเตอร์เฟสใดก็ได้ แต่ทราฟฟิกจะกลับมาที่ IP ต้นทางใดที่แพ็กเก็ตมี


ดังนั้นฉันจึงลองสิ่งที่คุณแนะนำโดยใช้ mac addr และตารางเส้นทางของฉันแสดงรายการสำหรับ en3 และไม่ใช่ en0 -> 54.81.143.201 00: 1d.88.4a.21.da UGHS 0 0 en3
Sean256

เมื่อคุณทำ 'arp -an' คุณมีรายการอะไร ...
Nevin Williams

2

วิธีนี้ใช้ได้กับ MacOS 10.12 (Sierra) รุ่นล่าสุด นี่คือสรุปสาระสำคัญ

#!/bin/bash

# NOTE: wifi network interface is: en1
wifi_router=192.168.200.1
wifi_address=en1:ec.35.86.4f.00.cc
TOADDR=`ifconfig en1 inet | sed -nl 's/\w*inet \([^ ]*\).*/\1/p'`
TO=`echo -n ${TOADDR//[[:space:]]}`

echo "ADDING ROUTE TO $1 VIA en1 (wi-fi): $TO"
route -n add -host $1 $wifi_router -ifp $wifi_address -ifa $TO -static

echo ""
echo "ROUTE ADDED:"
route get $1

ใช้แบบนี้:

> sudo ./route_wifi.sh IP_ADDRESS

ก็ถือว่าเป็นอินเตอร์เฟซ WiFi: en1

อย่าลืมที่จะนำค่าที่ถูกต้องสำหรับwifi_routerและwifi_addressตัวแปร หมายเหตุwifi_addressรูปแบบซึ่งเป็น: ชื่อเครือข่ายอินเตอร์เฟซ ' : ' อินเตอร์เฟซที่อยู่ mac กับ' ' ตัวคั่น แน่ใจว่าข้อมูลที่ต้องการส่วนใหญ่สามารถแยกวิเคราะห์ออกจากคำสั่งifconfigแต่ฉันก็ขี้เกียจเกินไปสำหรับ =)


ยินดีต้อนรับสู่ Superuser กรุณาพยายามที่จะมีข้อมูลที่เกี่ยวข้องมากที่สุดจากลิงค์ในโพสต์ของคุณ อ่านข้อมูลเพิ่มเติมเกี่ยวกับเรื่องนี้ที่นี่
โฟมบิน

1

ระบบปฏิบัติการ X routeคำสั่งเป็นเอกสารที่นี่ -ifscopeพารามิเตอร์และค่าที่ช่วยให้คุณสามารถระบุเส้นทางอินเตอร์เฟซที่ถูกผูกไว้

อย่างไรก็ตามนี่ไม่ใช่สิ่งที่คุณต้องการ คุณต้องแก้ไขเครือข่ายของคุณเพื่อให้ช่วง IP ของพวกเขาไม่เหมือนใคร นอกเหนือจากนั้นการวัดส่วนต่อประสาน (หรือลำดับความสำคัญ aka) มีผลต่อการเลือกส่วนต่อประสานที่เลือกจากตัวเลือกโอกาสที่เท่าเทียมกัน


-1

ดังนั้นเซิร์ฟเวอร์ผู้ขายที่คุณพยายามพูดคุยเกี่ยวกับบริการ "HipChat" ที่คุณอ้างถึงคือ 54.81.143.201? ในกรณีนี้ฉันจะสร้างรายการเส้นทางสำหรับ 54.81.143.0 255.255.255.0 เพื่อให้มีช่วงที่ใหญ่กว่า บางทีเมื่อใช้ซอฟต์แวร์คุณอาจไม่ได้พูดคุยกับเซิร์ฟเวอร์นี้เสมอไป แต่เป็นกลุ่มของพวกเขาในซับเน็ตเดียวกัน 54.81.143.0/24 นอกจากนี้ตรวจสอบให้แน่ใจว่าตัวชี้วัดเส้นทางของคุณถูกต้องเมื่อสร้างรายการใหม่ หากคุณสร้างเส้นทางไปที่ 54.81.143.0/24 192.168.15.1 Metric 20 En5 แต่ยังมีเส้นทางไปยัง 0.0.0.0/0 10.7.90.1 Metric 10 En0 คอมพิวเตอร์จะเพิกเฉยต่อรายการใหม่ของคุณและดำเนินการกำหนดเส้นทางการจราจรผ่านเส้นทางเริ่มต้น (ผ่าน En0) เนื่องจากเป็นที่นิยมมากกว่า ฉันเพิ่งพายผ่านนี้และต้องการที่จะชี้ให้เห็นว่า ไชโย!


-1

คุณควรลองเพิ่มชื่อ NIC:

route add -net 10.13.0.0 netmask 255.255.0.0 dev NicNameHere

สิ่งนี้ใช้ได้กับฉันใน CentOS


ฉันได้รับ -> เส้นทาง: ที่อยู่ไม่ดี: dev
Sean256
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.