Linux - 网络管理
文章目录
系统网络重要概念
- 设备 主机内的网卡
- 广播地址 到达本网段上所有主机的地址
- 接口 为使用设备,驱动程序在设备上创建的接口
- 子网掩码 将IP地址划分成网络地址和主机地址两部分的掩码
- 路由 IP包跨网段访问时候的下一跳地址
- 链路 设备到网络的连接
Linux设备信息示例
使用ip addr / ip a
查看设备,包含没有配置的网络设备
网卡配置文件
网络设备默认的配置路径:/etc/sysconfig/network-scripts/
配置文件:ifcfg-*
其中参数值不分大小写,可以不用引导。
修改配置文件
使用编辑器直接修改配置文件,修改前做好备份;配置修改后不会立即生效,需要重启 NetworkManger 服务进程或者重启系统。
# 备份配置文件: cp ifcfg-eth1 ifcfg-eth1.bak # 重启 NetworkManager 服务进程: systemctl reload NetworkManager
网卡最小配置文件示例
一份可用的网卡配置文件并不需要列出所有的配置选项,有时过多配置项反而会增加网络排障难度,最小配置如下:
TYPE=Ethernet BOOTPROTO=static NAME=enp0s3 DEVICE=enp0s3 ONBOOT=yes IPADDR=192.168.56.100 NETMASK=255.255.255.0
查看 IP 地址
使用 ip 命令显示设备和地址信息:
显示接口的统计信息
- ip 命令可以用于显示关于网络性能的统计信息
- RX 表示接受的数据包信息
- TX 表示传送的数据包信息
显示套接字信息
使用 ss 命令查看套接字统计信息,加上参数可过滤不同类型的套接字,如显示所有 TCP 套接字信息:
NetworkManager
NetworkManager 是系统中动态控制及配置网络的守护进程,用于保持当前网络设备和连接处于工作状态。通过命令行工具 nmcli
可以控制 NetworkManager,nmcli 全面,强大且复杂。
关键概念:
- 设备:网络中,设备即网络接口;
- 连接:连接是供设备使用的配置;
- 同一个设备可能存在多个连接,但一次只能有一个保持活动状态。
通过 nmcli 查看网络信息
con 代表连接,–active 选项可以过滤出活动的连接
显示单个连接的详细信息:ncmcli con show “连接名”
,与 ip link 命令相似
显示设备状态,使用:ncmcli dev status
显示设备信息,使用:ncmcli dev show [设备名]
通过nmcli 创建连接
步骤:
- 创建一个名为“Demo”的连接,使用DHCP方式通过enp4s0网口连接
- 显示所有连接
- 启动刚刚创建的“Demo”连接
- 查看当前连接状态
例如:
nmcli con add con-name “test” type Ethernet ifname enp3s0 nmcli con show nmcli con up “test” nmcli con show nmcli con add 中还有很多可选类型,如网桥、绑定、VPN、VxLAN 等,要查看所有选项,使用 nmcli con add help
通过nmcli 修改连接
使用命令 nmcli con mod
修改连接,传入的参数为键值对。键为属性名称,可通过 nmcli con show [连接名]
查询,如:
通过nmcli修改DNS服务器
配置参数可以增加或删除值,在参数前使用 +/- 符号,如:
添加辅助 DNS 服务器
nmcli con mod “test” +ipv4.dns 114.114.114.114
修改完成后需要 up 活动中的连接,使之生效:
nmcli con up “test”
nmcli 还有交互式编辑模式和图形界面。
路由
要让不同子网的两台主机能够相互通讯,就需要有一种能够描述如何从一台主机到另一台主机的机制,这一机制称为:路由选择(Routing),路由选择通过路由项进行描述。
路由项是一对预先定义的地址,包括:目的地(Destination)和网关(Gateway)。路由项的含义是通过网关能够完成与目的地的通讯;路由表是多个路由项的集合。
路由管理与配置
许多Linux中,都使用 route 查看、配置、管理本机路由。除了 route 命令,ip 和 nmcli 命令也可以用来管理系统路由。这些命令作用于系统中的路由表,系统运行时,路由表加载到内存中,由系统内核进行维护。
route 查看路由表
使用route -n
参数显示路由时,Destination字段显示的是IP。采用route命令查看路由时,共有八个字段,字段意义说明如下:
- U Up表示此路由当前为启动状态
- H Host,表示此网关为一主机
- G Gateway,表示此网关为一路由器
- R Reinstate Route,使用动态路由重新初始化的路由
- D Dynamically,此路由是动态性地写入
- M Modified,此路由是由路由守护程序或导向器动态修改
- ! 表示此路由当前为关闭状态
route 新增路由
新增(暂时) 一条到网段或主机的路由,如下:
route [-f] [-p] [Command [Destination] [mask Netmask] [Gateway] [metric Metric]] [if Interface]]
- 使用route命令可以新增路由数据,新增路由数据保存在内存中,重启后失效。
route add -net 192.168.101.0 netmask 255.255.255.0 dev enp3s0
,代表新增到192.168.101.0/24网段路由,经由enp3s0发送出去。route add -host 192.168.101.100 dev enp3s0
,代表新增到192.168.101.100主机路由,经由enp3s0发送出去。- 通过route查看路由表,可知,到主机的路由优先于到网段的路由。
例如:
[root@localhost~]# route add -net 192.168.101.0 netmask 255.255.255.0 dev enp4s0 [root@localhost~]# route add -host 192.168.100.10 dev enp4s0 [root@localhost~]# route Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface default _gateway 0.0.0.0 UG 100 0 0 enp4s0 192.168.100.10 0.0.0.0 255.255.255.255 UH 0 0 0 enp4s0 192.168.101.0 0.0.0.0 255.255.255.0 U 0 0 0 enp4s0 192.168.110.0 0.0.0.0 255.255.255.0 U 100 0 0 enp4s0 192.168.122.0 0.0.0.0 255.255.255.0 U 0 0 0 virbr0
route 删除路由
使用route del
命令删除到网段或者主机的路由。语法:
route del [-net|-host] [netmask Nm] [gw Gw] [[dev] If]
route del -net 192.168.101.0 netmask 255.255.255.0 dev enp3s0
,代表删除到192.168.101.0/24网段路由。删除网段路由时,网段和掩码这两个参数一定需要携带,dev 参数可以不携带route del -host 192.168.101.100 dev enp3s0
,代表删除到192.168.101.100主机路由。后面的dev参数可以不带- 删除route文件中的路由,采用vi编辑,然后重启网络即可
nmcli 配置静态路由
使用nmcli命令为网络连接配置静态路由,如下:
# nmcli connection modify enp3s0 +ipv4.routes "192.168.122.0/24 10.10.10.1"
使用编辑器配置静态路由,使用交互式命令如下:
# nmcli con edit type ethernet con-name enp3s0 ===| nmcli interactive connection editor |=== Adding a new '802-3-ethernet' connection Type 'help' or '?' for available commands. Type 'describe [<setting>.<prop>]' for detailed property description. You may edit the following settings: connection, 802-3-ethernet (ethernet), 802-1x, ipv4, ipv6, dcb nmcli> set ipv4.routes 192.168.122.0/24 10.10.10.1 nmcli> nmcli> save persistent Saving the connection with 'autoconnect=yes'. That might result in an immediate activation of the connection. Do you still want to save? [yes] yes Connection 'enp3s0' (1464ddb4-102a-4e79-874a-0a42e15cc3c0) successfully saved. nmcli> quit
主机名
主机名是一个局域网中唯一标识一台机器的名称。这台机器不一定是一台物理机器,也可以是一台虚拟机。主机名信息存放在文件 /etc/hostname
中。
设置主机名
- 临时设置主机名(直到下次重启前有效):
hostname new-name
。 - 永久设置主机名:
hostnamectl set-hostname new-name
。 - 通过修改文件设置主机名:在 /etc/hostname 文件中写入 new-name。
设置完成后并不会立即生效,重新登陆后才能在命令提示符中看到,或者 source .bashrc
。使用 hostname 命令查看当前系统的主机名。
hosts 文件
局域网中存在着一些主机,我们可以通过 IP 地址去访问它们。随着局域网中主机数量增加,IP 地址较难记忆,我们希望通过主机名直接访问其他主机。这时我们可以通过一张记录着主机名和 IP 地址的表找到这些主机,这张表就是 hosts。
hosts是一个没有扩展名的系统文件,其基本作用就是将一些常用的网址域名与其对应的 IP 地址建立一个关联“ 数据库 ”。当用户在浏览器中输入一个需要登录的网址时,系统会首先自动从hosts文件中寻找对应的 IP 地址,一旦找到,系统就会立即打开对应网页。如果没有找到,则系统会将网址提交 DNS 域名解析服务器进行 IP 地址的解析。
查看 hosts 文件:cat /etc/hosts
修改hosts 文件
可以用编辑器修改 hosts 文件内容,格式:
ip<TAB>domain.com 192.168.10.20 www.example.com #若想去掉某条记录,加#注释即可 #192.168.10.20 www.example.com
hosts 与 DNS
随着网络中主机数量的增加,单个 hosts 文件难以承载众多的映射关系。当在 hosts 中找不到域名对应的 IP 时,主机会将域名提交给域名解析服务器(DNS),然后 DNS 返回 IP 给主机,这个过程称为:域名解析。
DNS 就像是一个公共的 hosts 文件/分布式数据库。
查询DNS记录
使用 nslookup 命令查询 DNS 中的记录,并且可以查看域名解析是否正常,帮助诊断网络问题。
nslookup 的命令格式如下:
nslookup domain [dns-server]
其中 domain 是要查询的域名,
[dns-server] 是域名解析服务器,非必选参数,常见的如:8.8.8.8,114.114.114.114
nslookup 未安装,采用如下命令进行安装:
yum install -y bind-utils
DNS 解析记录
DNS中除了将域名解析到一个IP地址之外,还支持其他类型的解析记录
解析记录详解:https://itbilu.com/other/relate/EyxzdVl3.html
查询其他记录
直接输入nslookup可进入交互式查询界面。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!