转载:https://blog.egretcloud.com/2025/06/15/145/
Proxomx Virtual Environment 在运行的时候,您已经配置好了让虚拟机能够互联网访问,通过 NATv4 和 Dedicated IPv6 来实现的,并且可以通过 iptables 设置端口转发来使之虚拟机能够端口访问。
但是,有个虚拟机上面搭载的服务,例如:SMTP 邮件服务,还是需要一个独立 IPv4 来实现的,因为跟我的情况一样,原来的 IPv4 地址已经被我所用了,不能一个 IPv4 地址接两个相同的网络服务。于是那位用户掏钱直接购买独立 IPv4 的,以此来进行分开而进行单独使用。
然而现在的教程大部分是 NATv4 + Dedicated IPv6 这样的架构,且搭配了 iptables 防火墙。他们都是有着一个重大的缺点:配置新的IPv4是非常非常地麻烦。

因为我这里提供的教程, iptables 防火墙是默认入站规则全开放,出站规则全禁止,要想让他把服务开放给互联网就只有增加端口转发规则,但是一般适用内网的多一些,而公网的则我们一般是需要全开放的,由该虚拟机上面的防火墙来设置端口开关即可,相当于我们把这个新 IPv4 地址的全部端口交给该用户自行决定。对此互联网上是很少针对这个情况的做法,可以说是千篇一律但是没有一个是符合我们的。

如理想的网络拓扑图所示,我们希望的是能够让此台虚拟机直接连接上第一层路由,即为单层路由,通过vmbr0的桥接物理网卡的虚拟网卡对外开放网络服务和访问互联网服务,也就是出站和入站都均要在同一个路由上,但是后面与其他有经验的朋友讨论后,我们目前能够做到二层路由,即出入不同路由,虽然理论上可以形成网络连接,但是这不是我们所希望的理想单层路由那种。目前我们正在深层讨论中,单层路由设置方法必将会实现出来。

一. 二层路由
二. 单层路由(开发中 . . .)
一、二层路由配置
此种方法目前按照教程的方法延伸而来,他是利用现有的内网架构和防火墙规则,让虚拟机可以通过既定路线走出站规则,实现对外开放服务,同时可以直接在虚拟机上配置该新增的IP,由软件路由器(第一层路由)直接走入站规则传输数据包到虚拟机上。此种方法只需要在 iptables 规则表添加,无需修改 interfaces。
1. 购买独立 IPv4

我们这里推荐“One additional IP with costs”,是因为根据现在的情况,很多用户都觉得直接用v6进行访问即可,但除非是您的服务需要 IPv4 地址的情况下才可以购入独立 IPv4 地址,而且用户也不愿意买,都是在原有的IP上直接搞好端口转发完事,因为服务程序的端口是可以修改的,除非阿三式代码那种写死了端口才是考虑一下要不要用独立地址进行配置服务。例如:RocketChat 。除非预算足够,/24 可以直接够用,但是那样不好配置,涉及到可能会重写网络配置文件,这样可能会导致您的宿主机网络失联的概率大大提高……..

2. 在需要加独立 IPv4 的虚拟机上面,新增一个“网络设备(netX)”

将该新建的网络设备的桥接设备设置为:bridge=“您的桥接物理网卡的虚拟网卡名称”,例如:“bridge=vmbr0”。
3. 将该HZ提供的新 IPv4 地址配置,在需要的虚拟机上面的控制台或连接登录SSH,在“网络配置”或者打开“interfaces”文件,输入到该新建的网卡名称下面,例如:
auto ens18 iface ens18 inet static address 65.xxx.xxx.212 netmask 255.255.255.192 gateway 65.xxx.xxx.193 # hwaddress ether 00:50:56:01:0B:39
4. 输入以下命令以生效或重启您的虚拟机网络程序,但是ubuntu之类的用户请重启整个虚拟机才能生效:
ifreload -a ###或者输入以下命令,可能会需要重启整个虚拟机 systemctl restart networking.service ###ubuntu用户请直接执行下列命令 reboot
5. 在宿主机上面编辑 iptables 规则表,或直接输入以下代码,然后在规则表上面修改顺序:
iptables -t nat -A POSTROUTING -s <您的虚拟机内网IP,即vmbr1分配的IPv4地址> -o vmbr0 -j SNAT --to-source 65.xxx.xxx.212 netfilter-persistent save
然后打开规则表,将此内容修改到 nat 表的第一行:

:wq 以保存并退出,输入以下命令以重新生效:
netfilter-persistent restart
6. 在虚拟机上测试连通性,将vmbr1相连的网卡暂时 DOWN,只 UP 与vmbr0相连的网卡,然后打开终端并 ping 以检测连通性:

7. 输入以下命令,检查对方接收到的ip地址是否与新增的一致:
curl ip.sb -4
以上便是二层路由方式新增IP地址配置到单独互联的虚拟机上的教程步骤,目前以这个方式是不会大幅更改网络配置,仅需要增加一条 iptables 规则,再在虚拟机上新建网卡以访问互联网。简单的步骤令人比较看好,但是二层路由意味着可能会出现网路承载过大便会出现未响应的常见故障。因此我们正在摸索单层路由的搭建方法,让处理位置改到服务器的网卡上以实现硬件路由,且能够实现承载不论大小都能正常互联。

二、单层路由配置
待开发……