单 IP 服务器使用 Proxmox VE 创建 NAT 虚拟机

单 IP 服务器使用 Proxmox VE 创建 NAT 虚拟机

Published date
Dec 15, 2020
Tags
Proxmox VE
NAT
Linux
Description
自建机房初体验!
首先说明,这种创建 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,所以所有虚拟机都要手动配置网络。