最近发现了一神器 Proxmox , 一款免费且开源的一个虚拟化平台,允许 Kvm&OpenVZ 架构的 VPS 在同一宿主机运行,允许搭建集群并移动某节点的虚拟机到其他节点,其他优点不在多说
先来说说问题,某天我好奇使用了这个平台,开了好几个 OpenVZ 的虚拟机,但是只能使用 noVNC 来操作,实在不方便,于是搜到了(http://servernetworktech.com/201 … -a-virtual-machine/)这篇文章,
先来了解一下架构
内网网卡:vmbr1 (这里是我使用的,默认安装已经占用了 vmbr0)
内网网段:10.110.0.1/24
公网 IP:8.8.8.8(仅为示范)
VM ———————– 宿主机 ——————— 公网
10.110.0.1:22 10.110.0.1:22 NAT 到 8.8.8.8:10100 8.8.8.8:10100
这里是我的解决思路
先创建一个虚拟网卡,由于 Proxmox 基于 Debian,度娘之知道网卡配置文件在/etc/network/interfaces,编辑这个文件,并在尾部追加
auto vmbr1 iface vmbr1 inet static address 10.110.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.110.0.0/24' -o vmbr0 -j MASQUERADE post-down iptables -t nat -D POSTROUTING -s '10.110.0.0/24' -o vmbr0 -j MASQUERADE
追加完上面的东西之后呢,运行如下命令重启网络服务
service networking restart
这样一个虚拟网卡和 10.110.0.1~10.110.0.253 的地址就创建好了
现在就来解决一下 NAT,其方法非常简单,仅需输入如下命令即可实现
iptables -t nat -A PREROUTING -i vmbr0 -p tcp --dport 要在公网的能访问的端口 -j DNAT --to 虚拟机的 IP(10.110.0.1~10.110.0.253):虚拟机的端口
例如把虚拟机 10.110.0.1 上的 22 端口 NAT 到宿主机的 10100 端口,仅需如下命令可实现
iptables -t nat -A PREROUTING -i vmbr0 -p tcp --dport 10100 -j DNAT --to 10.110.0.1:22
记得使用 iptables-save 命令以便下次重启宿主机或 iptables 时能保存 NAT 规则