cor*_*ump 17 linux routing iproute2
我阅读了手册页,ip但仍然不明白是什么src,我找不到太多文档。
请,如果你能彻底解释它或指向一些链接,它是一个很好的答案。
the*_*bit 23
向多宿主主机添加路由时,您可能希望在使用此路由开始通信时控制主机发送的源 IP 地址。这就是src的用途。
一个简短的例子:你有一个有两个接口的主机,IP 地址为 192.168.1.123/24 和 10.45.22.12/24。您正在通过 10.45.22.1 添加到 78.22.45.0/24 的路由,并希望确保您没有使用 192.168.1.123 地址发送到 78.22.45.0/24(可能是因为网络 78.22.45.0/24 没有返回路由)到 192.168.1.0/24 或因为您不希望您的流量因某种原因而走这条路线):
ip route add 78.22.45.0/24 via 10.45.22.1 src 10.45.22.12
Run Code Online (Sandbox Code Playgroud)
请注意,您提供的src只会影响源自您的主机的流量。如果正在路由一个外部数据包,它显然已经有一个源 IP 地址,因此它将被原封不动地传递(当然除非您使用 NAT,但这是完全不同的事情)。此外,此设置可能会被专门选择绑定到特定地址而不是在启动连接时使用默认值的进程覆盖(很少见)。
nei*_*owj 13
该src属性是地址选择算法使用的提示。当主机有多个 IP 地址时,这很重要,通常但不总是,当它有多个接口时。虽然还有其他影响地址选择的规则,网络应用程序也可以通过使用系统调用覆盖选择算法,如bind(),该src属性是一种使用路由表查找来回答问题的方法,“如果我想启动一个连接到主机 X,我应该使用哪个地址?”
下面通过一个例子来说明该src属性的使用和效果。为了说明这与地址和路由相关,而不是严格意义上的接口,这个示例主机只有一个网络接口,但有两个地址。此外,两个地址都在同一个子网上,以强调没有其他明显的方法可以选择使用哪一个。
$ ip -4 addr show dev eth0
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
inet 10.1.0.2/24 brd 10.1.0.255 scope global eth0
inet 10.1.0.16/24 scope global secondary eth0
$ ip route list dev eth0
10.1.0.32/27 scope link src 10.1.0.16
10.1.0.0/24 proto kernel scope link src 10.1.0.2
Run Code Online (Sandbox Code Playgroud)
此主机可以从任一地址与此 /24 子网上的其他 252 个地址中的任何一个进行通信,但默认情况下,当启动与 10.1.0.32 到 10.1.0.63 的连接时,它将使用 10.1.0.16,并使用 10.1.0.2 进行所有休息。
如果主机正在响应,而不是发起,那么它将从请求的目标地址响应。例如,如果位于 10.1.0.32 的另一台主机连接到位于 10.1.0.2 的此主机,即使 10.1.0.2src与返回路由的属性不匹配,响应也会来自 10.1.0.2 。
| 归档时间: |
|
| 查看次数: |
32961 次 |
| 最近记录: |