本文内容 配置桥接网卡,使Proxmox VE(PVE)可以同时创建NAT虚拟机和独立IP虚拟机,同时可以使用脚本映射NAT虚拟机的端口到外网 前言 有台5IP的机器,虽然配置不怎么样,但是也开了不少虚拟机,可用的4个IP挪来挪去着实不够用,遂产生了开NAT虚拟机的想法。 但是能开NAT虚拟机的同时,独立IP的机器也要能开通,毕竟有些服务转发起来也蛮麻烦的。 请教了一下谷姓同学,鼓捣了一下,测试可行,作为备忘,记录如下: 方法 1、桥接网卡配置 编辑网卡文件 nano /etc/network/interfaces 内容如下: # This file describes the network interfaces available on your system # and how to activate them. For more information, see interfaces(5). source /etc/network/interfaces.d/* auto lo iface lo inet loopback allow-hotplug enp4s0 iface enp4s0 inet manual auto vmbr0 iface vmbr0 inet static address 111.1.11.130 netmask 255.255.255.248 gateway 111.1.11.129 bridge-ports enp4s0 bridge-stp off bridge-fd 0 auto vmbr1 iface vmbr1 inet static address 192.168.1.1 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 bash /root/iptables.config.sh post-up iptables -t nat -A POSTROUTING -s '192.168.1.0/24' -o vmbr0 -j MASQUERADE post-down iptables -t nat -D POSTROUTING -s '192.168.1.0/24' -o vmbr0 -j MASQUERADE 物理机的网卡名为enp4s0,vmbr0为独立IP虚拟机的桥接网卡,自行修改为正确的信息;vmbr1为NAT虚拟机的桥接网卡,可以使用192.168.1.2-255这些内网IP。 2、新建虚拟机 开通独立IP虚拟机的时候桥接网卡选择vmbr0,NAT虚拟机选择vmbr1,如图所示 安装完成后,配置网卡信息,IP地址配置为内网IP地址,如图所示 配置完成后测试,使用Proxmox VNC功能登录虚拟机,测试可以正常联网 3、NAT转发 很多时候,NAT虚拟机单单能连接外部网络是不够的,还需要外部网络能够访问到虚拟机内部的服务,比如ssh,rdp等。 端口映射可以使用iptables来完整,已经有大佬写了方便的脚本,点我下载 脚本内容: iptables.sh #! /bin/bash PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin export PATH #ConfFile iptablesconf='/root/iptables.config.sh' function rootness(){ if [[ $EUID -ne 0 ]]; then echo "脚本需要以ROOT权限运行!" exit 1 fi } function conf_list(){ cat $iptablesconf } function conf_add(){ if [ ! -f $iptablesconf ];then echo "找不到配置文件!" exit 1 fi echo "请输入虚拟机的内网IP" read -p "(Default: Exit):" confvmip [ -z "$confvmip" ] && exit 1 echo echo "虚拟机内网IP = $confvmip" echo while true do echo "请输入虚拟机的端口:" read -p "(默认端口: 22):" confvmport [ -z "$confvmport" ] && confvmport="22" expr $confvmport + 0 &>/dev/null if [ $? -eq 0 ]; then if [ $confvmport -ge 1 ] && [ $confvmport -le 65535 ]; then echo echo "虚拟机端口 = $confvmport" echo break else echo "输入错误,端口范围应为1-65535!" fi else echo "输入错误,端口范围应为1-65535!" fi done echo while true do echo "请输入宿主机的端口" read -p "(默认端口: 8899):" natconfport [ -z "$natconfport" ] && natconfport="8899"…