PVE相关教程
SDN快速创建和使用
ProxmoxVE使用云镜像Cloud-Init快速创建虚拟机
iptables规则持久化
PVE相关脚本
PVE虚拟机备份与恢复
使用 systemd-networkd 配置网络
ubuntu云镜像安装
PVE添加目录映射
PVE硬件直通
PVE虚拟机通过宿主机NAT上网教程
PVE一键显示温度、CPU 频率、硬盘信息教程
PVE限制ZFS的内存占用
OpenWRT/iStoreOS 安装 qemu-guest-agent
本文档使用 MrDoc 发布
-
+
首页
PVE虚拟机通过宿主机NAT上网教程
本文将演示如何在 **Proxmox VE (PVE)** 中,让虚拟机通过宿主机的公网 IP NAT 上网,而不占用额外公网 IP。 --- ## 🔹 前提条件 * 宿主机已有公网 IP(示例为 `54.39.x.x`)绑定在网桥 `vmbr0`。 * Proxmox VE 已安装并可访问管理界面。 * 对宿主机操作有 root 权限。 --- ## 1️⃣ 添加内部虚拟网桥 `vmbr1` 为了实现 NAT,我们先创建一个内部网桥 `vmbr1`,专门供虚拟机使用。 1. 编辑网络配置文件: ```bash vim /etc/network/interfaces ``` 2. 添加以下内容: ```ini auto vmbr1 iface vmbr1 inet static address 10.0.0.1/24 bridge-ports none bridge-stp off bridge-fd 0 ``` > ⚠️ 注意:`bridge-ports none` 表示这是一个纯内部网桥,不绑定物理网口。 3. 保存后应用配置: ```bash ifreload -a ``` --- ## 2️⃣ 启用 IP 转发 为了让虚拟机的流量可以经过宿主机访问外网,需要启用 IP 转发。 ```bash echo "net.ipv4.ip_forward=1" >> /etc/sysctl.conf sysctl -p ``` > 这会立即生效,并在系统重启后保持。 --- ## 3️⃣ 配置 NAT (SNAT) 我们用 `iptables` 将内部网段流量转换成宿主机公网 IP。 ```bash iptables -t nat -F POSTROUTING iptables -F FORWARD iptables -t nat -A POSTROUTING -s 10.0.0.0/24 -o vmbr0 -j SNAT --to-source 54.39.x.x iptables -A FORWARD -s 10.0.0.0/24 -j ACCEPT iptables -A FORWARD -d 10.0.0.0/24 -m state --state RELATED,ESTABLISHED -j ACCEPT ``` ### 保存 iptables 规则 ```bash apt install iptables-persistent -y netfilter-persistent save ``` > 这样重启后规则仍然有效。 --- ## 4️⃣ 配置虚拟机网络 1. 在 PVE Web 界面给虚拟机添加一块网络设备: * **桥接**选择 `vmbr1` 2. 启动虚拟机并配置网络(示例静态 IP): ``` IP: 10.0.0.100/24 Gateway: 10.0.0.1 DNS: 8.8.8.8 ``` > 如果希望虚拟机自动获取 IP,可后续配置 `dnsmasq` DHCP 服务。 --- ## 5️⃣ 验证 NAT 是否成功 在虚拟机里执行: ```bash ping 8.8.8.8 curl ifconfig.me ``` * 如果能 ping 通外网 IP,则网络连通。 * `curl ifconfig.me` 返回的 IP 应该是宿主机公网 IP(示例:`54.39.102.186`)。 --- ## 6️⃣ 总结表 | 项目 | 用途 | | ------- | ---------- | | `vmbr0` | 宿主机公网访问 | | `vmbr1` | 虚拟机 NAT 内网 | | `eno2` | 当前未使用,可保留 | --- ## ✅ 可选:使用 DHCP 自动分配 IP 如果不想手动配置虚拟机 IP,可以安装 `dnsmasq` 提供 DHCP: ```bash apt install dnsmasq -y ``` 在 `/etc/dnsmasq.conf` 中添加: ```ini interface=vmbr1 dhcp-range=192.168.100.50,192.168.100.200,12h ``` 重启 dnsmasq: ```bash systemctl restart dnsmasq ``` 虚拟机即可自动获取 IP。 --- 这套方案的好处: * 不占用额外公网 IP * 虚拟机可以访问外网 * 内部网络与宿主机隔离,便于管理
koalalove
2025年11月17日 09:06
转发文档
收藏文档
上一篇
下一篇
手机扫码
复制链接
手机扫一扫转发分享
复制链接
Markdown文件
分享
链接
类型
密码
更新密码