我有一个关于在 unix.stackexchange.com 上找到答案的问题的后续问题(请参阅下面的链接)。
以下两个路由表条目有何区别:
default E.F.G.H UGSc 0 0 en1
default E.F.G.H UGScI 25 0 en1
(其中 EFGH 是某个网关 IP 地址。)具体来说,RTF_IFSCOPE 标志对路由表条目有什么影响?
那么,可以接受的答案是,第二条路由“绑定到特定接口”,这可用于“创建指向同一目的地的多个路由,仅通过正在使用的接口进行区分”
好的,但是这是什么意思呢?假设我有以下内容(我确实只更改了 IP):
default 192.168.1.1 UGSc 14 0 en2
default 192.168.0.1 UGScI 1 0 en0
在什么情况下会使用第二条路由?或者更一般地,什么时候会I
使用“ ”路由?“真正的”默认路由似乎是没有“ I
”的路由。因为:
$ route get 8.8.8.8
route to: google-public-dns-a.google.com
destination: default
mask: default
gateway: 192.168.1.1
interface: en2
flags: <UP,GATEWAY,DONE,STATIC,PRCLONING>
recvpipe sendpipe ssthresh rtt,msec rttvar hopcount mtu expire
0 0 0 0 0 0 1500 0
顺便说一句:我从以下来源了解到以下信息man netstat
:
I RTF_IFSCOPE Route is associated with an interface scope
但我不明白:(
任何提示都非常感谢!
答案1
使用 route 命令的-ifscope
选项将路由绑定到特定接口,该接口在 netstat 输出中以 I 标志显示。
何时使用第二条路由将由其 IP 地址和指标决定,或者直接请求。如果 IP 地址重复,则选择最佳路由,而这可能不是由绑定接口决定的。存在强制使用给定接口的语法,但我不知道哪些操作系统或实用程序支持此语法。这通常更适用于 iPv6。
如何指定范围信息的示例:
当范围信息是接口名称时:
ping fe80::1%eth0
当范围信息是接口索引时:
ping fe80::9:47:100:112%65541
操作系统根据其算法来解释十进制值 65541(不是一个好主意)。