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


36

我在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

这是它什么时候工作:(注意en0)

54.81.143.201      192.168.15.1       UGHS            0        1     en

我为什么要这样做?因为我们公司有一个代理,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

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

发布完整路由表以了解它不起作用的情况。通过en5可以达到192.168.15.1吗?如果是这样,为什么不起作用?如果没有,很难看出这条路线是如何添加的。
大卫施瓦茨2014年

@DavidSchwartz,这对我来说很有趣。无法通过en5访问192.168.15.1。当它正确地分配给en0时,它就可以工作。
肖恩256年

向我们展示路由表或en5的配置。必须有某种原因以这种方式安装路线,这可能是真正的问题。
大卫施瓦茨2014年

@DavidSchwartz它并不总是en5,有时它是en3。我现在正在发布我的整个路由表。
Sean256 2014年

在您显示的路由表中,en3显然是正确的。192.168.15.1无法通过任何其他接口访问。在该路由表中达到192.168.15.1的唯一方法是通过默认路由,对吧?(坦率地说,听起来你不知道自己在做什么。你似乎对系统没有做到不可能感到惊讶。)
David Schwartz

Answers:


33

尝试:

route add -host 54.81.143.201 -interface en0

2
这是我尝试的时候得到的:路线:坏地址:en0
Sean256 2014年

对不起,我没有Mac测试这个。看起来语法错了。我修改了答案。请再试一次。
drk.com.ar 2014年

1
可悲的是 - >路线:坏地址:en0
Sean256 2014年

再试一次。这次我删除了网关。此外,您是否可以将ifconfig输出添加到您的问题中以查看涉及的IP配置?
drk.com.ar 2014年

我刚刚尝试过(实际上我之前也有)并且它确实在我的表中添加了一个条目,它没有解决问题。HipChat无法连接。这是路由表中的条目,当这样做时 - > 54.81.143.201 78:31:c1:c7:52:74 UHS 0 2 en0
Sean256 2014年

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 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. 如果重新启动,则可能无法继续。你需要单独处理它。


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 2014年

当你做'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_routerwifi_address变量添加正确的值。注意wifi_address格式,即:网络接口名称 ' ' 接口mac地址带 ' ' 分隔符。当然,大多数所需的信息都可以从ifconfig命令输出中解析出来,但是我太懒了=)


欢迎来到超级用户。请尝试从帖子中的链接中包含最相关的信息。在这里阅读更多相关信息。
styrofoam飞行

1

此处route记录 OS X 命令。该-ifscope参数及其值允许您指定的接口绑定路线。

然而,这不是你想要的。您需要修复网络,使其IP范围是唯一的。除此之外,接口度量(也称为优先级)会影响从其他方面同等适当的选项中选择哪个接口。



-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 2014年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.