最近有个小项目,评估某公司的windows环境,因此需要搭建一个测试环境,为方便测试,将一台装有CentOS 7的VM配置为测试环境的NAT网关。
实验环境
- 测试环境网络:192.168.200.0/24
- 物理机所在网络:192.168.1.0/24
- CentOS 7网络配置:
ens33:192.168.1.254/24
ens36: 192.168.200.254/24
配置过程
开启IPv4路由转发功能
/etc/sysctl.conf
# Controls IP packet forwarding
net.ipv4.ip_forward = 1
以上配置文件修改后,重启后生效,若不想重启,可执行如下命令
sysctl -w net.ipv4.ip_forward=1
Centos 7 上面的ens33接口用于连接物理网络并为测试网络提供NAT服务,ens36属于测试网络网段,作为测试网络段内主机的网关,将两快网卡分别添加进external和internal zone中并重新载入生效
firewall-cmd --zone=external --add-interface=ens33 --permanent
firewall-cmd --zone=internal --add-interface=ens36 --permanent
firewall-cmd --complete-reload
查看并确认对应的网卡在相应的zone中
external (active)
target: default
icmp-block-inversion: no
interfaces: ens33
sources:
services: ssh
ports:
protocols:
masquerade: yes
forward-ports:
source-ports:
icmp-blocks:
rich rules:
internal (active)
target: default
icmp-block-inversion: no
interfaces: ens36
sources:
services: dhcpv6-client mdns samba-client ssh
ports:
protocols:
masquerade: no
forward-ports:
source-ports:
icmp-blocks:
rich rules:
在external zone开启masquerade为配置NAT做准备
firewall-cmd --zone=external --add-masquerade --permanent
配置NAT规则
firewall-cmd --permanent --direct --passthrough ipv4 -t nat -I POSTROUTING -o ens33 -j MASQUERADE -s 192.168.200.0/24
# 最后重新载入生效
firewall-cmd --complete-reload
以上配置完成后,位于192.168.200.0/24网段的机器将能够通过配置的NAT网关进行Internet访问,需要注意的一点是,位于网关背后的机器的默认网关,务必设置为NAT server的内网接口的IP地址
由于我这台NAT server还会作为PXE的相关服务器,因此如下服务在internal zone放行,如果看官有相应需求,可作为参考
firewall-cmd --permanent --zone=internal --add-service=dhcp
firewall-cmd --permanent --zone=internal --add-service=tftp
firewall-cmd --permanent --zone=internal --add-service=dns
firewall-cmd --permanent --zone=internal --add-service=http
firewall-cmd --permanent --zone=internal --add-service=nfs
firewall-cmd --permanent --zone=internal --add-service=ssh