一、网络基础概念
1. IP地址
- 定义:主机在网络中的唯一标识,计算机通过IP地址相互找到对方。
- 无IP的后果:即使知道对方IP也无法通信(类比:没有住所,知道地址也去不了)。
- 版本:
- IPv4:32位二进制,点分十进制表示,如
192.168.200.128。 - IPv6:128位,十六进制表示,如
fe80::20c:29ff:fea0:879b。
- IPv4:32位二进制,点分十进制表示,如
2. 公网IP vs 私网IP
- 公网IP:互联网上全球唯一,任何人可访问。
- 私网IP:仅在内部网络使用,不能直接路由到公网。常见私网网段:
10.0.0.0/8172.16.0.0/12192.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
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.com→183.2.172.177) - 反向解析:IP → 域名
- 正向解析:域名 → IP(如
- 常用DNS地址:
- 运营商DNS
- 公共DNS:
223.5.5.5(阿里)、114.114.114.114、8.8.8.8(谷歌) - 企业内部DNS(如
192.168.200.2)
- 查看DNS:
cat /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 方法:
cd/boot/loader/entries/ls# 找到以 .conf 结尾的文件vim89387011b8e9411fbbe5334171282a27-5.14.0-362.8.1.el9_3.x86_64.conf# 在 options 行添加:net.ifnames=0 biosdevname=0# 重启reboot如果要改回来,把增加的参数删除掉,重启即可
RHEL 7/8 方法:
vim/etc/default/grub# 在 GRUB_CMDLINE_LINUX 中添加:net.ifnames=0 biosdevname=0grub2-mkconfig-o/boot/grub2/grub.cfgreboot如果要改回来,把增加的参数删除
执行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
示例:
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 | 现代推荐 |
- 注意:最小化安装可能没有
ifconfig和route,需安装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 用法(会覆盖):
ifconfigens192192.168.200.200/24# 配置IP+掩码ifconfigens192 up# 启用网卡ifconfigens192 down# 禁用网卡ifconfigens192 del192.168.200.200# 删除IPip 用法(新增):
ipaddradd192.168.200.110/24 dev ens192# 添加IPipaddr del192.168.200.200/24 dev ens192# 删除IPiplinksetens160 up# 启用设备iplinksetens160 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):
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的值
nmcli connection show# 列出所有连接(含UUID、设备、类型)nmcli connection up ens192# 激活连接(up后设备才会获得IP)nmcli connection down ens192# 停用连接nmcli connection delete ens160# 删除连接(同时删除配置文件)新增 connection(为一张新网卡配置永久IP):
nmcli connectionaddtypeethernet con-name mynet ifname ens160\ipv4.method manual ipv4.addresses192.168.200.100/24\ipv4.dns223.5.5.5 ipv4.gateway192.168.200.2 autoconnectyestype ethernet:有线网卡类型con-name:连接名(自定义)ifname:物理设备名ipv4.method:manual(静态)或auto(DHCP)autoconnect yes:开机自动激活
修改已有 connection:
nmcli connection modify mynet ipv4.addresses192.168.200.101/24#覆盖nmcli connection modify mynet +ipv4.addresses192.168.200.101/24#+号新增,-号删除nmcli connection modify mynet ipv4.dns114.114.114.114#上同nmcli connection up mynet# 修改后需重新激活手动修改配置文件后生效方式:
- 不推荐直接改文件,但若改了,需要:
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)
# 添加主机路由routeadd-host1.1.1.2 gw192.168.200.2# 添加子网路由routeadd-net172.16.0.0/24 gw10.10.10.1# 添加默认路由routeadddefault gw192.168.200.2# 删除路由(将 add 替换为 del)route del-net172.16.0.0/244个255就是主机路由
ip route 命令(iproute2)
# 主机路由iprouteadd1.1.1.1 via192.168.200.2 dev ens160# 子网路由iprouteadd2.2.2.0/24 via192.168.200.2 dev ens160# 默认路由iprouteadddefault via192.168.200.2 dev ens160# 查看路由表iproute show# 删除路由iproute del2.2.2.0/24重要:一台主机只能有一个默认路由。若配置多个,需要通过
metric指定优先级,否则可能导致网络异常。
六、主机名管理
查看主机名
hostname# 短主机名hostnamectl# 详细信息修改主机名(永久生效)
hostnamectl set-hostname lab1.example.com bash/su-,重新登录 后生效- 自动写入
/etc/hostname,修改这个文件一样可以 - 旧方法(临时):
hostname 新名字(重启失效)
执行完命令主机名没有立即生效,所有我们要bash一下
主机名与 hosts 文件
- 文件:
/etc/hosts - 作用:本地静态解析,优先级高于DNS。
- 格式:
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. 端口与服务映射文件
cat/etc/services# 列出常用服务与端口号3. 查看监听端口
- TCP:可靠
- UDP:不可靠
ss 命令(推荐,性能优于 netstat)
如果你想查看哪些客户端和当前主机做了连接那么使用ss-an查询
ss-tunlp# 选项:# -t TCP连接# -u UDP连接# -n 不解析服务名(显示数字端口)# -l 仅显示监听状态# -p 显示进程PID和名称netstat 命令(需安装 net-tools)
netstat-tunlp# 选项含义同上- 示例输出:
tcp LISTEN 0 128 0.0.0.0:22 0.0.0.0:* users:(("sshd",pid=1234))表示 sshd 监听在 22 端口。
4. 查看已建立的连接
ss-an# 所有连接(包括非监听)八、双网卡绑定(Bonding)
概念
- 将多张物理网卡虚拟成一张逻辑网卡,提供链路冗余或负载均衡。
- 常见模式:
- bond0:轮询(round-robin),负载均衡,需交换机支持。
- bond1:主备(active-backup),高可用,一主一备。
- bond4:802.3ad(LACP),链路聚合,需交换机配置。
实验环境准备(VMware)
- 虚拟机添加至少两张网卡(如 ens192、ens224),模式相同(均为 NAT 或仅主机)。
- 使用
nmcli配置(RHEL 7+ 推荐)。
配置 bond1(主备模式)步骤
1. 创建 bond 虚拟接口
如果创建的设备不存在,会创建一个虚拟设备
nmcli connectionaddtypebond con-name bond1-con ifname bond1 mode active-backupcon-name:连接名ifname:虚拟设备名(bond1)mode:active-backup(主备),balance-rr(轮询),802.3ad(LACP)
2. 添加物理网卡到 bond
nmcli connectionaddtypebond-slave con-name bond1-ens192 ifname ens192 master bond1 nmcli connectionaddtypebond-slave con-name bond1-ens224 ifname ens224 master bond1type bond-slave:指定为 bond 的从属接口master bond1:指定所属的 bond 接口名(设备名)
3. 配置 bond 的 IP 地址
nmcli connection modify bond1-con ipv4.method manual ipv4.addresses10.10.10.100/244. 激活 bond
nmcli connection up bond1-con查看 bond 状态
cat/proc/net/bonding/bond1- 输出会显示:bonding 模式、当前活动从属网卡(Currently Active Slave)、各从属网卡状态等。
注意事项
- VMware 环境下,bond 后各物理网卡的 MAC 地址会变成相同(因为虚拟交换机的行为)。
- 测试主备:断开当前活动网卡(如
nmcli device disconnect ens192),观察网络是否依然畅通,活动网卡是否自动切换到 ens224。 - 删除 bond:
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):
nmcli connectionaddtypebridge con-name br0-con ifname br0 nmcli connectionaddtypebridge-slave con-name br0-ens192 ifname ens192 master br0 nmcli connection modify br0-con ipv4.method manual ipv4.addresses192.168.200.50/24 nmcli connection up br0-con- 查看网桥状态:
brctl show(需安装 bridge-utils)或bridge link show。
十一、实验建议(自查清单)
- 使用 ifconfig 临时配置 IP,重启后验证是否失效。
- 使用 ip 命令为同一网卡添加多个 IP,查看
ip a输出。 - 使用 nmcli 永久配置静态 IP,修改后重启 NetworkManager 并验证。
- 配置 bond1 并测试主备切换:拔掉(或 down)主网卡,ping 是否中断。
- 使用 ss 命令查看 sshd 监听端口。
- 修改主机名,并通过
hostnamectl确认。 - 在 VMware 中分别测试三种网络模式,观察 IP 分配、能否 ping 通网关、能否访问外网。