首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在Linux路由中,‘Linux’和‘`onlink’的含义是什么?

在Linux路由中,‘Linux’和‘`onlink’的含义是什么?
EN

Unix & Linux用户
提问于 2020-04-10 03:04:11
回答 2查看 17.1K关注 0票数 10

当我输入ip route show时:

linkdown到底是什么意思?有时候我还能看到onlink。还想知道onlink是什么意思。

它会影响路由优先级吗?例如,图片中两条默认路由的情况

EN

回答 2

Unix & Linux用户

回答已采纳

发布于 2020-04-10 03:44:34

linkdown是将显示表中的路由并配置为通过处于DOWN状态的接口的状态的状态。您可以通过运行以下命令来看到这一点:

代码语言:javascript
运行
复制
ip a

寻找接口的状态。在我的笔记本电脑上,我开了wifi,以太网适配器拔掉了插头,它显示:

代码语言:javascript
运行
复制
wlp3s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
enp0s25: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc pfifo_fast state DOWN group default qlen 1000

在我的路由表中,我有许多路径,但是我可以添加一些垃圾路径:

代码语言:javascript
运行
复制
sudo ip route add 192.168.123.0/24 dev enp0s25
sudo ip route add 192.168.124.0/24 dev wlp3s0

然后,我的表将显示以太网路由的linkdown

代码语言:javascript
运行
复制
 192.168.123.0/24 dev enp0s25 scope link linkdown 
 192.168.124.0/24 dev wlp3s0 scope link 

onlink意味着路由应该“假装nexthop直接连接到这个链接,即使它不匹配任何接口前缀”。所以我们也可以在桌子上做一个假的:

代码语言:javascript
运行
复制
sudo ip route add 192.168.125.0/24 via 192.168.123.111 dev wlp3s0 onlink

它现在将显示在路由表中:

代码语言:javascript
运行
复制
192.168.123.0/24 dev enp0s25 scope link linkdown 
192.168.124.0/24 dev wlp3s0 scope link 
192.168.125.0/24 via 192.168.123.111 dev wlp3s0 onlink 

如果onlink连接到向下的界面,您甚至可以变得漂亮,并且两者兼得:

代码语言:javascript
运行
复制
192.168.126.0/24 via 192.168.123.111 dev enp0s25 onlink linkdown
票数 16
EN

Unix & Linux用户

发布于 2022-06-21 02:44:59

linkdown是将显示表中的路由并配置为通过处于DOWN状态的接口的状态的状态。

我将尝试给出一个示例,看看onlink选项到底做了什么:

您已经将eth0配置为ip地址/掩码: 192.168.0.1/24

出于某种原因,您希望在eth0的物理局域网上使用具有不一致配置的网关。假设它有一个地址10.0.10.1/24,这与您给出的机器的192.168.0.1/24配置不匹配。

如果你说:

代码语言:javascript
运行
复制
ip route add default dev eth0 via 10.0.10.1

然后,您将得到一个错误响应(网络不可达或什么的)。为什么?因为(严格地说)在eth0局域网上拥有一台10.0.10.1机器是没有意义的,因为您告诉计算机这个局域网的网络地址是192.168.0.0/24。

但是它来了:如果在命令中添加"onlink“,如下所示:

代码语言:javascript
运行
复制
ip route add default dev eth0 via 10.0.10.1 onlink

那么路线就被接受了。

但是现在我们要问另一个问题:如果一个包必须路由到这个"onlink“网关,内核会做什么?我进行了检查(通过实验),结果是:内核在eth0-lan上发送一个arp请求,询问“谁-有10.0.10.1",这是您配置的"onlink”网关。当它收到响应时,他有一个MAC地址,他可以在那里发送数据包并执行路由。

这意味着:当网关的地址与计算机上的lan配置(eth0)不匹配时,可以通过在语句中添加"onlink“来强制内核使用该网关。

我想,在非常罕见的情况下,您必须使用此功能。在需要onlink选项的情况下,大多数情况下网络设计都很糟糕。我认为一般的隧道设置也不需要"onlink“。

这里获得的答案

票数 1
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/579087

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档