首先说明,这种创建 NAT 虚拟机的方式管理起端口转发的时候并不方便,但适合所有网络环境下的服务器,尤其是指只有一个外网 IP 的。
如果有另一个 IP 的话一般是推荐使用 pfSense 等进行管理,更方便全面,如果没有的话请继续看下去。
Proxmox VE 安装完后会默认设置一个名为
vmbr0
的 Linux Bridge,它桥接了物理网卡连接外网。接着我们设置网卡转发规则,
vi /etc/network/interfaces
在最下方加入:auto vmbr2 iface vmbr2 inet static address 10.0.0.254 netmask 255.255.255.0 bridge_ports none bridge_stp off bridge_fd 0 post-up echo 1 > /proc/sys/net/ipv4/ip_forward post-up iptables -t nat -A POSTROUTING -s '10.0.0.0/24' -o vmbr0 -j MASQUERADE post-down iptables -t nat -D POSTROUTING -s '10.0.0.0/24' -o vmbr0 -j MASQUERADE post-up iptables -t nat -A PREROUTING -i vmbr0 -p tcp --dport 10022 -j DNAT --to 10.0.0.101:22 post-down iptables -t nat -D PREROUTING -i vmbr0 -p tcp --dport 10022 -j DNAT --to 10.0.0.101:22 post-up iptables -t nat -A PREROUTING -i vmbr0 -p tcp --dport 13389 -j DNAT --to 10.0.0.102:3389 post-down iptables -t nat -D PREROUTING -i vmbr0 -p tcp --dport 13389 -j DNAT --to 10.0.0.102:3389
这里解释一下,可以设置任意不冲突的内网 IP 段,比如我这里的
10.0.0.0/24
,那么它的网关是 10.0.0.254
,子网掩码 255.255.255.0
。下面的 10.0.0.101
是我其中一台 NAT 虚拟机,将其 22
端口转发到公网 IP 的 10022
端口上,协议为 TCP
,以此类推将所需转发的端口添加到配置文件中。编辑完成之后可以使用
systemctl restart networking
重启网络,不过需要注意的是每次修改了 Proxmox VE 的网络配置都需要重启虚拟机才会有网络,这也是不方便的一点,因此如果有条件的话也更推荐使用软路由系统进行 NAT 映射。另外由于没有 DHCP,所以所有虚拟机都要手动配置网络。