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

in 技术分享 with 0 comment

首先说明,这种创建 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,所以所有虚拟机都要手动配置网络。

Responses