网络进阶
一、VMware 网络模式详解
1.1 虚拟设备说明
| 设备 | 用途 |
|---|---|
| VMnet0 | 桥接(Bridged)模式虚拟交换机 |
| VMnet1 | Host-Only(仅主机)模式虚拟交换机 |
| VMnet8 | NAT 模式虚拟交换机 |
| VMware Network Adapter VMnet1 | 主机 ↔ Host-Only 网络通信的虚拟网卡 |
| VMware Network Adapter VMnet8 | 主机 ↔ NAT 网络通信的虚拟网卡 |
⚠️ 注意:
VMnet8虚拟网卡 不提供路由功能,仅用于通信;NAT 功能由 VMware 虚拟的 NAT 服务器实现。
1.2 三种网络模式对比
| 模式 | IP 与主机关系 | 访问外网 | 主机访问虚拟机 | 虚拟机互访 | 典型用途 |
|---|---|---|---|---|---|
| 桥接(Bridged) | 同一网段 | ✅ 默认可上网 | ✅ | ✅ | 需要独立公网IP的服务器 |
| NAT | 不同网段(私有地址) | ✅(通过 NAT 转换) | ✅ | ✅ | 一般开发测试环境 |
| Host-Only | 不同网段(私有地址) | ❌(全封闭) | ✅ | ✅(同 Host-Only 网络内) | 安全隔离的实验环境 |
💡 思考题答案:
- 虚拟机 A1(Host-Only)可以访问物理主机 B(通过
VMnet1)- 虚拟机 A1 不能访问物理主机 B 下的 NAT 虚拟机(因网络隔离)
二、路由与路由表
2.1 基本概念
- 交换(Switching):同一网络内设备通信(二层,基于 MAC)
- 路由(Routing):跨网络通信(三层,基于 IP)
- 路由表:Linux 内核中记录“目标网络 → 下一跳/出口”的规则表
2.2 查看路由表
# 推荐新命令(iproute2)
ip route show# 旧命令(需安装 net-tools)
route -n
输出示例解析:
default via 192.168.88.2 dev ens160 proto dhcp metric 100
192.168.88.0/24 dev ens160 proto kernel scope link src 192.168.88.100
- 第一行:默认网关(所有未知流量发往
192.168.88.2) - 第二行:直连网络(
192.168.88.0/24通过ens160直接通信)
📌
metric:路由优先级,数值越小优先级越高
2.3 路由类型与配置命令
| 类型 | 作用 | 新命令(iproute2) | 旧命令(net-tools) |
|---|---|---|---|
| 主机路由 | 针对单个 IP | ip route add 192.168.1.1 via 10.1.1.128 |
route add -host 192.168.1.1 gw 10.1.1.128 |
| 网络路由 | 针对整个网段 | ip route add 192.168.1.0/24 via 10.1.1.128 |
route add -net 192.168.1.0 netmask 255.255.255.0 gw 10.1.1.128 |
| 默认网关 | 匹配所有未明确路由 | ip route add default via 10.1.1.128 |
route add default gw 10.1.1.128 |
✅ 最佳实践:
- 跨网段通信 → 使用 网络路由
- 外网访问 → 配置 默认网关
三、路由选择实验(多网络互通)
3.1 实验拓扑
node1 (10.1.1.1/24) ↗
jumper (192.168.1.1/24) ← 作为路由器↘
node2 (172.16.0.1/24)
3.2 实现步骤
-
VMware 准备:
- 创建 3 个 Host-Only 虚拟网络:
192.168.1.0/2410.1.1.0/24172.16.0.0/24
- 克隆 3 台虚拟机:
jumper、node1、node2 - 分别连接到对应网络
- 创建 3 个 Host-Only 虚拟网络:
-
IP 配置:
jumper:192.168.1.1/24node1:10.1.1.1/24node2:172.16.0.1/24
-
关键操作:
- 在 jumper 上添加 2 张新网卡,分别连接
10.1.1.0和172.16.0.0网络 - 配置新网卡 IP:
ens224:10.1.1.128/24ens256:172.16.0.128/24
- 在 jumper 上添加 2 张新网卡,分别连接
-
开启包转发(在 jumper 上):
# 临时生效 echo 1 > /proc/sys/net/ipv4/ip_forward# 永久生效 echo "net.ipv4.ip_forward = 1" >> /etc/sysctl.conf sysctl -p -
配置 node1/node2 路由:
# node1 添加到 node2 网络的路由 ip route add 172.16.0.0/24 via 10.1.1.128# node2 添加到 node1 网络的路由 ip route add 10.1.1.0/24 via 172.16.0.128 -
验证互通:
# node1 ping node2 ping 172.16.0.1
四、NAT 实现内网上网
4.1 场景
node1/node2为 Host-Only 模式(无法直接上网)- 通过
jumper(有外网网卡ens160)做 NAT 网关
4.2 配置步骤
-
jumper 开启包转发(同上)
-
配置 iptables NAT 规则:
iptables -t nat -A POSTROUTING -o ens160 -j MASQUERADE-t nat:操作 NAT 表-A POSTROUTING:处理出站流量-o ens160:匹配外网接口MASQUERADE:动态伪装源 IP(适合 DHCP 环境)
-
node1/node2 设置默认网关:
# node1 ip route add default via 10.1.1.128# node2 ip route add default via 172.16.0.128 -
测试外网连通性:
ping www.baidu.com
4.3 iptables NAT 管理
# 查看规则(带编号)
iptables -t nat -L POSTROUTING --line-numbers -n -v# 删除指定规则(如第1条)
iptables -t nat -D POSTROUTING 1# 查看流量统计
iptables -t nat -L -v
五、网络管理实用命令
5.1 新增网卡配置文件(无图形界面时)
# 自动生成 NetworkManager 连接配置
nmcli connection add type ethernet con-name ens256 ifname ens256# 重启生效
systemctl restart NetworkManager
5.2 TCP 四次挥手(连接断开过程)
| 步骤 | 发起方 | 动作 | 说明 |
|---|---|---|---|
| 1 | 客户端 | 发送 FIN | “我数据发完了,请求关闭” |
| 2 | 服务端 | 回复 ACK | “收到关闭请求,但我可能还有数据要发” |
| 3 | 服务端 | 发送 FIN | “我的数据也发完了,可以关闭了” |
| 4 | 客户端 | 回复 ACK | “确认关闭”,进入 TIME_WAIT |
💡 目的:确保双方都完成数据收发,避免数据丢失
六、核心总结
| 主题 | 关键点 |
|---|---|
| VMware 网络 | 桥接=同网段,NAT=私有+上网,Host-Only=隔离 |
| 路由表 | 决定数据包走向,默认网关是最后兜底 |
| 跨网段通信 | 需中间路由器 + 双向路由 + 开启 ip_forward |
| NAT 上网 | MASQUERADE 规则 + 内网默认网关指向 NAT 主机 |
| 命令演进 | 优先使用 ip route(新),route(旧,需安装) |
| 实验精髓 | jumper 是“三网卡路由器”:外网 + node1网 + node2网 |
✅ 能力要求回顾:
- 能说出 OSI 七层模型
- 能描述客户端→服务器连接过程
- 能用自己的话讲清 TCP 三次握手 & 四次挥手