esxi部署openwrt配置nat思路和操作
目前网络环境:
esxi有两个物理接口,地址为192.168.1.239/24和192.168.1.238/24,gw 192.168.1.253
因为网络限制,只有192.168.1.240这个地址可以访问外网. 240这个地址可当静态地址使用
esxi里的虚机想实现访问外网,只能通过192.168.1.240这个地址做nat.
思路想法:
安装一个软路由,软路由虚机设置两个网卡,wan口配置192.168.1.240,lan口配置192.168.100.1,软路由做dhcp(192.168.100.0/24 gw 192.168.100.1).实现192.168.100.0/24段地址做nat通过192.168.1.240出去访问外网.
需要访问外网的虚机设置两个网卡.一个网卡连接到内网192.168.1.0/24,一个网卡连接到软路由192.168.100.0/24.
添加默认路由走 192.168.100.0/24.以实现虚机通过软路由nat访问外网需求.
esxi 基础网络环境配置
目前的网络情况
默认网络端口组有VM network和Management network
请注意这两个端口组连的是同一个虚拟交换机 vSwitch 0. vSwitch0连接了一个物理网口vmnic 0
注意图片上的虚拟机选项,两个端口组,一个是可以直接连接虚拟机,一个是不能直接连接虚拟机.这是esxi端口组配置的特殊之处.
看下图
不可直接连接虚机的端口组,是配置vmkernel网卡时配置的端口,这个端口是用来连接esxi外部的端口,一般用来定义esxi的管理地址.
可连接虚机的端口组,是连接虚拟交换机的端口.
esxi有两个物理网卡
开始我们nat网络环境的配置
需要一个不连接到物理网卡的虚拟交换机,这个交换机连接软路由的lan口和虚拟机.
添加一个nat虚拟交换机,不绑定上行物理网卡
添加绑定虚拟交换机nat的端口组
接我们开始的思路,我们esxi有两个物理接口,一个配置了走内网数据(192.168.1.238),另外一个物理接口用来走软路由(192.168.1.239).因此239这个物理口也需要配置用起来.
配置vmnic1这个物理口
添加虚拟交换机绑定vmnic1
添加vmkernel端口
参考开始时的表述,软路由虚机要连接到,vmnic1,还需要添加一个端口组,可以添加虚拟机的端口组.
都添加好后的网络情况
nat的上行vmnic2是假的,并不是真实的物理连接.
安装部署openwrt虚机
[参考文档]
下载系统转换格式,上传文件进esxi,参考文档.
转换成vmdk格式
[root@k8s-node1 dark]# qemu-img convert -f raw -O vmdk openwrt-R20.4.8-x64-combined-squashfs.img openwrt-R20.4.8-x64-combined-squashfs.img.vmdk
[root@k8s-node1 dark]# ls
openwrt-R20.4.8-x64-combined-squashfs.img openwrt-R20.4.8-x64-combined-squashfs.img.vmdk
[root@k8s-node1 dark]# ll -sh
总用量 224M
177M -rw-r--r--. 1 dark dark 177M 4月 8 2020 openwrt-R20.4.8-x64-combined-squashfs.img
47M -rw-r--r--. 1 root root 47M 3月 21 16:06 openwrt-R20.4.8-x64-combined-squashfs.img.vmdk
转换成vmdk文件后无法再exi里直接使用,需要再次转换
esxi主机上转换操作见下
[root@localhost:/vmfs/volumes/62eba721-4cf93b18-4ddc-44a8424bfb88/openwrt] ls -sh
total 48128
48128 openwrt-R20.4.8-x64-combined-squashfs.img.vmdk
[root@localhost:/vmfs/volumes/62eba721-4cf93b18-4ddc-44a8424bfb88/openwrt] vmkfstools -i openwrt-R20.4.8-x64-com
bined-squashfs.img.vmdk openwrt-R20.4.8-x64-combined-squashfs.img.exsi6.vmdk
Destination disk format: VMFS zeroedthick
Cloning disk 'openwrt-R20.4.8-x64-combined-squashfs.img.vmdk'...
Clone: 100% done.
[root@localhost:/vmfs/volumes/62eba721-4cf93b18-4ddc-44a8424bfb88/openwrt] ls -sh
total 229376
181248 openwrt-R20.4.8-x64-combined-squashfs.img.exsi6-flat.vmdk
0 openwrt-R20.4.8-x64-combined-squashfs.img.exsi6.vmdk
48128 openwrt-R20.4.8-x64-combined-squashfs.img.vmdk
创建openwrt虚机
删除系统自带硬盘
添加新硬盘,现有硬盘
添加一个网卡
一个网卡连接到nat(没有连接物理网卡的虚拟交换机端口),一个连接到vmk1 network(连接到239的虚拟交换机端口)
完成,启动虚机看看
控制台不再闪烁,敲回车,进入下面界面,安装成功.
配置openwrt
openwrt两个网卡,连接到vmk1 network的配置wan口,地址配为192.168.1.240.连接nat的配置为lan口,地址配为192.168.100.1.(可通过对比mac地址判断)
openwrt的lan口默认自动启动dhcp.虚机只要连接到虚拟交换机nat,会自动获取ip地址.
openwrt的访问地址为lan口地址,用户名为root/password
请注意,我们无法使用192.168.1.240这个地址访问openwrt网页.只能使用192.168.100.1这个Lan地址.如需访问web,请多弄个虚机连接到nat即可.
这个文件修改地址
/etc/config/network
其余使用默认即可,无需修改.openwrt这样部署就是类似家用简单路由器.192.168.100.0/24通过nat转换,从192.168.1.240数据出去.
其余虚机配置
两个网卡,一个连接vm Network内网,一个连接nat.走外网.
虚机没有添加默认路由器前,无法访问外网
添加路由测试
[root@k8s-node1 dark]# route add default gw 192.168.100.243 ens36
[root@k8s-node1 dark]# ping www.google.com
PING www.google.com (142.251.220.196) 56(84) 比特的数据。
64 比特,来自 mnl07s03-in-f4.1e100.net (142.251.220.196): icmp_seq=1 ttl=49 时间=511 毫秒
64 比特,来自 mnl07s03-in-f4.1e100.net (142.251.220.196): icmp_seq=2 ttl=49 时间=71.5 毫秒
64 比特,来自 mnl07s03-in-f4.1e100.net (142.251.220.196): icmp_seq=3 ttl=49 时间=71.3 毫秒
^C
--- www.google.com ping 统计 ---
已发送 3 个包, 已接收 3 个包, 0% packet loss, time 2002ms
rtt min/avg/max/mdev = 71.316/217.801/510.556/207.008 ms
[root@k8s-node1 dark]# ip r
default via 192.168.100.243 dev ens36 scope link
default via 192.168.1.253 dev ens33 proto static metric 100
default via 192.168.100.1 dev ens36 proto dhcp src 192.168.100.243 metric 101
192.168.1.0/24 dev ens33 proto kernel scope link src 192.168.1.235 metric 100
192.168.100.0/24 dev ens36 proto kernel scope link src 192.168.100.243 metric 101
[root@k8s-node1 dark]# traceroute -d www.google.com
traceroute to www.google.com (142.251.220.196), 30 hops max, 60 byte packets
1 OpenWrt.lan (192.168.100.1) 2.731 ms 2.505 ms 2.323 ms
2 * * *
3 10.114.11.113 (10.114.11.113) 3.274 ms 3.181 ms 3.436 ms
4 10.114.5.5 (10.114.5.5) 7.550 ms 7.513 ms 7.583 ms
5 10.114.5.6 (10.114.5.6) 7.449 ms 7.417 ms 7.332 ms
6 10.103.1.12 (10.103.1.12) 7.309 ms 7.221 ms 7.644 ms
可以看到添加路由后,访问外网已经从openwrt(192.168.100.1)出去.访问成功.
看看访问内网情况
[root@k8s-node1 dark]# traceroute -d 192.168.1.250
traceroute to 192.168.1.250 (192.168.1.250), 30 hops max, 60 byte packets
1 192.168.1.250 (192.168.1.250) 1.362 ms 1.255 ms 1.185 ms
[root@k8s-node1 dark]#
访问内网并没有走192.168.100.1
写入rc.local,开机自动添加路由,省得每次重启系统路由失效
[root@k8s-node1 dark]# ll /etc/rc.d/rc.local
-rw-r--r--. 1 root root 516 3月 25 17:03 /etc/rc.d/rc.local
[root@k8s-node1 dark]# chmod +x /etc/rc.d/rc.local
[root@k8s-node1 dark]# ll /etc/rc.d/rc.local
-rwxr-xr-x. 1 root root 516 3月 25 17:03 /etc/rc.d/rc.local
[root@k8s-node1 dark]# ll /etc/rc.d/rc.local
-rwxr-xr-x. 1 root root 516 3月 25 17:03 /etc/rc.d/rc.local
[root@k8s-node1 dark]# echo "route add default gw 192.168.100.243 device ens36" >>/etc/rc.local
[root@k8s-node1 dark]# cat /etc/rc.local |grep -v ^#
touch /var/lock/subsys/local
route add default gw 192.168.100.243 device ens36
[root@k8s-node1 dark]#
重启系统测试一下
[dark@k8s-node1 ~]$ ip r
default via 192.168.100.243 dev ens36 scope link
default via 192.168.1.253 dev ens33 proto static metric 100
default via 192.168.100.1 dev ens36 proto dhcp src 192.168.100.243 metric 101
192.168.1.0/24 dev ens33 proto kernel scope link src 192.168.1.235 metric 100
192.168.100.0/24 dev ens36 proto kernel scope link src 192.168.100.243 metric 101
[dark@k8s-node1 ~]$ ping www.google.com
PING www.google.com (64.233.170.106) 56(84) 比特的数据。
64 比特,来自 sg-in-f106.1e100.net (64.233.170.106): icmp_seq=1 ttl=49 时间=569 毫秒
64 比特,来自 sg-in-f106.1e100.net (64.233.170.106): icmp_seq=2 ttl=49 时间=42.7 毫秒
^C
--- www.google.com ping 统计 ---
已发送 2 个包, 已接收 2 个包, 0% packet loss, time 1000ms
rtt min/avg/max/mdev = 42.675/306.024/569.374/263.349 ms