centos7 利用firewalld自建NAT网关

在传统的网络结构中,每个子网都有一个网关,子网内的主机通过这个网关进行上网,网关进行地址转换,修改IP报文的源地址等,具体的原理有兴趣的百度一下就知道了。
在传统机房内几乎都是有路由器的,而路由器也自带网关的功能,基本用不到自建NAT,但是在如今横行的公有云中,却是有着很大的需求,例如阿里云,阿里云内网中没有公网IP的电脑如何通过有公网IP的电脑进行上网,这就需要NAT网关。其他公有云也类似,这里以阿里云进行举例:

在阿里云的传统网络中,是不支持自建NAT网关,配置SNAT的。只有在专有网络VPC中,才可以。而其实在专有网络中,内网的主机的网络设置,比如网关也是无法修改的,路由表也没法添加修改。根本没办法将内网主机的网关设为专有网络内带有公网IP的主机。
只能通过专有网络中的虚拟路由器,在路由器中添加路由,通过将所有目标请求都指定下一跳到有公网IP的ecs上,这样才可以将内网中的ecs请求都发到有公网ip的ecs上。

实现步骤如下:
## 进入阿里云控制台,专有网络,路由器,创建路由表:
centos7 <wbr>利用firewalld自建NAT网关

目标网段设为所有:0.0.0.0/0
下一跳指定ecs实例为专有网络内有公网IP的ecs实例。

## 在指定的带有公网IP的实例上操作,启动NAT网关的SNAT源地址转换功能。
## 开启firewalld防火墙,默认是关闭的。
$ systemctl enable firewalld
$ systemctl start firewalld

## 网卡默认是在public的zones内,也是默认zones。永久添加源地址转换功能
$ firewall-cmd --add-masquerade --permanent
$ firewall-cmd --reload

## 添加网卡的ip转发功能,添加如下配置
$ vim /etc/sysctl.conf
----------------------------------------------------------------------------------------------------------
net.ipv4.ip_forward=1
----------------------------------------------------------------------------------------------------------

## 重载网络配置生效
$ sysctl -p

OK,到此,自建NAT网关成功,实现了内网主机通过这台机进行上网,而反向的DNAT端口转发也是可以通过firewalld的端口转发功能来实现。
这样就不需要买阿里云的收费NAT网关了。

另:如果不是公有云主机,而是本机机房的话,那就更简单了:
##直接类似的开启可以访问网络的主机的firewalld防火墙源地址转化功能,和网卡的ip_forward转发功能。

## 内网电脑只需修改网关,指定网关为配置了snat功能的电脑,则可以通过改电脑访问网络。
$ vim /etc/sysconfig/network-scripts/ifcfg-exxxxx
----------------------------------------------------------------------------------------------------------
GATEWAY="192.168.9.2"
DNS1="xxx.xxx.xxx.xxx" (跟网关服务器的dns相同)
----------------------------------------------------------------------------------------------------------

## 重启网络配置,生效
$ systemctl restart network

OK,到此,自建NAT网关就顺利完成。
---------------------
作者:Amos_x
来源:CSDN
原文:https://blog.csdn.net/weixin_41004350/article/details/78493077
版权声明:本文为博主原创文章,转载请附上博文链接!

About the Author

Avatar photo

今生在线

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据