使用firewalld设置NAT

之前配置的PXE服务器虽然已经可用,但是一直是将PXE服务器所在的机器作为子网的一台设备使用,其他客户机要上网还需要另外配置路由器,这样布置起来整个网络很复杂。所以干脆利用PXE服务器的双网卡设置NAT,让PXE服务器同时承担起网关的作用。

我搭建PXE服务器的时候使用的是CentOS7系统,使用CentOS7默认的防火墙搭建NAT非常简单方便,不需要设置内核参数等操作。我在网上找相关的教程找了好久都是既设置防火墙又调整内核参数,我觉的这样的操作很明显不优雅,不像是正确的操作。本文参照CSDN的一篇文章操作,全程只用到了firewalld。

首先我们要知道firewalld是按照zone来管理网络的,将网口添加到不同的zone下就会使用不同的规则,firewalld自带的两个zone:external和internal就是为NAT设置的,我们只需要将连接WAN的网口添加到external下,将连接LAN的网口添加到internal下就可以完成NAT的设置。我这里连接WAN的网口是enp3s0,连接LAN的网口是enp4s0。

使用命令

firewall-cmd --change-interface=enp3s0 --zone=external --permanent

将enp3s0添加到external zone下,命令中–permanent参数是设置永久配置。这个设置不会立即生效,需要重新使用命令 firewall-cmd –reload重新载入。如果不加–permanent设置会立刻生效,但是firewalld重启后会失效。

然后使用命令

firewall-cmd --change-interface=enp4s0 --zone=external --permanent

将enp4s0添加到internal zone下,同样使用firewall-cmd –reload,然后我们就可以将enp4s0的地址设置为子网网关,子网的设备就可以通过向enp4s0发送请求访问外网了。

请留意如果你之前public设置了自定义的配置,需要在internal重新配置。external zone默认也是允许ssh通过的,如果你不希望外网使用ssh进入网关,需要删除这个服务。