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

1.png

请注意这两个端口组连的是同一个虚拟交换机 vSwitch 0. vSwitch0连接了一个物理网口vmnic 0

2.png

注意图片上的虚拟机选项,两个端口组,一个是可以直接连接虚拟机,一个是不能直接连接虚拟机.这是esxi端口组配置的特殊之处.

看下图

3.png

4.png

不可直接连接虚机的端口组,是配置vmkernel网卡时配置的端口,这个端口是用来连接esxi外部的端口,一般用来定义esxi的管理地址.
可连接虚机的端口组,是连接虚拟交换机的端口.

5.png

esxi有两个物理网卡

6.png

开始我们nat网络环境的配置
需要一个不连接到物理网卡的虚拟交换机,这个交换机连接软路由的lan口和虚拟机.

添加一个nat虚拟交换机,不绑定上行物理网卡

7.png

添加绑定虚拟交换机nat的端口组

8.png

接我们开始的思路,我们esxi有两个物理接口,一个配置了走内网数据(192.168.1.238),另外一个物理接口用来走软路由(192.168.1.239).因此239这个物理口也需要配置用起来.

配置vmnic1这个物理口

添加虚拟交换机绑定vmnic1

9.png

10.png

添加vmkernel端口

11.png

12.png

13.png

参考开始时的表述,软路由虚机要连接到,vmnic1,还需要添加一个端口组,可以添加虚拟机的端口组.

14.png

都添加好后的网络情况

15.png 16.png 17.png 18.png 19.png

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

20.png

创建openwrt虚机

21.png

22.png

23.png

删除系统自带硬盘

24.png

添加新硬盘,现有硬盘

25.png

26.png

添加一个网卡

27.png

一个网卡连接到nat(没有连接物理网卡的虚拟交换机端口),一个连接到vmk1 network(连接到239的虚拟交换机端口)
完成,启动虚机看看

控制台不再闪烁,敲回车,进入下面界面,安装成功.

28.png

配置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

29.png

30.png

其余使用默认即可,无需修改.openwrt这样部署就是类似家用简单路由器.192.168.100.0/24通过nat转换,从192.168.1.240数据出去.

其余虚机配置

两个网卡,一个连接vm Network内网,一个连接nat.走外网.

31.png

虚机没有添加默认路由器前,无法访问外网

32.png

33.png

34.png

添加路由测试

[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
成功