การกำหนดเส้นทาง WIFI และ LAN สำหรับการรับส่งข้อมูลเฉพาะ


12

ฉันมีอุปกรณ์เครือข่ายสองเครื่องบน macbook pro:

  1. WiFi (en1): ใช้สำหรับการจราจรทั่วไป เชื่อมต่อกับ ip ของ 192.168.19. * ผ่าน DHCP
  2. LAN (en0): ใช้สำหรับการรับส่งข้อมูลเฉพาะ เชื่อมต่อกับ ip ที่ 192.168.2.10 เป็น IP แบบคงที่ ไม่เชื่อมต่อกับเราเตอร์เพียงสวิตช์สำหรับการเชื่อมต่อเส้นทางโดยตรง

ฉันมี 4 ที่อยู่ IP ที่ฉันต้องการเข้าถึงบน LAN:

  1. 192.168.2.1
  2. 192.168.2.21
  3. 192.168.2.20
  4. 192.168.2.30

การจราจรที่เหลือต้องไปที่ WIFI ฉันได้ลองตั้งค่าตารางเส้นทางสำหรับที่อยู่ IP เฉพาะ แต่ฉันจัดการเพื่อทำให้เครือข่ายของฉันสับสนเท่านั้น ฉันไม่กล้าเข้าไปในโลกของเครือข่ายบ่อยเกินไป แต่นี่เป็นคำสั่งล่าสุดที่ฉันได้ลอง:

sudo route add -host 192.168.2.30 -interface en0

คำสั่งนี้ทำให้ฉันไม่สามารถใช้ ping ได้ มันบอกฉันว่า ping ไม่สามารถจัดสรรหน่วยความจำได้ มันยังฆ่าการเข้าถึง wifi ของฉัน การออกจากระบบและกลับมาแก้ไขปัญหา ฉันไม่รังเกียจที่จะทำให้โซลูชันนี้เป็นแบบถาวรดังนั้นฉันสบายดีกับการกำหนดเส้นทางชั่วคราว

แก้ไข:

หากฉันพยายามแล้ว:

sudo route flush
sudo route add default 192.168.19.1

สิ่งนี้ทำให้ทุกอย่างทำงานได้ประมาณหนึ่งนาที แต่หลังจากนาทีดังกล่าวมัน "ลืม" การกำหนดเส้นทางไปยัง WiFi ในขณะที่รักษาเส้นทางของ LAN (en0) ถ้าฉันถอดและถอดสายเคเบิล LAN (en0) ของฉันกระบวนการจะทำงานอีกหนึ่งนาที

แก้ไข 2:

คำสั่งเหล่านี้ถูกป้อนเป็นคำขอโดย d34dh0r53

$ netstat -rn
Routing tables

Internet:
Destination        Gateway            Flags        Refs      Use   Netif Expire
default            192.168.2.1        UGSc            4        0     en0
default            192.168.19.1       UGScI           0        0     en1
127                127.0.0.1          UCS             0        1     lo0
127.0.0.1          127.0.0.1          UH              5  1429023     lo0
169.254            link#4             UCS             0        0     en0
192.168.2          link#4             UCS             4        0     en0
192.168.2.1        0:27:22:2e:5f:1a   UHLWIi          2        0     en0   1199
192.168.2.10       127.0.0.1          UHS             0        0     lo0
192.168.2.30       90:a2:da:0:f5:63   UHLWIi          1     1433     en0   1191
192.168.2.255      ff:ff:ff:ff:ff:ff  UHLWbI          0        7     en0
192.168.19         link#5             UCS             2        0     en1
192.168.19.1       3e:d0:f8:aa:28:56  UHLWIi          0        2     en1   1192
192.168.19.3       127.0.0.1          UHS             1        0     lo0
192.168.19.255     ff:ff:ff:ff:ff:ff  UHLWbI          0        5     en1

Internet6:
Destination                             Gateway                         Flags         Netif Expire
::1                                     link#1                          UHL             lo0
fe80::%lo0/64                           fe80::1%lo0                     UcI             lo0
fe80::1%lo0                             link#1                          UHLI            lo0
fe80::%en0/64                           link#4                          UCI             en0
fe80::226:4aff:fe00:b68a%en0            0:26:4a:0:b6:8a                 UHLI            lo0
fe80::%en1/64                           link#5                          UCI             en1
fe80::226:bbff:fe03:cbd%en1             0:26:bb:3:c:bd                  UHLI            lo0
ff01::%lo0/32                           fe80::1%lo0                     UmCI            lo0
ff01::%en0/32                           link#4                          UmCI            en0
ff01::%en1/32                           link#5                          UmCI            en1
ff02::%lo0/32                           fe80::1%lo0                     UmCI            lo0
ff02::%en0/32                           link#4                          UmCI            en0
ff02::%en1/32                           link#5                          UmCI            en1
$ traceroute -n 192.168.2.1
traceroute to 192.168.2.1 (192.168.2.1), 64 hops max, 52 byte packets
 1  192.168.2.1  2.499 ms  3.392 ms  3.829 ms
$ traceroute -n google.com
traceroute: unknown host google.com

ระบบปฏิบัติการรองรับการกำหนดเส้นทางไม่ใช่ฮาร์ดแวร์
— Ignacio Vazquez-Abrams

ทุกอย่างเป็น 192.168.2.X บน LAN หรือไม่ ถ้าเป็นเช่นนั้นนั่นจะทำให้การแก้ปัญหาง่ายขึ้นมาก
— LawrenceC

@ultrasawblade ใช่ทุกอย่างในเครือข่ายนั้นคือ 192.168.2. *
— jakebird451

คำตอบ:


11

คุณไม่จำเป็นต้องสร้างกฎการกำหนดเส้นทางด้วยตัวเองสำหรับการกำหนดค่านั้นหากที่อยู่ 192.168.2.x ทั้งหมดที่คุณต้องการสื่อสารด้วยนั้นมีการเชื่อมต่อกับที่อยู่ 192.168.2.x

  1. ไปที่การตั้งค่าระบบ -> เครือข่าย
  2. เลือกอุปกรณ์อีเธอร์เน็ตของคุณตรวจสอบให้แน่ใจว่า "กำหนดค่า IPv4" ถูกตั้งค่าเป็น "ด้วยตนเอง" ว่าหน้ากากเครือข่ายย่อยของคุณถูกตั้งค่าเป็น 255.255.255.0 และกล่องเราเตอร์ว่างเปล่า

เมื่อทำสิ่งนี้เสร็จแล้วnetstat -rnก็ควรจะแสดงเส้นทางสำหรับทั้งสองซับเน็ต แต่จะมีเพียงเส้นทาง "ลิงค์ # 4" แทนเส้นทางเริ่มต้นผ่าน 192.168.2.1

หากคุณไม่ต้องการเส้นทางเริ่มต้นให้ปล่อยเราเตอร์ว่างไว้ ค่าในกล่องเราเตอร์ใช้เพื่อตั้งค่าเส้นทางเริ่มต้นผ่านอินเทอร์เฟซเครือข่ายนี้เท่านั้นและไม่ได้ใช้กับสิ่งอื่นใด


ขอบคุณ! นั่นมัน! ฉันตั้งค่าทุกอย่างถูกต้องยกเว้นในฟิลด์เราเตอร์ ฉันใส่ที่อยู่ IP 192.168.2.1ในฟิลด์เราเตอร์เพื่อจับคู่ "เราเตอร์" ที่ด้าน LAN ฉันคิดว่ามันจำเป็น แต่ตอนนี้ฉันเห็นแล้วว่าใช้เส้นทางเริ่มต้นสำหรับการจราจรทั่วไป
— jakebird451

ขอบคุณสำหรับสิ่งนี้! มีปัญหาเดียวกันและทำงานให้ฉันได้อย่างสมบูรณ์แบบ
— BaronVonKaneHoffen

4

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

การแก้ปัญหาคือการลบเส้นทางที่ดีกว่าอย่างถาวรจากตารางเส้นทางเพื่อให้การจราจรที่ถูกลิขิตให้ครอบครัวอื่น ๆ กว่าผู้ที่อยู่ในเครือข่ายท้องถิ่นของคุณลัดเลาะเกตเวย์เริ่มต้นที่จัดตั้งขึ้นโดย DHCP en1บน สิ่งแรกที่ฉันจะตรวจสอบคือในแผงการกำหนดค่าเพื่อen0ให้แน่ใจว่าคุณไม่ได้ป้อนอะไรในrouterฟิลด์ ข้อมูลในฟิลด์นั้นถูกเพิ่มเป็นเกตเวย์เริ่มต้น หากวิธีนี้ไม่ได้ผลเราจำเป็นต้องลบเส้นทางด้วยตนเองเหตุผลที่route flushไม่สามารถใช้งานได้คือฉันเชื่อว่ามันบอกให้ OS X โหลดข้อมูลการกำหนดเส้นทางจากไฟล์กำหนดค่าอินเทอร์เฟซจากนั้นจึงคืนค่าการเปลี่ยนแปลงของคุณ คำสั่งต่อไปนี้ควรลบเส้นทางเริ่มต้นสำหรับen0 อินเตอร์เฟสจนกระทั่งเริ่มระบบเครือข่ายใหม่หรือระบบเป็น IPLed:

sudo route delete -net 0.0.0.0 192.168.2.1

หากคุณต้องการทำการเปลี่ยนแปลงนี้ถาวรคุณสามารถก) สร้างบริการ/Library/StartupItemsที่ดูเหมือนว่าจะทำงานกับฉันมากเกินไปหรือ b) เพิ่มบรรทัดนั้น/etc/rc.localด้วยคำสั่งเช่น:

echo 'route delete -net 0.0.0.0 192.168.2.1' >> /etc/rc.local

คุณอาจต้องเพิ่มsleep <number_of_seconds>คำสั่งก่อนบรรทัดนั้น/etc/rc.localเพื่อหลีกเลี่ยงการรันคำสั่งก่อนที่อินเทอร์เฟซจะเต็มและตารางเส้นทางที่จัดตั้งขึ้น

หวังว่านี่จะช่วยและขอให้โชคดี!


ขอบคุณสำหรับการตอบกลับที่ยาวนาน เส้นทางเริ่มต้นไปที่192.168.2.1เป็นปัญหา แต่ @rakslice พบว่าฉันทำผิดพลาดขณะป้อนข้อมูลการเราต์สำหรับการเชื่อมต่อ en0 ฉันใส่ที่อยู่ IP 192.168.2.1ในฟิลด์เราเตอร์เพื่อให้เชื่อว่าจำเป็น หลังจากลบ IP 192.168.2.1เราเตอร์เริ่มต้นผมยังออกเส้นทางเริ่มต้นที่ดีที่จะ ขอขอบคุณอีกครั้งสำหรับความช่วยเหลือของคุณ
— jakebird451

1
ชนิดของ bummed ที่ฉันไม่ได้รับรางวัล: "สิ่งแรกที่ฉันจะตรวจสอบอยู่ในแผงการกำหนดค่าสำหรับ en0 ตรวจสอบให้แน่ใจว่าคุณไม่ได้ป้อนอะไรในฟิลด์เราเตอร์ข้อมูลในฟิลด์นั้นจะถูกเพิ่มเป็นเกตเวย์เริ่มต้น " แต่ท้ายที่สุดก็ดีใจที่คุณได้ทำงาน
— d34dh0r53

0

คุณต้องการตั้งค่า IP Wifi ของคุณเป็นเกตเวย์เริ่มต้นของคุณและลบเกตเวย์เริ่มต้นใด ๆ (หรือเส้นทางไปที่ 0.0.0.0) เชื่อมต่อกับ LAN หรือ 192.168.2.0/24

แน่นอนว่าง่ายกว่าถ้าคุณสามารถตั้งค่า en1 เป็น IP แบบคงที่ซึ่งจะทำงานกับ wifi ได้

คุณอาจต้องเพิ่ม 192.168.2.10 เป็นเส้นทางไปยังเครือข่าย 192.168.2.0/24 อย่างไรก็ตามควรเป็นแบบอัตโนมัติเนื่องจากสามารถบอกได้ว่า 192.168.2.0/24 เชื่อมต่อโดยตรงโดยเสมือนจริงของสิ่งที่คุณกำหนดให้กับอินเทอร์เฟซ

ดังนั้นทราฟฟิกที่ไปที่ 192.168.2.X จะออกจาก 192.168.2.10 และทราฟฟิกที่ไปที่อื่นจะออกจากที่อยู่ IP ของ en1


ฉันตั้งค่าใบสั่ง wifi ของฉันไปที่ด้านบนผ่านการตั้งค่าเครือข่าย sys แต่ฉันไม่แน่ใจว่าจะทำremove any default gateway connected to the LANอย่างไร
— jakebird451

อาจsudo route del default 192.168.2.10? ไม่แน่ใจว่าวิธีการทำใน freebsd / mac osx แต่ควรจะคล้ายกัน
— LawrenceC

คำสั่งใน mac sudo route delete default 192.168.2.10คือ Ping ยังคงใช้งานอยู่ อย่างไรก็ตามมันปิดการเข้าถึงการจราจร wifi ไม่รวม ip ของเราเตอร์
— jakebird451

คุณได้รับอินเทอร์เน็ตผ่าน wifi ของคุณถูกต้องเช่นถ้าคุณไม่ได้เชื่อมต่อผ่าน LAN และ Wifi เท่านั้นคุณสามารถเข้าถึงไซต์ภายนอกเช่น Google เป็นต้น
— LawrenceC

ใช่ WiFi สำหรับการใช้งานทั่วไปเช่น google.com (โดยหลักคือ google maps api)
— jakebird451
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.