ESXi由于其使用了vSwitch作为网络交换设备,因此没有类似NAT这样的选项了。但在实际环境中,我们还是经常会遇到IP不够用的情况,比如只有一个或者两个公网IP,但是有一堆虚拟机需要上网。此时就要通过软路由来达到目的。本次使用openwrt做软路由介绍。
本次使用oneproviderder 8欧的服务器,单网卡,一个默认的主IP做为ESXI的管理IP,另外购买一个故障转移IP用于给虚拟机做NAT连接外网。软路由使用最新版的openwrt.
oneprovider的控制面板提供了ESXI6.5的模板,可以直接重装系统,不用操心驱动问题。等待30分钟左右即可重装完成,用主IP地址即可访问ESXI网络控制端。
首先是ESXI的网络配置图
虚拟交换机nat下面连接的虚拟机通过同一网段的软路由openwrt的LAN口连接至软路由,同时软路由的WAN口连接至虚拟交换机vSwitch0,再桥接至物理网口vmnic0,最后连接到外网。软路由负责全部数据的转发。
新建虚拟交换机
全新安装的ESXI只有vSwitch0一个交换机,我们还需要新建一个虚拟交换机nat,需要注意的是新建的虚拟交换机不要让它与物理网卡相关,需要点击图中的X,删除上行链路,之所以这么做,是因为我们要把这个网络的请求都需要通过软路由转发到VM Network上去,而不要让它自己走物理网卡出去。
安装配置软路由
去openwrt官网 下载最新的固件
将下载到的GZ文件解压得到img文件, 使用starwindconverter,转换为vmdk格式,将转换后的2个文件传到esxi里.
然后新建一个虚拟机,创建步骤和普通虚拟机一样,操作系统选择linux->其它3.x或更高版本的linux(64位),内存分配512M即可,硬盘删除默认,单独为这个虚拟机添加一块现有的磁盘, 磁盘文件选择openwrt转换后的vmdk文件,网卡添加两个,一个关联VM Network, 一个关联NAT.
由于oneproviderwe的8欧机器实际为online的服务器,所以我们需要遵守online的一些规定
- 如果将故障转移ip分配给虚拟机则必须要生成mac地址
- 如果虚拟机的mac地址没有正确配置, 则会触发交换机的保护措施, 网络端口会被关闭.
再去oneproviderwe的管理控制台给故障IP添加一个MAC地址,同时注意左上角的网关和掩码是故障转移IP专用
然后,给关联VM Network的网卡输入获得的MAC地址
启动虚拟机后,首先使用ifconfig命令查看网卡信息, 通过之前设定的MAC地址找出和两个交换机对应的两个网卡,记下网卡名称。
然后编辑接口配置文件
vim /etc/config/network
修改其中的LAN和WAN部分,WAN口对应填写了故障转移IP对应MAC地址的网卡,另外一个网卡对应LAN口。
config interface 'lan'
option type 'bridge'
option ifname 'eth1' #这个是关联NAT交换机的网卡
option proto 'static'
option ipaddr '192.168.1.1'
option netmask '255.255.255.0'
option ip6assign '60'
config interface 'wan'
option ifname 'eth0' #这个是关联VM Network交换机的网卡
option proto 'static'
option ipaddr '你的故障转移IP'
option netmask '255.255.255.255'
option gateway 'XX.XX.XX.XX' #你的故障转移IP的网关
option macaddr '00:50:56:44:44:44' #你的故障转移IP的mac地址
#添加以下内容,使得外网与软路由连通
config 'route' 'gateway_route'
option 'interface' 'wan'
option 'target' 'XX.XX.XX.XX' #故障转移IP的网关
reboot重启虚拟机后,可以通过ping 8.8.8.8来查看是否已经连接外网。
之后可以另外新建虚拟机,带有桌面及浏览器的即可,访问
http://192.168.1.1 进行详细的设置。
参考https://blog.ni-co.moe/public/538.html
PS
本例使用了2个IP给ESXI使用,如果是一个IPv4,一个IPv6,可以先用IPv4正常配置,再关闭IPV4管理网络,使用IPv6地址进行ESXI管理(online.net的服务器因为奇葩的IPv6获取方式,不被ESXI支持,所以不行),IPv4给软路由,或者直接利用IPMI来管理,这样可以节省一个故障转移IP的费用。
直接将主IP给软路由使用,设置上需要注意WAN的MAC地址事先改成主IP的物理MAC地址,同时还要在NAT交换机下新建一个管理网络,给与同段IP地址,并给需要远程连接的虚拟机添加端口映射。操作较为复杂,同时风险较大,一个疏忽,就可能造成主机失联。
另外oneprovider家的故障转移IP和配套的网关是比较奇葩的,如果需要单独在一个VM里面设置故障转移IP,是需要特殊设置的,例如在Debian中:
nano /etc/network/interfaces
auto eth0
iface eth0 inet static
address FAILOVER_HERE
netmask 255.255.255.255
broadcast FAILOVER_HERE
post-up route add GATEWAY_HERE dev eth0
post-up route add default gw GATEWAY_HERE
post-down route del GATEWAY_HERE dev eth0
post-down route del default gw GATEWAY_HERE
另外在windows的VM系统中使用故障转移IP,您需要使用255.255.255.0网络掩码设置网络,然后通过注册表强制它使用255.255.255.255
再有,online和oneprovider的IPV6也比较奇葩,ESXI不支持配置到管理网络。