Jde*_*eBP 7 linux ip icmp loopback
在带有环回网络接口的 FreeBSD 系统上……
% ifconfig lo0
低
链接环回 drv_running 运行多播
nd6 performnud auto_linklocal no_radr
链接 rxcsum txcsum hwcsum rxcsum_ipv6 txcsum_ipv6
链接地址度量 0 mtu 16384
类型 24 链路状态 0 物理 0 波特率 0
inet4 地址 127.0.0.1 prefixlen 8 bdaddr 127.0.0.1
inet6 地址 ::1 范围 0 prefixlen 128 bdaddr ::1 范围 0
inet6 地址 fe80::1 范围 3 prefixlen 64
inet6 地址 ::2 范围 0 prefixlen 128
inet4 地址 127.53.0.1 prefixlen 8 bdaddr 127.53.0.1
inet4 地址 127.53.1.1 prefixlen 8 bdaddr 127.53.1.1
%
... ping 未分配给该(或任何其他)网络接口的 IP 地址 127.0.0.2 会导致失败:
% ping -c 1 127.0.0.2 PING 127.0.0.2 (127.0.0.2):56 个数据字节 ping: sendto: 网络不可达 --- 127.0.0.2 ping 统计 --- 发送 1 个数据包,接收 0 个数据包,100.0% 丢包率 %
OpenBSD 也是如此:
% ping -c 1 127.0.0.2 PING 127.0.0.2 (127.0.0.2):56 个数据字节 ping: sendto: 网络不可达 ping: 写了 127.0.0.2 64 个字符,ret=-1 --- 127.0.0.2 ping 统计 --- 发送 1 个数据包,接收 0 个数据包,100.0% 丢包率 %
但是在同样没有配置 127.0.0.2 的 Linux 上……
% ifconfig lo
罗
连接环回运行
链接地址 00:00:00:00:00:00 bdaddr 00:00:00:00:00:00
inet4 地址 127.0.0.1 prefixlen 8 bdaddr 127.0.0.1
inet4 地址 127.53.0.1 prefixlen 8 bdaddr 127.255.255.255
inet6 地址 ::2 范围 0 prefixlen 128
inet6 地址 fe80:: scope 1 prefixlen 10
inet6 地址 ::1 范围 0 prefixlen 128
%
...... ping 出人意料地成功:
% ping -c 1 127.0.0.2 PING 127.0.0.2 (127.0.0.2) 56(84) 字节数据。 来自 127.0.0.2 的 64 个字节:icmp_seq=1 ttl=64 time=0.044 ms --- 127.0.0.2 ping 统计 --- 发送 1 个数据包,接收 1 个数据包,0% 数据包丢失,时间 0ms rtt min/avg/max/mdev = 0.044/0.044/0.044/0.000 毫秒 %
怎么来的?
lo接口似乎还控制分配给其他网络接口的 IP 地址的可查性的问题(这种行为同样不是在 BSD 上得到的行为)ifconfig. 小吃指南。软件。
ip-route用于操作内核路由表中的条目。路线类型:
unicast- 路由条目描述了到路由前缀所覆盖的目的地的真实路径。...
local- 目的地被分配给该主机。数据包被环回并在本地传送。
$ ip -4 route show table all type local
local 127.0.0.0/8 dev lo table local proto kernel scope host src 127.0.0.1
local 127.0.0.1 dev lo table local proto kernel scope host src 127.0.0.1
local 172.16.8.139 dev wlp2s0 table local proto kernel scope host src 172.16.8.139
local 192.168.122.1 dev virbr0 table local proto kernel scope host src 192.168.122.1
$ ip -4 address show
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
4: wlp2s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
inet 172.16.8.139/24 brd 172.16.8.255 scope global dynamic noprefixroute wlp2s0
valid_lft 36391sec preferred_lft 36391sec
5: virbr0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default qlen 1000
inet 192.168.122.1/24 brd 192.168.122.255 scope global virbr0
valid_lft forever preferred_lft forever
Run Code Online (Sandbox Code Playgroud)
当接口添加地址时,会自动为该地址添加一条本地路由。此外,当将地址添加到环回接口 ( ) 时,会为该地址的网络前缀IFF_LOOPBACK添加本地路由。在 Linux 5.0 中,您可以在fib_add_ifaddr()中找到此实现。
相反,当将地址添加到非环回接口时,将为网络前缀添加单播路由。
$ ip -4 route show table all type unicast
default via 172.16.8.1 dev wlp2s0 proto dhcp metric 600
172.16.8.0/24 dev wlp2s0 proto kernel scope link src 172.16.8.139 metric 600
192.168.122.0/24 dev virbr0 proto kernel scope link src 192.168.122.1 linkdown
Run Code Online (Sandbox Code Playgroud)
本地路由被添加到名为“local”的特定表中。这样做最明显的意义是,快速ip -4 route不会显示本地表。这是因为它相当于ip -4 route show table main.
linux-ip.net 有一些更广泛的信息。它提到了本地表的另外两个用途。
上述内容可能适用于您遇到的任何 Linux 版本。我不确定它到底可以追溯到多久以前。然而这个ip route命令已经很古老了;它至少可以追溯到 Linux 2.2 时代。
| 归档时间: |
|
| 查看次数: |
1513 次 |
| 最近记录: |