ifconfig 与 ip addr 命令详解 - 学习/实践

1.应用场景

主要用于了解学习,掌握使用IP地址相关知识,

如何查看IP信息,以及各个参数代表的含义

2.学习/操作

1.文档阅读

网络协议概论 | Laravel 学院 - 不定期分享之 ifconfig 与 ip addr 命令详解

2.整理输出

2.1 如何查看机器的 IP 地址

我们在 Linux 系统查看 IP 地址通常有以下两种方式:

1)ifconfig

ifconfig

2)ip addr

ip addr

注:

如果在 Windows 系统上,查看 IP 地址的命令是 ipconfig

Mac

ifconfig

ip addr  -- 需要安装工具集

 

这两个命令返回的都是机器的网卡信息,其中包含了网卡的 IP 地址,有了 IP 地址才能进行网络通信。

2.2 ifconfig 与 ip addr 源起

要了解这两个命令的区别,需要先看看它们的历史起源:

ifconfig 命令归属于 net-tools 工具集。net-tools 起源于 BSD,自 2001 年起,Linux 社区已经停止对其进行维护。

而 ip 命令归属于 iproute2 工具集,iproute2 旨在取代 net-tools,并提供了一些新功能。

一些 Linux 发行版已经停止支持 net-tools,只支持 iproute2,在这些 Linux 版本中,只能使用 ip addr 命令查看 IP 地址,使用 ifconfig 会提示命名不存在。

net-tools 通过 procfs(/proc) 和 ioctl 系统调用去访问和改变内核网络配置,而 iproute2 则通过 netlink 套接字接口与内核通讯。

net-tools 中工具的名字比较杂乱,而 iproute2 则相对整齐和直观,基本是 ip 命令加后面的子命令:

iproute2命令集

2.3 网卡信息详解

了解了两个命令的区别之后,下面我们以 ip addr 命令输出为例对每个字段的含义进行解释。

网卡名称

我们先看最外层,eth0 和 eth1 都是网卡的名称,其中 eth 是以太网英文名 Ethernet 的缩写,表示数据链路是以太网,之所以有两张网卡是因为一张网卡用于内网通信,一张网卡用于外网通信。

lo 全称是 loopback,又称环回接口,往往会被分配到 127.0.0.1 这个地址。这个地址用于本机通信,经过内核处理后直接返回,不会在任何网络中出现。

一般来说,任何主机都至少有上述三个网卡。

然后我们依次看每一行的信息。

网络设备状态标识

首先看第一行信息:

<BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000

<BROADCAST,MULTICAST,UP,LOWER_UP> 叫作 net_device flags,即网络设备的状态标识。

UP 表示网卡处于启动的状态;BROADCAST 表示这个网卡有广播地址,可以发送广播包;MULTICAST 表示网卡可以发送多播包;LOWER_UP 表示 L1 是启动的,也就是网线是插着的。

mtu 1500 学院君前面介绍数据链路的时候提到过,表示以太网最大传输单元 MTU 为 1500,这是以太网的默认值。

qdisc 全称是 queueing discipline,中文叫排队规则。内核如果需要通过某个网络接口发送数据包,它都需要按照为这个接口配置的 qdisc(排队规则)把数据包加入队列。这里 lo 网卡配置的值是 noqueue 不使用队列,其它两个网卡配置的值是 fq_codel,对应的英文全名是 Fair Queueing with Controlled Delay,即具有受控延迟的公平队列,这种情况下每个网络流都有一个队列。

state UP 表示该网卡已启用,group default 表示网卡分组,qlen 1000 表示传输队列长度。

MAC 地址

接下来的每个网卡的第二行显示的是该网卡的 MAC 地址:

link/ether 08:00:27:b9:64:24 brd ff:ff:ff:ff:ff:ff

本地环回接口不需要,所以为空。

MAC 地址是一个网卡的物理地址,具体概念我们在链路层已经详细介绍过,使用十六进制表示,用冒号分隔,总共是六个字节。MAC 地址只能再同一个网段内通信,跨网段通信需要借助 IP 地址,所以接下来就是网卡的 IP 地址。

IPv4 地址

首先是 IPv4 地址:

inet 192.168.10.10/24 brd 192.168.10.255 scope global eth1

valid_lft forever preferred_lft forever

192.168.10.10/24 表示IP地址以及网络地址位数. 192.168.10.255 表示广播地址。

在 IP 地址的后面有个 scope,对于 eth1 这张网卡来讲,是 global,说明这张网卡是可以对外通信的,可以接收来自各个地方的包(如果还有 dynamic 表示该 IP 地址是动态分配的)。

对于 lo 来讲,是 host,说明这张网卡仅仅可以供本机相互通信。

valid_lft 表示该 IP(IPv4) 地址的有效使用期限,这里配置为 forever 表示永久有效;preferred_lft 表示该 IP 地址的首选生存期,也是配置为 forever 表示永久有效。

IPv6 地址

最后是 IPv6 地址:

inet6 fe80::a00:27ff:feb9:6424/64 scope link

valid_lft forever preferred_lft forever

IPv6 地址表示的地址区间非常之大,所以不需要区分网络号和主机号,也就不需要子网掩码了,IPv6 地址也是通过十六进制表示,需要注意的是这里 scope 配置为 link 表示只在此设备生效。其它配置和 IPv4 地址一样,不再赘述。

后续补充

...

3.问题/补充

TBD

4.参考

网络协议概论 | Laravel 学院 - 不定期分享之 ifconfig 与 ip addr 命令详解

后续补充

...

### 回答1: 如果你的Linux系统中没有ifconfig命令和/etc/sysconfig/network-scripts/文件路径,那么可能是你使用的是最新版本的Linux系统,这些命令和文件路径已经被废弃。相反,你可以使用ip命令来代替ifconfig命令,并使用Network Manager来管理网络连接。 要使用ip命令,你可以在终端中输入以下命令: ``` ip addr show ``` 这将显示您系统上可用的所有网络接口及其配置信息。 要使用Network Manager来管理网络连接,你需要安装Network Manager软件包并启动Network Manager服务。 在大多数基于Red Hat的系统上,你可以使用以下命令来安装Network Manager软件包: ``` sudo yum install NetworkManager ``` 然后,你可以使用以下命令来启动Network Manager服务: ``` sudo systemctl start NetworkManager ``` 如果你无法连接到网络,则可能需要检查网络适配器是否正确配置。你可以使用以下命令来检查网络适配器的状态: ``` ip link show ``` 如果适配器未启动,则可以使用以下命令来启动它: ``` sudo ip link set [interface] up ``` 其中,[interface]是适配器的名称,例如eth0。 ### 回答2: 如果Linux系统中没有ifconfig命令和/etc/sysconfig/network-scripts/文件路径,并且无法连接网络,可能是以下几个原因导致的: 1. 未安装网络管理工具:ifconfig是一个用于配置网络接口的常用命令,如果没有安装网络管理工具,系统将无法使用ifconfig命令。可以通过安装网络管理工具(如net-tools或iproute2)来解决此问题。 2. 网络接口未启用:在Linux系统中,网络接口(如eth0)需要手动启用才能连接网络。可以使用ip命令(如ip link set eth0 up)来启用网络接口。 3. 网络配置文件路径不同:在某些Linux发行版中,网络配置文件的路径可能与/etc/sysconfig/network-scripts/不同。可以通过查看发行版文档或搜索网络配置文件路径来确定正确的路径。 4. 网络配置错误:如果网络配置文件中存在错误,可能会导致无法连接网络。可以检查网络配置文件(如ifcfg-eth0)中的地址、网关、DNS等设置是否正确,并尝试重新配置网络。 5. 网络驱动程序或内核问题:有时,网络驱动程序或内核可能存在问题,导致无法正确识别和使用网络接口。可以尝试更新或重新安装网络驱动程序,或升级内核来解决此问题。 需要注意的是,具体的解决方法可能因Linux发行版和版本而有所不同。建议根据具体情况进行适当的调查和研究,或向Linux社区或技术支持寻求帮助。 ### 回答3: 如果Linux系统没有ifconfig命令和路径/etc/sysconfig/network-scripts/,那么可能是由于以下几个原因造成的。 首先,Linux系统可能没有安装网络配置工具。ifconfig命令通常位于网络配置工具包中,例如net-tools包。可以使用包管理器(如apt、yum、dnf等)来安装这些工具。例如,在Ubuntu系统中,可以使用以下命令安装net-tools: sudo apt-get install net-tools 然后,通过ifconfig命令来查看和配置网络接口。 其次,可能是系统网络配置文件路径不同。在一些Linux发行版中,网络接口的配置文件通常位于/etc/network/interfaces或/etc/sysconfig/network-scripts/路径下。但并不是所有的Linux系统都使用相同的配置文件路径。可以通过查找网络接口配置文件的位置来确认正确的路径。 如果无法连接网络,可能是由于未正确配置网络接口或网络设置有问题。可以检查网络配置文件,确保正确设置了网络接口参数,如IP地址、子网掩码、网关等。还可以使用工具如ip命令来查看和配置网络接口。 另外,也需要确保网络连接是正常的。可以尝试重启网络服务或服务器,检查网络设备是否正常工作,以及查看网络设备的状态和配置。 需要根据具体的Linux发行版和网络环境来进行进一步的分析和排查。如果遇到困难,可以参考相关Linux文档或咨询专业人士获取帮助。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值