最近我在学习策略路由,因此接触到了 ip rule 和 ip route 命令。在使用 ip route show table local 命令查看本地路由表时,我注意到了一条路由的信息如下:
local 192.168.2.37 dev ens18 proto kernel scope host src 192.168.2.37
这条路由似乎表示,源 IP 地址为 192.168.2.37 ,目标 IP 地址也为 192.168.2.37 的流量将从 ens18 网卡输出。然而,当我使用 ip route get from 192.168.2.37 to 192.168.2.37 命令查询路由时,输出结果显示 dev 为 lo:
local 192.168.2.60 from 192.168.2.37 dev lo uid 0
cache <local>
因此,我有以下几个疑问:
- 除了
ip route命令之外,是否还有其他机制控制本机发往本机的流量? - 当添加本地路由时(例如
ip route add table local local 5.5.5.6 dev ens19),dev字段的作用是什么?我进行了测试,无论将dev设置为 ens18 、ens19 还是 lo ,查询路由的结果始终输出到dev lo。
麻烦大佬指点一下~
补充一下我系统的信息
系统版本:
[root@archlinux ~]# uname -a
Linux archlinux 6.1.10-hardened1-1-hardened #1 SMP PREEMPT_DYNAMIC Tue, 07 Feb 2023 19:30:39 +0000 x86_64 GNU/Linux
ip 地址:
[root@archlinux ~]# ip address
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: ens18: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
link/ether 3a:9a:34:ce:3f:86 brd ff:ff:ff:ff:ff:ff
altname enp0s18
inet 192.168.2.37/24 brd 192.168.2.255 scope global dynamic noprefixroute ens18
valid_lft 84848sec preferred_lft 84848sec
inet6 fe80::fa61:fb21:1948:3202/64 scope link noprefixroute
valid_lft forever preferred_lft forever
3: ens19: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
link/ether 46:df:d2:42:02:63 brd ff:ff:ff:ff:ff:ff
altname enp0s19
inet 192.168.2.60/24 brd 192.168.2.255 scope global dynamic noprefixroute ens19
valid_lft 84848sec preferred_lft 84848sec
inet6 fe80::f895:5e74:b58f:583f/64 scope link noprefixroute
valid_lft forever preferred_lft forever
local 路由表:
[root@archlinux ~]# ip route show table local
local 127.0.0.0/8 dev lo proto kernel scope host src 127.0.0.1
local 127.0.0.1 dev lo proto kernel scope host src 127.0.0.1
broadcast 127.255.255.255 dev lo proto kernel scope link src 127.0.0.1
local 192.168.2.37 dev ens18 proto kernel scope host src 192.168.2.37
local 192.168.2.60 dev ens19 proto kernel scope host src 192.168.2.60
broadcast 192.168.2.255 dev ens18 proto kernel scope link src 192.168.2.37
broadcast 192.168.2.255 dev ens19 proto kernel scope link src 192.168.2.60