七、Linux网络管理


一、网络基础概念

1. IP地址

  • 定义:主机在网络中的唯一标识,计算机通过IP地址相互找到对方。
  • 无IP的后果:即使知道对方IP也无法通信(类比:没有住所,知道地址也去不了)。
  • 版本
    • IPv4 :32位二进制,点分十进制表示,如 192.168.200.128
    • IPv6 :128位,十六进制表示,如 fe80::20c:29ff:fea0:879b

2. 公网IP vs 私网IP

  • 公网IP:互联网上全球唯一,任何人可访问。
  • 私网IP :仅在内部网络使用,不能直接路由到公网。常见私网网段:
    • 10.0.0.0/8
    • 172.16.0.0/12
    • 192.168.0.0/16

3. 子网掩码

  • 作用
    • 决定IP地址所在的网段(子网)。
    • 决定该网段可分配的IP地址数量。
  • 表示方法
    • 点分十进制:255.255.255.0
    • CIDR前缀长度:/24
  • 计算示例 (以 192.168.200.128/24 为例):

转成二进制:192等于2^7=128 再加上 2^6=64 相加=192

plain 复制代码
IP:        11000000.10101000.11001000.10000000
掩码:      11111111.11111111.11111111.00000000
#做与运算,1和1等于1,其他都是0,只要两个1,才是1
与运算结果: 11000000.10101000.11001000.00000000 → 192.168.200.0/24(网段)
复制代码
- 主机位全0:网段地址(`192.168.200.0`)
- 主机位全1:广播地址(`192.168.200.255`)
- 可用地址范围:`192.168.200.1` ~ `192.168.200.254`(共254个)
  • 速算公式2^(主机位数) - 2 = 可用IP数(减2为网段地址和广播地址)。

4. 网关

  • 定义:不同网段之间通信的出口地址。
  • 位置:通常配置在路由器或三层交换机的接口上。
  • 作用:跨网段访问时,数据包先发给网关,再由网关转发。
  • 规则:一个主机只能有一个默认网关(默认路由),多个会导致混乱。

5. DNS(域名系统)

  • 定义:Domain Name System,域名与IP地址相互解析的服务。
  • 解析类型
    • 正向解析:域名 → IP(如 www.baidu.com183.2.172.177
    • 反向解析:IP → 域名
  • 常用DNS地址
    • 运营商DNS
    • 公共DNS:223.5.5.5(阿里)、114.114.114.1148.8.8.8(谷歌)
    • 企业内部DNS(如 192.168.200.2
  • 查看DNScat /etc/resolv.conf
  • 测试解析nslookup www.baidu.com

二、网卡设备命名规则

1. 传统命名(RHEL 6及以前,云主机常见)

  • 格式:eth0, eth1, eth2......
  • 特点:按设备检测顺序命名,规律性强,适合自动化脚本。
  • 缺点:可能因硬件变动导致顺序错乱。

2. 基于固件的命名(RHEL 7及以后默认)

  • 格式示例:ens160, eno1, enp2s0, wlx00c0ca123456......
  • 组成:
    • 接口类型
      • en:以太网(Ethernet)
      • wl:无线局域网(WLAN)
      • ww:无线广域网(WWAN)
    • 固件类型
      • s:热插拔(hotplug)
      • o:板载设备(onboard)
      • p:PCI设备
    • 数字:随机ID或端口号

3. 修改为传统命名(ethx)

RHEL 9 方法:
bash 复制代码
cd /boot/loader/entries/
ls   # 找到以 .conf 结尾的文件
vim 89387011b8e9411fbbe5334171282a27-5.14.0-362.8.1.el9_3.x86_64.conf
# 在 options 行添加:net.ifnames=0 biosdevname=0
# 重启
reboot

如果要改回来,把增加的参数删除掉,重启即可

RHEL 7/8 方法:
bash 复制代码
vim /etc/default/grub
# 在 GRUB_CMDLINE_LINUX 中添加:net.ifnames=0 biosdevname=0
grub2-mkconfig -o /boot/grub2/grub.cfg
reboot

如果要改回来,把增加的参数删除

执行grub2-mkconfig -o /boot/grub2/grub.cfg命令并重启即可

4. 自定义命名(通过 udev 规则)

  • 根据 MAC 地址绑定固定名称,如 demo1, demo2

  • 配置文件:/etc/udev/rules.d/10-names.rules

  • 默认是没有文件的,10-network-names.rules是我创建

  • 规则文件命名格式:数字-描述.rules,数字越小优先级越高。

  • 模板文件路径:/lib/udev/rules.d/60-net.rules

  • 网卡自定义命名模板文件

示例:


bash 复制代码
ACTION=="add", SUBSYSTEM=="net",  ATTR{address}=="00:0c:29:0e:ed:de",  NAME="zhaomi"

1.把模板文件复制到/etc/udev/rules.d,这里重命名为10-zhaomi.rules

2.打开并编辑文件,把DRIVERS删除,把ATTR后面和NAME前面的内容删除,并把type改成address

3.把MAC地址粘贴到对应位置

4.保存,reboot重启


三、查看网络信息的命令

信息类型 命令 说明
IP、掩码、广播、MAC、收发统计 ifconfig 默认只显示激活网卡;ifconfig -a 显示所有
同上,功能更强 ip a / ip address show 可显示多个IP,支持彩色输出
DNS地址 cat /etc/resolv.conf 文件中 nameserver
路由表(网关) route -n -n 不解析主机名,显示数字IP
路由表 ip route / ip r 现代推荐
  • 注意 :最小化安装可能没有 ifconfigroute,需安装 net-tools 包,但 ip 命令默认存在。
示例:ifconfig

一个网卡是可以绑定多个地址的(ip命令显示更全)

lo网卡是本地回环地址,127.0.0.1

  • 网卡名:<font style="color:rgb(0, 0, 0);background-color:rgba(0, 0, 0, 0);">ens160</font>
  • 网卡状态:UP(已启用) RUNNING (正在运行),DOWN(未激活)
  • MAC 地址:<font style="color:rgb(0, 0, 0);background-color:rgba(0, 0, 0, 0);">00:0c:29:0e:ed:de</font>(和你之前规则里的 MAC 是同一个)
  • IPV4 地址:<font style="color:rgb(0, 0, 0);background-color:rgba(0, 0, 0, 0);">172.10.0.128</font>
  • IPV6地址: fe80::20c:29ff:fe0e:edde
  • 子网掩码:<font style="color:rgb(0, 0, 0);background-color:rgba(0, 0, 0, 0);">255.255.255.0</font>
  • 广播地址:<font style="color:rgb(0, 0, 0);background-color:rgba(0, 0, 0, 0);">172.10.0.255</font>
  • RX packets 接受包的情况
  • RX errors 0 丢弃 包的情况
  • TX packets 发送包的情况
  • TX errors 发送失败包的情况
示例:DNS地址

nameserver后面就是网关

示例:路由表/网关地址

**默认网关**是:<font style="color:rgb(0, 0, 0);background-color:rgba(0, 0, 0, 0);">192.168.146.2</font>

ip route 最小化也有这个命令


四、网络配置命令

1. 临时配置(重启失效)

ifconfig 用法(会覆盖):
bash 复制代码
ifconfig ens192 192.168.200.200/24          # 配置IP+掩码
ifconfig ens192 up                          # 启用网卡
ifconfig ens192 down                        # 禁用网卡
ifconfig ens192 del 192.168.200.200         # 删除IP
ip 用法(新增):
bash 复制代码
ip addr add 192.168.200.110/24 dev ens192   # 添加IP
ip addr del 192.168.200.200/24 dev ens192   # 删除IP
ip link set ens160 up                       # 启用设备
ip link set ens160 down                     # 禁用设备

ip 可以为同一网卡添加多个IP地址(secondary IP),ifconfig 只能显示一个。

2. 永久配置(RHEL 7+ 使用 NetworkManager)

网卡配置文件位置:
  • RHEL 9/etc/NetworkManager/system-connections/*.nmconnection
  • RHEL 7/8/etc/sysconfig/network-scripts/ifcfg-*(部分仍支持)
NetworkManager 核心工具:
  • nmtui:文本图形界面,适合初学者。
  • nmcli:命令行,功能强大,推荐掌握。

3. nmcli 详细用法

设备管理(device):
bash 复制代码
nmcli device status                # 查看所有设备状态
nmcli device connect ens160        # 激活设备(若没有connection会自动创建)
nmcli device disconnect ens160     # 断开设备(但connection仍存在)

查看所有设备

断开设备

断开就没 IP了

重新连接

指定网卡的详细信息

连接管理(connection):
  • 一个 connection 对应一个配置文件(.nmconnection),名字由 con-NAME 指定。(NAME是文件内容的 id字段名)
  • 注意nmcli connection 后面跟的是 连接名 ,不是设备名(虽然通常相同)。

语法:nmcli connection name/UUID

可以跟name也可以跟UUID的值

bash 复制代码
nmcli connection show              # 列出所有连接(含UUID、设备、类型)
nmcli connection up ens192         # 激活连接(up后设备才会获得IP)
nmcli connection down ens192       # 停用连接
nmcli connection delete ens160     # 删除连接(同时删除配置文件)
新增 connection(为一张新网卡配置永久IP):
bash 复制代码
nmcli connection add type ethernet con-name mynet ifname ens160 \
ipv4.method manual ipv4.addresses 192.168.200.100/24 \
ipv4.dns 223.5.5.5 ipv4.gateway 192.168.200.2 autoconnect yes
  • type ethernet:有线网卡类型
  • con-name:连接名(自定义)
  • ifname:物理设备名
  • ipv4.methodmanual(静态)或 auto(DHCP)
  • autoconnect yes:开机自动激活
修改已有 connection:
bash 复制代码
nmcli connection modify mynet ipv4.addresses 192.168.200.101/24   #覆盖
nmcli connection modify mynet +ipv4.addresses 192.168.200.101/24  #+号新增,-号删除
nmcli connection modify mynet ipv4.dns 114.114.114.114    #上同
nmcli connection up mynet          # 修改后需重新激活
手动修改配置文件后生效方式:
  • 不推荐直接改文件,但若改了,需要:
bash 复制代码
systemctl restart NetworkManager
nmcli connection up <连接名>
# 或
nmcli connection reload
nmcli connection up <连接名>

五、路由配置

路由类型

  • 默认路由 (缺省路由):目标任意,通过指定网关(0.0.0.0/0
  • 主机路由 :到特定主机(如 1.1.1.1/32
  • 子网路由 :到特定网段(如 172.16.0.0/24

route 命令(net-tools)

bash 复制代码
# 添加主机路由
route add -host 1.1.1.2 gw 192.168.200.2

# 添加子网路由
route add -net 172.16.0.0/24 gw 10.10.10.1

# 添加默认路由
route add default gw 192.168.200.2

# 删除路由(将 add 替换为 del)
route del -net 172.16.0.0/24

4个255就是主机路由

ip route 命令(iproute2)

bash 复制代码
# 主机路由
ip route add 1.1.1.1 via 192.168.200.2 dev ens160

# 子网路由
ip route add 2.2.2.0/24 via 192.168.200.2 dev ens160

# 默认路由
ip route add default via 192.168.200.2 dev ens160

# 查看路由表
ip route show

# 删除路由
ip route del 2.2.2.0/24

重要 :一台主机只能有一个默认路由。若配置多个,需要通过 metric 指定优先级,否则可能导致网络异常。


六、主机名管理

查看主机名

bash 复制代码
hostname           # 短主机名
hostnamectl        # 详细信息

修改主机名(永久生效)

bash 复制代码
hostnamectl set-hostname lab1.example.com
bash/ su -,重新登录 后生效
  • 自动写入 /etc/hostname,修改这个文件一样可以
  • 旧方法(临时):hostname 新名字(重启失效)

执行完命令主机名没有立即生效,所有我们要bash一下

主机名与 hosts 文件

  • 文件:/etc/hosts
  • 作用:本地静态解析,优先级高于DNS。
  • 格式:
plain 复制代码
127.0.0.1   localhost localhost.localdomain
192.168.200.128  lab1.example.com lab1

七、服务与端口

1. 端口概念

  • 每个网络服务监听一个或多个端口(TCP或UDP)。
  • 常见端口:
    • SSH:22/tcp
    • HTTP:80/tcp
    • HTTPS:443/tcp
    • DNS:53/tcp + 53/udp

2. 端口与服务映射文件

bash 复制代码
cat /etc/services   # 列出常用服务与端口号

3. 查看监听端口

  • TCP:可靠
  • UDP:不可靠
ss 命令(推荐,性能优于 netstat)

如果你想查看哪些客户端和当前主机做了连接那么使用ss-an查询

bash 复制代码
ss -tunlp
# 选项:
# -t  TCP连接
# -u  UDP连接
# -n  不解析服务名(显示数字端口)
# -l  仅显示监听状态
# -p  显示进程PID和名称
netstat 命令(需安装 net-tools)
bash 复制代码
netstat -tunlp
# 选项含义同上
  • 示例输出:
plain 复制代码
tcp   LISTEN  0  128  0.0.0.0:22    0.0.0.0:*    users:(("sshd",pid=1234))

表示 sshd 监听在 22 端口。

4. 查看已建立的连接

bash 复制代码
ss -an   # 所有连接(包括非监听)

八、双网卡绑定(Bonding)

概念

  • 将多张物理网卡虚拟成一张逻辑网卡,提供链路冗余或负载均衡。
  • 常见模式:
    • bond0:轮询(round-robin),负载均衡,需交换机支持。
    • bond1:主备(active-backup),高可用,一主一备。
    • bond4 :802.3ad(LACP),链路聚合,需交换机配置。

实验环境准备(VMware)

  • 虚拟机添加至少两张网卡(如 ens192、ens224),模式相同(均为 NAT 或仅主机)。
  • 使用 nmcli 配置(RHEL 7+ 推荐)。

配置 bond1(主备模式)步骤

1. 创建 bond 虚拟接口

如果创建的设备不存在,会创建一个虚拟设备

bash 复制代码
nmcli connection add type bond con-name bond1-con ifname bond1 mode active-backup
  • con-name:连接名
  • ifname:虚拟设备名(bond1
  • modeactive-backup(主备),balance-rr(轮询),802.3ad(LACP)
2. 添加物理网卡到 bond
bash 复制代码
nmcli connection add type bond-slave con-name bond1-ens192 ifname ens192 master bond1
nmcli connection add type bond-slave con-name bond1-ens224 ifname ens224 master bond1
  • type bond-slave:指定为 bond 的从属接口
  • master bond1:指定所属的 bond 接口名(设备名)
3. 配置 bond 的 IP 地址
bash 复制代码
nmcli connection modify bond1-con ipv4.method manual ipv4.addresses 10.10.10.100/24
4. 激活 bond
bash 复制代码
nmcli connection up bond1-con

查看 bond 状态

bash 复制代码
cat /proc/net/bonding/bond1
  • 输出会显示:bonding 模式、当前活动从属网卡(Currently Active Slave)、各从属网卡状态等。

注意事项

  • VMware 环境下,bond 后各物理网卡的 MAC 地址会变成相同(因为虚拟交换机的行为)。
  • 测试主备:断开当前活动网卡(如 nmcli device disconnect ens192),观察网络是否依然畅通,活动网卡是否自动切换到 ens224。
  • 删除 bond:
bash 复制代码
nmcli connection delete bond1-con
nmcli connection delete bond1-ens192
nmcli connection delete bond1-ens224

九、VMware 三种网络模式(虚拟化通用)

模式 能否上网 宿主机能否访问 外部能否访问虚拟机 说明
桥接模式 ✅(需同网段) ✅(需同网段) 复用物理网卡,虚拟机与宿主机在同一局域网
NAT模式 ✅(仅宿主机通过VMnet8) ❌(需端口转发) 通过SNAT上网,宿主机可访问,外部不可直接访问
仅主机模式 ✅(通过VMnet1) 纯内部网络,无上行链路

1. 桥接模式

  • 原理:将物理网卡当作虚拟交换机,虚拟机直接接入该交换机。
  • 网络要求 :虚拟机的IP需与物理网卡所在子网一致(如物理机IP是 192.168.1.10/24,虚拟机也需配置同一网段)。
  • 优点:可被外部直接访问,适合提供服务。

2. NAT模式

  • 原理:通过虚拟NAT设备做源地址转换(SNAT),虚拟机共享宿主机IP上网。
  • 默认网关 :子网的第二个地址(如 192.168.x.2)。
  • 宿主机访问 :通过虚拟网卡 VMnet8(IP 通常为 192.168.x.1)。
  • 外部访问:默认不行,但可配置端口转发(DNAT)实现。

3. 仅主机模式

  • 原理:虚拟交换机没有上行链路,完全隔离,只能与宿主机和其他同模式虚拟机通信。
  • 宿主机访问 :通过虚拟网卡 VMnet1
  • 常见用途:搭建内部测试环境,不需要上网的场景。

4. 常见误区澄清

  • "禁用宿主机上的 VMnet1 或 VMnet8,虚拟机之间仍能通信?"
    是的,VMnet 网卡仅用于宿主机与虚拟机的通信,虚拟机之间的通信在虚拟交换机内部完成,不受影响。
  • "NAT 模式下虚拟机上网依赖宿主机物理网卡是否正常?"
    是的,只要宿主机能上网,虚拟机就能通过 NAT 上网。

十、补充:网桥(Bridge)

  • 作用:类似于 bond,但用于连接多个网络设备(如虚拟机网卡和物理网卡),实现二层交换。
  • 配置示例(使用 nmcli):
bash 复制代码
nmcli connection add type bridge con-name br0-con ifname br0
nmcli connection add type bridge-slave con-name br0-ens192 ifname ens192 master br0
nmcli connection modify br0-con ipv4.method manual ipv4.addresses 192.168.200.50/24
nmcli connection up br0-con
  • 查看网桥状态:brctl show(需安装 bridge-utils)或 bridge link show

十一、实验建议(自查清单)

  1. 使用 ifconfig 临时配置 IP,重启后验证是否失效。
  2. 使用 ip 命令为同一网卡添加多个 IP ,查看 ip a 输出。
  3. 使用 nmcli 永久配置静态 IP,修改后重启 NetworkManager 并验证。
  4. 配置 bond1 并测试主备切换:拔掉(或 down)主网卡,ping 是否中断。
  5. 使用 ss 命令查看 sshd 监听端口
  6. 修改主机名 ,并通过 hostnamectl 确认。
  7. 在 VMware 中分别测试三种网络模式,观察 IP 分配、能否 ping 通网关、能否访问外网。

相关推荐
两个人的幸福8 天前
Windows 桌面应用自研 PHP 队列(下):完整代码与六大工程化优化
php
zzzzzz3109 天前
9K Star 炸裂开源!这个 C 语言写的代码知识图谱,把 Linux 内核索引压缩到了 3 分钟
linux·服务器·sql
BingoGo11 天前
PHP 泛型之殇 泛型 RFC 提案被拒绝
后端·php
JaguarJack11 天前
PHP 泛型之殇 泛型 RFC 提案被拒绝
后端·php
用户30745969820711 天前
PHP 扩展——从入门到理解
php
鹏仔先生12 天前
拷贝漫画APP下载页PHP程序,后台带免费AI写作
php
大树8812 天前
金刚石散热越强,管路越先见顶
大数据·运维·服务器·人工智能·ai
小宇宙Zz12 天前
Maven依赖冲突
java·服务器·maven
网络研究院12 天前
2026年网络安全
网络·安全·法律·法规·趋势·发展
酣大智12 天前
ARP代理--工作原理
运维·网络·arp·arp代理