都2023年了,别再用ifconfig啦! 试试这个吧!

news2025/1/16 2:44:08

下午好,我的网工朋友。

ifconfig这玩意儿,还有多少人在用?举个手看看

总在说ifconfig即将被淘汰,但其实很多网工还在用吧。

比如说组合使用诸如ifconfig、route、arp和netstat等命令行工具(来源于安装包net-tools)来配置网络功能,解决网络故障。

net-tools起源于BSD的TCP/IP工具箱,后来成为老版本Linux内核中配置网络功能的工具。

但从2001年起,Linux社区都已经停止维护了。

与此同时,一些Linux发行版比如Arch Linux和CentOS/RHEL 7已经完全抛弃了net-tools,只支持iproute2。

那iproute2你懂多少?一起聊聊。

今日文章阅读福利:《史上最全网络模拟器大合集》

私信我,备注“模拟器”前20名私信的小友即可免费获得模拟器合集资源。限时开放,过时不候哈。

01 iproute2到底是啥

其实在管理 Linux 服务器和排查网络问题时,熟悉一些基本的网络工具是很有帮助的。

这些工具中的一部分最初是为了查看网络状态而编写的,但其中也包含了一些可以用来管理和配置网络连接的底层工具。

一直以来,这些互不相关的网络工具被打包在一起发布,它们被统称为net-tools

虽然net-tools工具包提供了相当完善的功能,但是包内工具的开发却是相互独立的,它们的使用方式也各不相同。

由于net-tools包内工具的使用方式大相径庭,并且包内的部分工具也已经停止维护,因此使用名为iproute2的新工具包来替换原来net-tools

iproute2包内的各个工具被统一开发维护,并且他们之间的使用方式也非常相似。

另外,这些工具也可以很好地互相配合一起使用。

一会儿具体和你说说如何使用iproute2来对你的网络进行配置、维护和信息查看。

对了,在这给你使用 Ubuntu 12.04 VPS 来进行演示哈,不过大多数其它现代 Linux 发行版都提供了相同的功能。

虽然查询指令可以在非特权模式(非 root)下执行,不过在修改网络配置时,大多数情况下还是需要 root 权限的。

02 如何查看网络接口、地址、路由

iproute2 工具包最基础的功能就是管理本机的网络接口。

一般来说,本机的网络接口通常会被命名成像是eth0eth1lo这样的名称。

在过去,常常使用net-tools包提供的ifconfig命令来配置网络接口。

而使用iproute2时,通常可以使用子命令ip addrip link来完成相同的功能。

使用 ifconfig 时,你可以通过输入不带参数的如下命令来查看本机当前所有网络接口的状态:

ifconfig

eth0     Link encap:Ethernet  HWaddr 54:be:f7:08:c2:1b  
         inet addr:192.168.56.126  Bcast:192.168.56.255  Mask:255.255.255.0
         inet6 addr: fe80::56be:f7ff:fe08:c21b/64 Scope:Link
         UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
         RX packets:114273 errors:0 dropped:0 overruns:0 frame:0
         TX packets:58866 errors:0 dropped:0 overruns:0 carrier:0
         collisions:0 txqueuelen:1000 
         RX bytes:73490903 (73.4 MB)  TX bytes:14294252 (14.2 MB)
         Interrupt:20 Memory:f7f00000-f7f20000 
lo       Link encap:Local Loopback  
         inet addr:127.0.0.1  Mask:255.0.0.0
         inet6 addr: ::1/128 Scope:Host
         UP LOOPBACK RUNNING  MTU:65536  Metric:1
         RX packets:3942 errors:0 dropped:0 overruns:0 frame:0
         TX packets:3942 errors:0 dropped:0 overruns:0 carrier:0
         collisions:0 txqueuelen:0 
         RX bytes:668121 (668.1 KB)  TX bytes:668121 (668.1 KB)

如果想要查看某个特定网络接口的信息,你可以将网络接口名称作为参数传给 ifconfig:

ifconfig eth0

eth0      Link encap:Ethernet  HWaddr 54:be:f7:08:c2:1b  
          inet addr:192.168.56.126  Bcast:192.168.56.255  Mask:255.255.255.0
          inet6 addr: fe80::56be:f7ff:fe08:c21b/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:114273 errors:0 dropped:0 overruns:0 frame:0
          TX packets:58866 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:73490903 (73.4 MB)  TX bytes:14294252 (14.2 MB)
          Interrupt:20 Memory:f7f00000-f7f20000

使用 iproute2 包提供的子命令,你可以实现相同的功能。

如果想要查看每个网络接口被配置的地址,可以输入不带参数的 ip addr 命令:

ip addr

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN 
    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: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 54:be:f7:08:c2:1b brd ff:ff:ff:ff:ff:ff
    inet 192.168.56.126/24 brd 192.168.56.255 scope global eth0
       valid_lft forever preferred_lft forever
    inet6 fe80::56be:f7ff:fe08:c21b/64 scope link 
       valid_lft forever preferred_lft forever
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN 
    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: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 54:be:f7:08:c2:1b brd ff:ff:ff:ff:ff:ff
    inet 192.168.56.126/24 brd 192.168.56.255 scope global eth0
       valid_lft forever preferred_lft forever
    inet6 fe80::56be:f7ff:fe08:c21b/64 scope link 
       valid_lft forever preferred_lft forever

[HUAWEI] interface gigabitethernet 0/0/1

[HUAWEI-GigabitEthernet0/0/1] virtual-cable-test 
Warning: The command will stop service for a while, Continue?[Y/N] y 
Info: This operation may take a few seconds. Please wait for a moment..........done. 
Pair A length: 1meter(s) 
Pair B length: 1meter(s) 
Pair C length: 1meter(s) 
Pair D length: 1meter(s) 
Pair A state: Ok 
Pair B state: Ok 
Pair C state: Ok 
Pair D state: Ok 
14:40:00.589235 IP 10.255.255.5.39058 > 172.17.0.2.80: Flags [S], seq 332257715, win 29200, options [mss 1418,sackOK,TS val 486800541 ecr 0,nop,wscale 7], length 0
14:40:00.589277 IP 172.17.0.2.80 > 10.255.255.5.39058: Flags [S.], seq 1630206251, ack 332257716, win 4880, options [mss 256,sackOK,TS val 2509376001 ecr 486800541,nop,wscale 7], length 0
14:40:00.589894 IP 10.255.255.5.39058 > 172.17.0.2.80: Flags [.], ack 1, win 229, options [nop,nop,TS val 486800541 ecr 2509376001], length 0
14:40:03.589352 IP 10.255.255.5.39058 > 172.17.0.2.80: Flags [F.], seq 76, ack 1, win 229, options [nop,nop,TS val 486803541 ecr 2509376001], length 0
14:40:03.589417 IP 172.17.0.2.80 > 10.255.255.5.39058: Flags [.], ack 1, win 40, options [nop,nop,TS val 2509379001 ecr 486800541,nop,nop,sack 1 {76:77}], length 0

如果想要查看某个特定网络接口的地址信息,你可以使用如下格式的命令:

ip addr show eth0

2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 54:be:f7:08:c2:1b brd ff:ff:ff:ff:ff:ff
    inet 192.168.56.126/24 brd 192.168.56.255 scope global eth0
       valid_lft forever preferred_lft forever
    inet6 fe80::56be:f7ff:fe08:c21b/64 scope link 
       valid_lft forever preferred_lft forever

事实上,ip addr只是ip addr show命令的别名。

如果你只关心网络接口本身,而不在意它们被配置的地址,那么你可以使用 ip link 子命令:

ip link

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN 
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 04:01:13:8a:a2:01 brd ff:ff:ff:ff:ff:ff

如果想要查看某个特定网络接口的信息,那么你可以添加关键字 show 和对应网络接口的名字:

ip link show eth0

如果想要获得网络接口如何通信的统计数据,那么你可以给 link 子命令传入 -s 选项:

ip -s link show eth0

2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 04:01:13:8a:a2:01 brd ff:ff:ff:ff:ff:ff
    RX: bytes  packets  errors  dropped overrun mcast   
    853144     14672    0       0       0       0      
    TX: bytes  packets  errors  dropped carrier collsns 
    91257      537      0       0       0       0
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 04:01:13:8a:a2:01 brd ff:ff:ff:ff:ff:ff
    RX: bytes  packets  errors  dropped overrun mcast   
    853144     14672    0       0       0       0      
    TX: bytes  packets  errors  dropped carrier collsns 
    91257      537      0       0       0       0

那么如何找到你的路由表呢?

路由表包含了到达其他网络地址的路径信息,你可以通过输入以下内容来打印当前的路由表:

ip route show

default via 107.170.58.1 dev eth0  metric 100
107.170.58.0/24 dev eth0  proto kernel  scope link  src 107.170.58.162

这条命令的输出内容说明,通往更大互联网的默认路由是通过 eth0 接口到达地址为 107.170.58.1 的网关。

通过 eth0 接口可以访问地址为 107.170.58.1 的网关,并且 eth0 接口自身的 ip 地址是 107.170.58.162。

03 如何配置网络接口、地址、路由

既然你已经熟悉了如何获取网络接口信息和与它们关联的地址信息,那么下一步就应该是了解如何修改网络接口的状态了。

首先需要了解如何配置接口本身。

你仍然可以使用 ip link 子命令,不过这次你需要传入 set 而不是 show 来修改配置。

例如,你可以通过使用以下命令来打开或关闭网络接口:

ip link set eth1 up
ip link set eth1 down

注意:当心不要意外关闭了你正连接的 VPS 的网络接口!

你也可以使用 ip link 子命令来配置网络接口的属性。

比如,如果你想打开或关闭网络接口的多播标志,你可以输入:

ip link set eth1 multicast on
ip link set eth1 multicast off

你也可以输入如下的命令来修改 MTU 和分组队列的长度:

ip link set eth1 mtu 1500
ip link set eth1 txqueuelen 1000

如果你正配置的网络接口是关闭(down)状态,那么你可以修改网络接口的名称和与之关联的 arp 标志:

ip link set eth1 name eth10
ip link set eth1 arp on

如果要修改网络接口的地址,那么你可以再次使用 ip addr 子命令。

通过输入以下命令你可以为网络接口添加一个地址:

ip addr add IPADDRESS/NETPREFIX brd + dev INTERFACE

该命令的 brd + 部分会自动设置广播地址。每个网络接口都可以添加多个地址而不会出现任何问题。

你也可以执行相反的操作来删除网络地址。

要删除指定网络接口的某个地址,可以使用如下命令:

ip addr del IPADDRESS/NETPREFIX dev INTERFACE

你也可以省略输入地址,这样与该网络接口关联的第一个被列出的地址将被删除。

通过使用 ip route [add | change | replace | delete ] 语法,你也可以删除路由规则。

这里不展开介绍了哈,毕竟大多数人不会定期对此进行调整。

04 IpRoute2其他功能

IPRoute2 还具有一些其他功能,在这里我们深入讨论下这些是什么,以及在什么情况下你可能会发现它们有用。

IP 路由规则(rule)的概念很难谈论,因为它非常依赖于具体的情况。

基本上,你可以基于多个字段(包括目标地址,源地址,路由协议,数据包大小等)来决定如何路由流量。

你使用 ip rule 子命令使用此功能。基本查询命令遵循和其他子命令一样的语法:

ip rule show
0:  from all lookup local 
32766:  from all lookup main 
32767:  from all lookup default

这三条路由规则是内核配置的默认规则。第一行可以匹配任何流量,用于路由高优先级的流量。第二行是处理常规路由的主要规则。

最后一行是空规则,如果上面的规则与数据包不匹配,则使用该行进行后处理(post-processing)。

由 IPRoute2 配置的路由规则被存储在路由策略数据库(routing policy database)中。

通过与规则集合进行匹配来选择该数据库中的路由策略。

你可以使用适当的操作来添加或删除规则。

但是,你不应该在不知道自己在做什么的情况下执行这些操作。

可以通过 man 查看 ip rule 的手册来进行进一步的学习。

man ip         # search for "ip rule"

另一件事就是,通过这些工具来处理 arp 信息。

处理这些信息的子命令被称作 ip neigh。

ip neigh
107.170.58.1 dev eth0 lladdr 00:00:5e:00:01:68 DELAY

默认情况下,这里至少应列出你的网关。

ARP(Address Resolution Protocol)是地址解析协议的缩写,它可以通过 IP 地址来获取 MAC 地址。

基本上,每当需要转发 IP 分组时,你的主机就会在本地网络上广播 ARP 请求,向网络中的其他主机询问谁拥有这个 IP 地址。

拥有这个 IP 地址的主机将把自己的 MAC 地址回复给询问者,然后询问者就知道该把 IP 分组发给谁了。

询问者会把 IP 地址到 MAC 地址的映射缓存到本地(一般持续 15 分钟),这样后续的分组在需要转发时就不需要再次通过 ARP 请求询问了。

05 总结

现在,你应该对如何使用 iproute2 包中的工具有了一个很好的了解了。

尽管许多指南和教程仍然引用旧的 net-tools 工具包,部分原因是有经验的系统管理员过去经常使用旧的工具包。

但今天讨论的命令将在未来几年内逐步替代 net-tools 工具。

重要的是,现在你必须熟悉这些命令,然后才能在已切换到这些命令的系统上解决网络问题(Arch Linux 早在 2011 年就已经完全切换到了新工具)。

新工具用法更加一致,你可以指望在所有命令中都可以使用类似的用法。

你使用这些命令的次数越多,它们对你而言就越自然。

整理:老杨丨10年资深网络工程师,更多网工提升干货,请关注公众号:网络工程师俱乐部

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1000462.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

调查称全球多所顶尖高校网站存在网络攻击风险

Cyber News的一项调查研究显示&#xff0c;全球多所顶尖高校的网站未能及时更新安全补丁&#xff0c;存在敏感信息泄露&#xff0c;甚至被攻击者全面接管的风险。 Cyber​​ News 研究团队详细调查了 20 个每月有数百万访问量的高校网站&#xff0c;其中至少有6个是位于全球Top…

Mac清理垃圾软软件CleanMyMac X的软件功能介绍

在我们使用我们的Mac一定的时间后&#xff0c;总是不可避免的出现Mac内存不足的情况&#xff0c;所以清理垃圾软件也就成为了我们电脑里必不可少的软件。苹果软件商店中有很多各有不同的清理垃圾软件&#xff0c;但我们往往很难从这一大堆软件中找到令自己心满意足的。 但是这…

目录操作函数

mkdir函数 rmdir函数 删除空目录 rename函数 换名 chdir函数 修改当前的工作目录 getcwd函数 获取当前工作的路径

X2-VLM: All-In-One Pre-trained Model For Vision-Language Tasks论文笔记

Title&#xff1a;X2-VLM: All-In-One Pre-trained Model For Vision-Language Tasks Code 1. Motivation CLIP这一类方法只能进行图片级别的视觉和文本对齐&#xff1b;也有一些方法利用预训练的目标检测器进行目标级别的视觉和文本对齐&#xff0c;但是只能编码目标内部的特…

WMS仓储-亿发数字化工厂库存管理系统,提升中小企业仓储管理效率

中小企业竞争日益激烈的市场中&#xff0c;仓库管理的重要性不可低估。为了适应不断变化的业务规模和模式&#xff0c;中小企业对仓库管理提出了更高水平的智能化要求。数字化工厂库存管理系统&#xff0c;正是应运而生&#xff0c;助力企业加强仓库智能作业效率&#xff0c;并…

CRM销售管理系统如何提高销售效率

CRM销售管理系统是帮助企业对销售活动进行管理、执行和优化的软件系统。它可以帮助企业提高销售效率&#xff0c;提高客户转化率&#xff0c;实现企业的业绩增长。那么&#xff0c;CRM销售管理系统好用吗&#xff1f; CRM销售管理系统的功能 线索管理&#xff1a; CRM系统可…

​金蝶云星空管理中心反序列化RCE漏洞复现 附POC

文章目录 ​金蝶云星空管理中心反序列化RCE漏洞复现0x01 前言0x02 漏洞描述0x03 影响范围0x04 漏洞环境0x05 漏洞复现1.访问漏洞环境2.构造POC3.复现4.进行ipconfig命令测试 0x06修复建议 ​金蝶云星空管理中心反序列化RCE漏洞复现 0x01 前言 免责声明&#xff1a;请勿利用文…

iframe 实现跨域,两页面之间的通信

一、 背景 一个项目为vue2&#xff0c;一个项目为vue3&#xff0c;两个不同的项目实现iframe嵌入&#xff0c;并实现通信 二、方案 iframe跨域时&#xff0c;iframe组件之间常用的通信&#xff0c;主要是H5的possmessage方法 三、案例代码 父页面-vue2&#xff08;端口号为…

日常开发小汇总(5)元素跟随鼠标移动(在视口下移动)

<div class"mark"><h1>title</h1><div><p>title 鼠标移动 盒子整体移动</p><p>test</p><p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Modi, porro.</p></div></div>cons…

微信商城小程序开发

微信小程序商城制作流程详解 微信小程序商城的出现为商家提供了一个全新的线上销售平台&#xff0c;让商家能够在微信生态系统中直接向用户展示和销售自己的产品。本文将详细介绍微信小程序商城的制作流程&#xff0c;帮助商家和开发者更好地理解和掌握这一新兴技术。 一、注…

python+chdb 向量检索,百万数据秒级查询

随机生成向量数据集 import numpy as np import pandas as pddata_vectors [(i, np.random.random(300)) for i in range(1000000)] df pd.DataFrame(data_vectors) df.columns [idx, vector] df转化成parquet格式&#xff0c;分批转化&#xff0c;一次会爆炸 import pyar…

yolov5添加ECA注意力机制

ECA注意力机制简介 论文题目&#xff1a;ECA-Net: Efficient Channel Attention for Deep Convolutional Neural Networks 论文地址&#xff1a;here 基本原理 &#x1f438; ECANet的核心思想是提出了一种不降维的局部跨通道交互策略&#xff0c;有效避免了降维对于通道注意…

HbuilderX uniapp项目转cli项目全过程记录

1、按照官网步骤准备环境 (1) 全局安装 vue-cli npm install -g vue/cli (2) 创建uni-app 使用正式版&#xff08;对应HBuilderX最新正式版 vue create -p dcloudio/uni-preset-vue my-project 使用alpha版&#xff08;对应HBuilderX最新alpha版 vue create -p dcloudio/un…

jar包依赖冲突排查思路和解决方法,以及类加载机制排查(系统原因也导致预发布环境和本地环境的差异)

冲突提示信息 「java.lang.ClassNotFoundException」&#xff1a;类型转换错误&#xff0c;本应该引入的是 logback 包的类&#xff0c;但是实际引入的是 slf4j 下的同名类&#xff0c;导致类型转换错误。 「java.lang.NoSuchMethodError」&#xff1a;找不到特定方法&#x…

【css】linear-gradient()的用法

linear-gradient() CSS函数创建一个由两种或多种颜色沿一条直线进行线性过渡的图像,其结果是<gradient>数据类型的对象,此对象是一种特殊的<image> 数据类型。 语法 /* 渐变轴为 45 度&#xff0c;从蓝色渐变到红色 */ linear-gradient(45deg, blue, red);/* 从右…

Transformer-2. 注意力分数

上一节记录了注意力机制的基础&#xff0c;这一节主要做几个实现&#xff0c;沐神说qkv在不同任务中的角色不一&#xff0c;所以后续内容才会搞懂qkv是啥玩意。 上节使用了高斯核来对查询和键之间的关系建模。 高斯核指数部分可以视为注意力评分函数&#xff08;attention sco…

C高级shell脚本

#!/bin/bash function fun() {sum0i0b($*)while [ $i -lt ${#b[*]} ]do((sum ${b[i]}))((i))doneecho $sum }read -p "请输入数组" -a a fun ${a[*]}function fun2() {aid -ubid -gecho $a $b } p(fun2) uid${p[0]} pid${p[1]} echo $uid $pidXMind

项目上线部署--》网站运行机制

网站运行机制 &#x1f31f;名词解释 域名 DNS 服务器 服务器 &#x1f31f; 网站请求流程 静态页面 动态页面 前后端分离的页面 前后端不分离的页面 &#x1f31f;写在最后 &#x1f31f;名词解释 域名 www.baidu.comwww.taobao.comwww.qq.com 域名俗称网址&#xf…

远程恋爱网站部署秘籍——群晖虚拟机助ni秀恩爱

文章目录 前言1. 安装网页运行环境1.1 安装php1.2 安装webstation 2. 下载网页源码文件2.1 访问网站地址并下载压缩包2.2 解压并上传至群辉NAS 3. 配置webstation3.1 配置网页服务3.2 配置网络门户 4. 局域网访问静态网页配置成功5. 使用cpolar发布静态网页&#xff0c;实现公网…

基于Python和mysql开发的看图猜成语微信小程序(源码+数据库+程序配置说明书+程序使用说明书)

一、项目简介 本项目是一套基于Python和mysql开发的看图猜成语微信小程序&#xff0c;主要针对计算机相关专业的正在做毕设的学生与需要项目实战练习的Python学习者。 包含&#xff1a;项目源码、项目文档、数据库脚本等&#xff0c;该项目附带全部源码可作为毕设使用。 项目都…