1. 程式人生 > >centos7 利用firewalld自建NAT閘道器

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閘道器就順利完成。