Mac-Osx

為特定流量路由 WIFI 和 LAN

  • April 30, 2018

我的 macbook pro 上有兩個網路設備:

  1. WIFI (en1):用於一般流量。通過 DHCP 連接到 192.168.19.* 的 ip
  2. LAN (en0):用於特定流量。作為靜態 IP 連接到 192.168.2.10 的 ip。不連接路由器,只用交換機直接路由連接。

我有 4 個需要在 LAN 上訪問的 IP 地址:

  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 無法分配記憶體(甚至可能)?它也殺死了我的無線網路訪問。註銷並重新登錄解決了該問題。我真的不介意讓這個解決方案永久化,所以我可以使用臨時路由。

編輯:

如果我目前一直在嘗試:

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

您不需要為該配置手動創建任何路由規則,前提是您要與之通信的所有 192.168.2.x 地址都位於具有 192.168.2.x 地址的介面下。

  1. 轉到系統偏好設置 -> 網路
  2. 選擇您的乙太網設備,確保“配置 IPv4”設置為“手動”,您的子網遮罩設置為 255.255.255.0,並且路由器框為空。

完成此操作後,netstat -rn仍應顯示兩個子網的路由,但僅顯示“link#4”路由,而不是通過 192.168.2.1 的預設路由。

如果您不想要預設路由,請將路由器框留空。路由器框中的值僅用於設置通過該網路介面的預設路由,不用於其他任何用途。

引用自:https://serverfault.com/questions/401149