การกำหนดเส้นทาง 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.