路由时,Mac OSX如何确定网络接口的优先级?


20

举一个具体的例子,OSX如何选择这些默认条目中的哪一个netstat -nr路由?

Destination        Gateway            Flags        Refs      Use   Netif Expire
0/1                10.10.99.100       UGSc            0        0    ppp0
default            192.168.1.1        UGSc            5        0     en0
default            192.168.1.1        UGScI           1        0     en1
default            192.0.2.1          UGScI         157        2    ppp0 

据我所知,OSX在其接口而非路由表条目上使用度量。但是默认情况下,所有这些接口指标均为0,那么如何选择呢?最后创建的界面?

我见过一些人在“网络”偏好设置中建议其顺序,但在我的情况下,此处未列出ppp0接口(来自SonicWall NetExtender)。

这个线程中有一些讨论,但我没有答案。


您是否了解如何设置路由指标?
endryha

Answers:


8

大多数系统在选择使用哪种路由时都遵循以下规则:

  • 查找最具体的(即匹配前缀最长的那些)。
  • 选择优先级最高的一个。

在Linux(我认为在Windows)上,优先级由metric决定,但正如您正确指出的那样,在macOS上并非如此。macOS不会为单个路由分配指标,而是为接口分配优先级。您可以networksetup -listnetworkserviceorder用来查看和networksetup -ordernetworkservices更改此顺序。

现在,从您的输出中得出的这条路线使我认为,在您的情况下,特异性也发挥了作用:

Destination        Gateway            Flags        Refs      Use   Netif Expire
0/1                10.10.99.100       UGSc            0        0    ppp0

该路由覆盖了地址空间的下半部分,因此我希望也能找到:

128.0/1            10.10.99.100       UGSc            0        0    ppp0

在您的路由表中。这是VPN软件优先考虑其路由优先级的标准技巧default:它添加了两条路由,这些路由共同覆盖了所有IP地址,但是每条路由都比默认路由更具体,因此它们获胜。


在Linux上,仅通过度量标准确定单个路由表案例的优先级,但是在多个路由表案例中,较高优先级的规则可以覆盖具有较低prio规则条目的另一个表的路由度量。同样对于动态路由,必须考虑最小的管理距离。
Moreaki

非常感谢您:“这是VPN软件用来优先于默认路由的标准技巧”。最终,这帮助我了解了WTF在我的情况下正在进行的事情。
ipmcc

15

具有多个具有相等度量标准的默认路由的路由表都将进行负载平衡。对于Mac,情况是它将选择接口列表中的第一个接口。如果要查看和更改列表,请转到“打开网络偏好设置”,在这里您将看到网络接口的列表,例如以太网,机场,通过移动设备或3g的ppp等。在列表下方,您将看到一个星号带向下箭头的选项。单击此按钮并设置“设置服务订单”。在这里,您可以更改特定界面的首选项。

http://www.sustworks.com/site/prod_ipnrx_help/html/AlternateRouteHelp.html


3
您可以参考任何来源来确认这一点吗?如果您可以参考某个网站,该网站将使您的答案更有价值,那么人们会投票赞成。
slm 2012年

1
可以在此处确认“设置服务顺序”:OS X Mountain Lion:更改网络连接的优先级
David Moles 2013年
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.