此文章仅供新问云图工作室内部人员交流学习使用。
此文档旨在便于内部组员学习如何在不增加物理设备的情况下制作虚拟网关并开放NAT编辑版本
08月12日第一版 编辑人:LRAltas
实验环境
实验平台:ESXI 8.0
网关虚拟机:CentOS-Stream 10
物理网段:192.168.1.0/24
NAT网段:10.1.1.0/24
原理
原理是:
- ESXi 提供 Port Group / vSwitch 给虚拟机
- 其中一台虚拟机(充当网关机)运行路由系统,比如:
- Linux(用
iptables
/nftables
/firewalld
)
- 这台网关机一张网卡连接外网 Port Group(比如接物理交换机的 uplink,也就是上行链路),另一张网卡连接内网 Port Group(注意,此内网端口组不能添加上行链路,主要是给其他虚拟机用)
- 在网关机上开启 NAT,把内网的流量转发到外网
开始部署
配置ESXI虚拟交换机
首先先要新建一个ESXI上的没有上行链路的虚拟交换机,WebUI上没办法创建,因为无论你的服务器上的网卡是否启用(是否开机关机)他都得选一个。所以我们直接在命令行进行配置,通过SSH连接到ESXI上之后,我们直接键入以下内容
#--vswitch-name后面的名字你可以随便填
esxcli network vswitch standard add --vswitch-name=vSwitch-LAN

之后我们在WebUI上新建端口组,虚拟交换机选择刚才我们创建的即可

网关虚拟机配置
这里需要注意,我们网关虚拟机需要添加两张网卡,一张网卡网络选择我们的能接入物理(外网)网络的VM网络,另一张我们就选择我们刚刚创建的那个虚拟网络,我创建的端口组叫做LAN,于是我这里就选了LAN。
至于虚拟机其他硬件配置,按照个人需求即可

配置网关虚拟机网络
前提
在我的实验虚拟机上有以下前提
- WAN:
ens33
(外网口,接 ESXi 外网Port Group
,有uplink
,上述图片中是VM Network
) - LAN:
ens34
(内网口,接 ESXIvSwitch-LAN
,无uplink
) - LAN IP:
192.168.10.1/24
- 你已经用
ip a
确认了两个网卡名(不同机器可能是ens160
、ens192
这种)。
配置LAN口设置
在本实验环境中LAN
口为ens34
CentOS10上使用的为NetworkManager
来进行网络管理,于是乎我们有
nmcli con add type ethernet ifname ens34 con-name LAN ipv4.addresses 10.1.1.0/24 ipv4.method manual
nmcli con up LAN
持久化开启IP转发
nmcli connection modify LAN ipv4.never-default yes
echo "net.ipv4.ip_forward = 1" >> /etc/sysctl.conf
sysctl -p
安装软件包,禁用SELinux
和firewalld
虚拟机创建好了后我们先安装软件包禁用SELinux和防火墙
关闭firewalld
和SELinux
不正确地配置firewalld
会导致NAT转发的包被网关服务器丢弃,所以我们这里关闭并且禁用firewalld
和SElinux
systemctl disable firewalld
systemctl stop firewalld
持久化关闭SElinux
#立即关闭(临时生效,重启后该配置失效,重启后同时正好持久化生效)
setenforce 0
#永久关闭(修改配置文件,持久化关闭,持久化的配置重启生效)
sed -i 's/^SELINUX=.*/SELINUX=disabled/' /etc/selinux/config
#查看确认
grep SELINUX= /etc/selinux/config
#(可选)重启生效,你要是做了第一行的setenforce 0就可以不做
reboot
安装DHCP
服务器
yum install dnsmasq -y
配置DNSmasq
cat > /etc/dnsmasq.conf <<EOF
interface=ens34 # LAN 网卡
bind-interfaces
dhcp-range=10.1.1.100,10.1.1.200,12h #dhcp地址池范围,按照你的个人需求来
dhcp-option=3,10.1.1.1 # 网关
dhcp-option=6,8.8.8.8,114.114.114.114 # DNS
EOF
#启动dnsmasq
systemctl enable --now dnsmasq
配置 iptables 配置 NAT 和转发
# 清空规则
iptables -F
iptables -t nat -F
#设置默认策略为ACCEPT方便测试
iptables -P INPUT ACCEPT
iptables -P OUTPUT ACCEPT
iptables -P FORWARD ACCEPT
#允许内网接口(比如 ens34)到外网接口(ens33)的转发
iptables -A FORWARD -i ens34 -o ens33 -j ACCEPT
iptables -A FORWARD -i ens33 -o ens34 -m state --state RELATED,ESTABLISHED -j ACCEPT
#开启NAT地址伪装,ens33为外网接口
iptables -t nat -A POSTROUTING -o ens33 -j MASQUERADE
之后你可以创建一个虚拟机,一张网卡,选择我们的LAN网络查看是否能自动获取IP,并分别ping 8.8.8.8
和www.baidu.com
查看是否与外界联通。
评论(0)
暂无评论