深入解析VMware NAT网络与Ubuntu高效配置指南
一、VMware NAT 网络原理
网络架构
Windows 宿主机 VMware 后台 Ubuntu 虚拟机 │ │ │ VMnet8 网卡 NAT 服务 ens33 网卡 192.168.84.1 ←────────→ 192.168.84.2 ←────────→ 192.168.84.91三个关键 IP
| 组件 | IP | 位置 | 作用 |
|---|---|---|---|
| VMnet8 虚拟网卡 | 192.168.84.1 | Windows 系统 | 宿主机与虚拟机通信的桥梁 |
| VMware NAT 网关 | 192.168.84.2 | VMware 后台进程 | 执行 NAT 转换、DHCP、DNS 转发 |
| 虚拟机网卡 | 192.168.84.91 | Ubuntu 系统 | 虚拟机自身网络身份 |
关键点
- 虚拟机 IP 必须与 VMnet8 在同一子网(192.168.84.0/24)
- 网关必须指向 NAT 服务地址(192.168.84.2)
- 配置修改后需重启 VMware NAT Service 生效
二、Ubuntu 网络配置
Netplan 配置文件
位置:/etc/netplan/00-installer-config.yaml
network:version:2ethernets:ens33:dhcp4:falseaddresses:-192.168.84.91/24routes:-to:defaultvia:192.168.84.2nameservers:addresses:-8.8.8.8-114.114.114.114注意事项
- YAML 缩进必须用空格,不能用 Tab
- 文件权限必须是 600:
chmod 600 /etc/netplan/*.yaml - 应用配置:
sudo netplan apply - 验证路由:
ip route必须看到default via 192.168.84.2
图形界面配置
nm-connection-editor三、SSH 连接配置
密码登录
sshlinfu@192.168.84.91密钥认证(免密登录)
原理
私钥(Windows) 公钥(Ubuntu) 锁 ←匹配→ 钥匙生成密钥对
ssh-keygen-t ed25519-C"备注"生成两个文件:
id_ed25519— 私钥(本地保管,不泄露)id_ed25519.pub— 公钥(放到服务器)
复制公钥到服务器
# Ubuntu 终端执行mkdir-p~/.sshecho"ssh-ed25519 AAAA...你的公钥...">>~/.ssh/authorized_keyschmod600~/.ssh/authorized_keys验证过程(数字签名)
- 服务端发送随机挑战数据
- 客户端用私钥对挑战数据签名
- 服务端用公钥验证签名
- 验证通过,允许登录
不是简单的加密解密,而是数学上的真伪验证。
密钥文件位置
| 文件 | Windows 路径 | Ubuntu 路径 |
|---|---|---|
| 私钥 | ~/.ssh/id_ed25519 | - |
| 公钥 | ~/.ssh/id_ed25519.pub | - |
| 授权列表 | - | ~/.ssh/authorized_keys |
四、终端外观配置
PS1 提示符
文件:~/.bashrc
# 多行提示符 + 颜色PS1='\[\e[1;32m\]\u\[\e[0m\]@\[\e[1;36m\]\h\[\e[0m\] \[\e[1;34m\]\w\[\e[0m\]\n\[\e[1;33m\]➜\[\e[0m\] 'PROMPT_COMMAND='echo'效果:
linfu@myfirstubuntu ~ ➜\u— 用户名(绿色)\h— 主机名(青色)\w— 当前路径(蓝色)\n— 换行➜— 命令提示符(黄色)
应用:source ~/.bashrc
五、/etc/hosts 文件
作用
本地 DNS 解析,优先级高于 DNS 服务器。
默认内容
127.0.0.1 localhost 127.0.1.1 myfirstubuntu用途
| 场景 | 示例 |
|---|---|
| 给服务器起别名 | 192.168.84.91 myserver |
| 屏蔽广告域名 | 127.0.0.1 ad.example.com |
| 开发测试 | 127.0.0.1 api.test.com |
六、Ubuntu 部署项目注意事项
必须关注的文件
| 文件 | 作用 |
|---|---|
/etc/netplan/*.yaml | 网络配置 |
/etc/hostname | 主机名 |
/etc/hosts | 域名解析 |
~/.bashrc | 用户 shell 配置 |
/etc/systemd/system/ | 自定义服务 |
/var/log/ | 日志文件 |
常用命令
# 进程管理psaux|grep进程名 systemctl status/restart/enable 服务名# 网络排查ss-tlnp# 端口占用ufw allow80/tcp# 开放端口curl-vhttp://localhost# 测试接口# 磁盘与性能df-h# 磁盘使用free-h# 内存使用htop# 资源监控# 日志查看tail-f/var/log/syslog journalctl-u服务名-f易踩的坑
- 防火墙没开端口— 应用启动了但外部访问不了
- 服务没有开机自启— 重启后服务消失
- 文件权限问题— root 创建的文件普通用户无法读写
- 时区不对—
timedatectl set-timezone Asia/Shanghai - 磁盘满了— 定期清理
/var/log/和 apt 缓存
systemd 服务模板
[Unit] Description=项目描述 After=network.target [Service] Type=simple User=linfu WorkingDirectory=/home/linfu/项目路径 ExecStart=/usr/bin/node app.js Restart=always RestartSec=5 [Install] WantedBy=multi-user.targetsudosystemctl daemon-reloadsudosystemctlenable--now服务名七、今日配置记录
| 配置项 | 值 |
|---|---|
| VMnet8 子网 | 192.168.84.0/24 |
| Ubuntu IP | 192.168.84.91 |
| 网关 | 192.168.84.2 |
| SSH 用户 | linfu |
| SSH 认证 | Ed25519 密钥 |
| 终端样式 | 多行彩色提示符 |
