问题:(无互联网和无 DHCP)
我似乎无法让我的虚拟机连接到互联网,也无法设置 DHCP 服务器来自动为它们分配 IP。
重复品的介绍/PSA:我在这里看到了几篇关于使用 Proxmox 进行网络最佳实践的文章、视频和问题。然而,几天之内,我重新安装了 11 台服务器,却无法通过我的设置获得结果,这可能是由于文章过时和/或缺乏知识。同样值得一提的是,我只在家庭网络上的路由器后面使用过 Proxmox。
我面临的一个问题是,与我读过的文档和文章相比,OVH 的配置 OOB 似乎略有不同。这是网络的一个示例,安装时未修改。(vmbr0 附带 OOB,附带公共 IP/网关,而不是网络设备)
并且在/etc/network/interface
设置:
- Proxmox 版本:虚拟环境 7.4-3
- 公共 IP:1
- OVH 的专用云托管服务器
目标:
- 对所有流量使用单个公共 IP
- 任何虚拟机都可以访问互联网(如果指定了网桥)
- 任何虚拟机都将使用 DHCP 自动分配一个本地 IP(低优先级) (若指定桥梁)
- 在 VM 或 Proxmox 本身上使用 dnsmasq/other 进行 DHCP(低优先级) (若指定桥梁)
- 了解网络和原理
我尝试过的:
第1部分
使用 iptables 进行伪装(NAT)(https://pve.proxmox.com/wiki/Network_Configuration)
根据文档中的描述,我相信这是我想要实现的正确方法。
首先,我添加了一个新的 Linux 桥,没有分配网关或 IP。
然后我应用了将这个新的 iface 添加到配置文件的配置/etc/network/interfaces
,然后使用 vmbr0 桥将地址、post-up、post-down 行添加到其中,因为那是我的网关所在的位置。IP 范围可以是:10.10.10.1 - 10.10.10.254
。
我的假设是,该10.10.10.1
IP 将分配给 Linux 桥(充当托管交换机?)
(在生产中address=
没有=
,这是一个屏幕截图示例拼写错误)
然后我重启了整个服务器,以确保网络配置已应用。我这样做而不是重启服务是为了消除任何干扰,因为我注意到在我之前的尝试中应用它们时存在一些随机性。
成功启动后,我重新检查了 Proxmox 中的网络选项卡和/etc/network/interface
配置文件。根据我到目前为止所做的更改,所有内容均存在且“正确”。
下一步是创建虚拟机。我选择了 ubuntu-22.04.2-live-server,将 vmbr1 网络接口应用于它并启动了虚拟机。到达网络连接配置后,我选择了手动 IPV4 设置并输入了以下详细信息:
保存此对话框后,继续按钮Continue without network
被更改为Done
。所以我相信我的配置是正确的(至少对于 LAN 而言)。略微向前跳转,Checking for installer update
&Featured Server Snaps
加载失败,但我决定继续安装。完成所有操作后,我运行apt-get update
、ping 1.1.1.1
和 ,ping 10.10.10.1
但ping 10.10.10.0
没有任何生命迹象。
运行ip a
,显示以下内容,哪个看起来正确?:
这些结果告诉我我的桥接配置/etc/network/interfaces
是错误的.....
第2部分
使用中的先前步骤Part 1
,我完全遵循了它们,但是我重新分配了我的 IP/网关给网络设备并使用了vmbr0
而不是vmbr1
如屏幕截图中所示。
第 3 部分
我继续思考,这也可能是我在虚拟机上设置网络的方式的问题,所以我尝试使用dnsmasq
和dnsutils
在 Proxmox 主机 shell 中设置 DHCP 服务器。然后重新跟踪我的步骤,如所示Part 1
。但是,安装时没有自动为虚拟机分配 IP……(理想情况下,我会在单独的虚拟机中设置 DHCP 服务器)。
第 4 部分
然而,尝试安装后Pfsense
,我意识到如果我不能修复我的桥接配置,那么这也将无法工作。
非常感谢任何帮助/知识/建议,我通常通过反复试验来获得最好的效果,但这次没有奏效!
感谢您阅读我的独白。
参考文献/文章:
如何在桥接网络上从客户端本身通过公共 IP 访问 NATed、虚拟化(LXC)服务器?
Proxmox:1 个 NIC,1 个公共 IP,无法让虚拟机中的 WAN 接口正常工作
https://forum.proxmox.com/threads/how-can-i-connect-a-bridge-to-another-bridge.98510/(有趣?也许第一部分根本不起作用?)
https://bobcares.com/blog/dnsmasq-dhcp-server-in-proxmox/
https://forum.proxmox.com/threads/1-public-ip-two-bridges-port-forwarding.110820/
答案1
问题已解决(已更新为使用 192.168.1.1)
脚步:
- 安装 Proxmox 并加载接口
- 从 shell
vim /etc/network/interfaces
- 将 vmbr1 iface 添加至文件底部:
自动 vmbr1
iface vmbr1 inet 静态
地址 192.168.1.1
网络掩码 255.255.255.0
bridge_ports 无
bridge_stp 关闭
bridge_fd 0
- 从 shell
apt-get install dnsmasq
- 从 shell
vim /etc/dnsmasq.conf
- 添加配置:
接口=vmbr1
dhcp 范围=192.168.1.100,192.168.1.200,无限
dhcp 选项=选项:路由器,192.168.1.1
dhcp 选项 = 选项:dns 服务器,192.168.1.1
从 shell:.
vim /etc/sysctl.conf
添加net.ipv4.ip_forward=1
从 shell 中:
sudo sysctl -p
在 SHELL 中运行:
sudo iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o vmbr0 -j MASQUERADE
从 shell 中:
sudo apt-get install iptables-persistent
从 shell 中:
sudo systemctl restart networking
从 shell 中:
sudo systemctl restart dnsmasq
从 shell 中:
sudo netfilter-persistent save
使用 vmbr1 网络构建虚拟机,将使用 DHCP 自动分配 IP 并连接互联网。
答案2
感谢您的指南,如果我设置了固定 IP,我就能为 OVH 上 Proxmox 上的虚拟机设置具有互联网连接的 vmbr1。
即使我按照您的步骤操作,DHCP 仍然不起作用(我使用的是 10.10.10.1 而不是 192.168.1.1):
等/网络/接口
auto lo
iface lo inet loopback
iface enp1s0f0 inet manual
iface enp1s0f1 inet manual
auto vmbr0
iface vmbr0 inet static
address MYSERVERIP/24
gateway MYSERVERGATEWAY.254
bridge-ports enp1s0f0
bridge-stp off
bridge-fd 0
hwaddress HWADDRESS
iface vmbr0 inet6 static
address ADDRESS
gateway GATEWAY
auto vmbr1
iface vmbr1 inet static
address 10.10.10.1/24
bridge_ports none
bridge_stp off
bridge_fd 0
post-up echo 1 > /proc/sys/net/ipv4/ip_forward
post-up iptables -t raw -I PREROUTING -i fwbr+ -j CT --zone 1
post-down iptables -t raw -D PREROUTING -i fwbr+ -j CT --zone 1
post-up iptables -t nat -A POSTROUTING -s '10.10.10.0/24' -o vmbr0 -j MASQUERADE
post-down iptables -t nat -D POSTROUTING -s '10.10.10.0/24' -o vmbr0 -j MASQUERADE
/etc/dnsmasq.conf
interface=vmbr1
dhcp-range=10.10.10.101,10.10.10.200,infinite
dhcp-option=option:router,10.10.10.1
dhcp-option=option:dns-server,10.10.10.1
当我启动/创建虚拟机时,我还需要设置其他东西来获取 IP 吗?
谢谢
亚历山德罗