七、Linux网络管理 一、网络基础概念1. IP地址定义主机在网络中的唯一标识计算机通过IP地址相互找到对方。无IP的后果即使知道对方IP也无法通信类比没有住所知道地址也去不了。版本IPv432位二进制点分十进制表示如192.168.200.128。IPv6128位十六进制表示如fe80::20c:29ff:fea0:879b。2. 公网IP vs 私网IP公网IP互联网上全球唯一任何人可访问。私网IP仅在内部网络使用不能直接路由到公网。常见私网网段10.0.0.0/8172.16.0.0/12192.168.0.0/163. 子网掩码作用决定IP地址所在的网段子网。决定该网段可分配的IP地址数量。表示方法点分十进制255.255.255.0CIDR前缀长度/24计算示例以192.168.200.128/24为例转成二进制192等于2^7128 再加上 2^664 相加192IP: 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 → 域名常用DNS地址运营商DNS公共DNS223.5.5.5阿里、114.114.114.114、8.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以太网Ethernetwl无线局域网WLANww无线广域网WWAN固件类型s热插拔hotplugo板载设备onboardpPCI设备数字随机ID或端口号3. 修改为传统命名ethxRHEL 9 方法cd/boot/loader/entries/ls# 找到以 .conf 结尾的文件vim89387011b8e9411fbbe5334171282a27-5.14.0-362.8.1.el9_3.x86_64.conf# 在 options 行添加net.ifnames0 biosdevname0# 重启reboot如果要改回来把增加的参数删除掉重启即可RHEL 7/8 方法vim/etc/default/grub# 在 GRUB_CMDLINE_LINUX 中添加net.ifnames0 biosdevname0grub2-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示例ACTIONadd,SUBSYSTEMnet, ATTR{address}00:0c:29:0e:ed:de,NAMEzhaomi1.把模板文件复制到/etc/udev/rules.d这里重命名为10-zhaomi.rules2.打开并编辑文件把DRIVERS删除把ATTR后面和NAME前面的内容删除并把type改成address3.把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 stylecolor:rgb(0, 0, 0);background-color:rgba(0, 0, 0, 0);ens160/font网卡状态UP已启用 RUNNING 正在运行DOWN未激活MAC 地址font stylecolor:rgb(0, 0, 0);background-color:rgba(0, 0, 0, 0);00:0c:29:0e:ed:de/font和你之前规则里的 MAC 是同一个IPV4 地址font stylecolor:rgb(0, 0, 0);background-color:rgba(0, 0, 0, 0);172.10.0.128/fontIPV6地址 fe80::20c:29ff:fe0e:edde子网掩码font stylecolor:rgb(0, 0, 0);background-color:rgba(0, 0, 0, 0);255.255.255.0/font广播地址font stylecolor:rgb(0, 0, 0);background-color:rgba(0, 0, 0, 0);172.10.0.255/fontRX packets 接受包的情况RX errors 0 丢弃 包的情况TX packets 发送包的情况TX errors 发送失败包的情况示例DNS地址nameserver后面就是网关示例路由表/网关地址**默认网关**是font stylecolor:rgb(0, 0, 0);background-color:rgba(0, 0, 0, 0);192.168.146.2/fontip 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 IPifconfig只能显示一个。2. 永久配置RHEL 7 使用 NetworkManager网卡配置文件位置RHEL 9/etc/NetworkManager/system-connections/*.nmconnectionRHEL 7/8/etc/sysconfig/network-scripts/ifcfg-*部分仍支持NetworkManager 核心工具nmtui文本图形界面适合初学者。nmcli命令行功能强大推荐掌握。3. nmcli 详细用法设备管理devicenmcli 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后设备才会获得IPnmcli connection down ens192# 停用连接nmcli connection delete ens160# 删除连接同时删除配置文件新增 connection为一张新网卡配置永久IPnmcli 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.methodmanual静态或autoDHCPautoconnect yes开机自动激活修改已有 connectionnmcli 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/24route 命令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 替换为 delroute 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。常见端口SSH22/tcpHTTP80/tcpHTTPS443/tcpDNS53/tcp 53/udp2. 端口与服务映射文件cat/etc/services# 列出常用服务与端口号3. 查看监听端口TCP:可靠UDP不可靠ss 命令推荐性能优于 netstat如果你想查看哪些客户端和当前主机做了连接那么使用ss-an查询ss-tunlp# 选项# -t TCP连接# -u UDP连接# -n 不解析服务名显示数字端口# -l 仅显示监听状态# -p 显示进程PID和名称netstat 命令需安装 net-toolsnetstat-tunlp# 选项含义同上示例输出tcp LISTEN 0 128 0.0.0.0:22 0.0.0.0:* users:((sshd,pid1234))表示 sshd 监听在 22 端口。4. 查看已建立的连接ss-an# 所有连接包括非监听八、双网卡绑定Bonding概念将多张物理网卡虚拟成一张逻辑网卡提供链路冗余或负载均衡。常见模式bond0轮询round-robin负载均衡需交换机支持。bond1主备active-backup高可用一主一备。bond4802.3adLACP链路聚合需交换机配置。实验环境准备VMware虚拟机添加至少两张网卡如 ens192、ens224模式相同均为 NAT 或仅主机。使用nmcli配置RHEL 7 推荐。配置 bond1主备模式步骤1. 创建 bond 虚拟接口如果创建的设备不存在会创建一个虚拟设备nmcli connectionaddtypebond con-name bond1-con ifname bond1 mode active-backupcon-name连接名ifname虚拟设备名bond1modeactive-backup主备balance-rr轮询802.3adLACP2. 添加物理网卡到 bondnmcli 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. 激活 bondnmcli connection up bond1-con查看 bond 状态cat/proc/net/bonding/bond1输出会显示bonding 模式、当前活动从属网卡Currently Active Slave、各从属网卡状态等。注意事项VMware 环境下bond 后各物理网卡的 MAC 地址会变成相同因为虚拟交换机的行为。测试主备断开当前活动网卡如nmcli device disconnect ens192观察网络是否依然畅通活动网卡是否自动切换到 ens224。删除 bondnmcli 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。宿主机访问通过虚拟网卡VMnet8IP 通常为192.168.x.1。外部访问默认不行但可配置端口转发DNAT实现。3. 仅主机模式原理虚拟交换机没有上行链路完全隔离只能与宿主机和其他同模式虚拟机通信。宿主机访问通过虚拟网卡VMnet1。常见用途搭建内部测试环境不需要上网的场景。4. 常见误区澄清“禁用宿主机上的 VMnet1 或 VMnet8虚拟机之间仍能通信”是的VMnet 网卡仅用于宿主机与虚拟机的通信虚拟机之间的通信在虚拟交换机内部完成不受影响。“NAT 模式下虚拟机上网依赖宿主机物理网卡是否正常”是的只要宿主机能上网虚拟机就能通过 NAT 上网。十、补充网桥Bridge作用类似于 bond但用于连接多个网络设备如虚拟机网卡和物理网卡实现二层交换。配置示例使用 nmclinmcli 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 通网关、能否访问外网。