如何通过 OS X 中的特定接口引导 IP 路由?

Sea*_*256 52 routing macos

我在 Mac 上并尝试通过我的 wifi 连接上的特定网关路由特定地址。

我正在使用:

route add -host 54.81.143.201 192.168.15.1
Run Code Online (Sandbox Code Playgroud)

有时这会起作用,有时则不会。我发现它每次选择的界面都不一样。它需要en0工作

netstat -nr 不工作时的输出:

54.81.143.201      192.168.15.1       UGHS            1       89     en5
Run Code Online (Sandbox Code Playgroud)

这是它起作用的时候:(注意 en0)

54.81.143.201      192.168.15.1       UGHS            0        1     en
Run Code Online (Sandbox Code Playgroud)

我为什么要这样做?因为我们公司有一个 HipChat 不工作的代理。所以我通过开放的 wifi 网络路由 hipchat 流量,同时仍然在我的工作以太网上。

编辑:

我还尝试仅使用界面添加条目

route add -host 54.81.143.201 -interface en0

54.81.143.201      78:31:c1:c7:52:74  UHS             0        2     en0
Run Code Online (Sandbox Code Playgroud)

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
Run Code Online (Sandbox Code Playgroud)

drk*_*log 48

尝试:

route add -host 54.81.143.201 -interface en0
Run Code Online (Sandbox Code Playgroud)

  • 这就是我尝试时得到的结果:路由:错误地址:en0 (3认同)
  • 可悲的是,同样的事情-> 路线:错误地址:en0 (2认同)

小智 5

正如其他人指出的,这实际上是 3 个问题。

  1. 您的无线接口似乎在 en0、en3 和 en5 之间变化。

    在我的 MacBook Air 上,en0 始终是无线的;Thunderbolt 到以太网始终为 en3,USB 到以太网始终为 en5。但是,如果您将适配器插入 Mac 上的其他端口,则其 NIC 名称会发生​​变化。你需要先解决这个问题。确保您的无线设备始终具有相同的名称。否则,当您输入静态路由命令时,如果该位置没有插入网卡en0,则该命令(显然)将失败并显示“地址错误”(物理地址没有链接)。

    同样,请确保适配器始终连接到相同的 SSID。网关地址显然必须对子网有效,并且不同的 WiFi 网络将具有不同的子网。这可能会导致另一种类型的错误。

    您没有指定无线是否是您唯一的网络连接。鉴于上述情况,我想不是......?这以及 VMware 或 Parallels 带来的虚拟网络可能会导致额外的复杂性。(例如,如果两个连接的网络使用相同的 IP 空间...虚拟机通常会桥接并拥有自己的 IP/路由/链接...)发布网络拓扑会有所帮助。

  2. 完成后,尝试sudo route add -host 54.81.143.201 -iface en0sudo 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. 如果重新启动,这种情况可能不会持续存在。您需要单独处理它。


小智 5

sudo route -n add -net 54.81.143.201/32 192.168.15.1
Run Code Online (Sandbox Code Playgroud)