CentOS7使用iptables搭建nat网关服务器拓展延伸

Posted _诺千金

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了CentOS7使用iptables搭建nat网关服务器拓展延伸相关的知识,希望对你有一定的参考价值。


一、前言

一般情况下,SNAT和DNAT使用参考前篇文章(​​https://blog.51cto.com/hatech/5301589​​)即可满足需求,本文是在该基础上进行拓展延伸,区别就是在于网段的网关。

二、目标

假设有一个vpc网段(172.16.0.0/24,网关172.16.0.1),网段内有一个DHCP服务器(172.16.0.1),用于地址分配,有一个iptables网关服务器(内网172.16.0.200)用于代理,实现该网段内系统的SNAT和DNAT需求。

三、拓扑图

CentOS7使用iptables搭建nat网关服务器【拓展延伸】_iptables

四、DHCP Server配置

[root@dhcp ~]# cat /etc/dhcp/dhcpd.conf

#

# DHCP Server Configuration file.

#   see /usr/share/doc/dhcp*/dhcpd.conf.example

#   see dhcpd.conf(5) man page

#

subnet 172.16.0.0

netmask 255.255.255.0

range 172.16.0.200 172.16.0.250;

option routers 172.16.0.1;

option domain-name-servers 114.114.114.114;


subnet 192.168.80.0

netmask 255.255.255.0


五、配置iptables网关服务器

1、首先关闭centos7自带的firewalld防火墙

# systemctl disable firewalld

# systemctl stop firewalld

2、配置路由转发

# vi /etc/sysctl.conf  

net.ipv4.ip_forward = 1

# sysctl -p

3、安装iptables管理工具

# yum install iptables-services

# systemctl enable iptables

# systemctl restart iptables

4、查看路由

[root@natgw ~]# route -n

Kernel IP routing table

Destination     Gateway         Genmask         Flags Metric Ref    Use Iface

0.0.0.0         192.168.80.2    0.0.0.0         UG    0      0        0 ens33

0.0.0.0         172.16.0.1      0.0.0.0         UG    0      0        0 ens37

172.16.0.0      0.0.0.0         255.255.255.0   U     0      0        0 ens37

192.168.80.0    0.0.0.0         255.255.255.0   U     0      0        0 ens33


六、添加规则

1、添加DNAT规则

# iptables -t nat -A POSTROUTING -j MASQUERADE

# iptables -t nat -A PREROUTING -i ens33 -d 192.168.80.131 -p tcp --dport 2222 -j DNAT --to-destination 172.16.0.200:22


2、添加SNAT规则

# iptables -t nat -I POSTROUTING -s 172.16.0.200 -j MASQUERADE

注意,添加完对应主机的SNAT规则之后,需要在该主机内将nat网关服务器的内网IP添加为该主机的默认网关,否则无法连接外网。

[root@vm1 ~]# route add default gw 172.16.0.203

[root@vm1 ~]# route -n

Kernel IP routing table

Destination     Gateway         Genmask         Flags Metric Ref    Use Iface

0.0.0.0         172.16.0.203    0.0.0.0         UG    0      0        0 ens33

0.0.0.0         172.16.0.1      0.0.0.0         UG    0      0        0 ens33

172.16.0.0      0.0.0.0         255.255.255.0   U     0      0        0 ens33


3、查看规则

# iptables -nvL -t nat

Chain PREROUTING (policy ACCEPT 8 packets, 706 bytes)

pkts bytes target     prot opt in     out     source               destination

   4   208 DNAT       tcp  --  ens33  *       0.0.0.0/0            192.168.80.131       tcp dpt:2222 to:172.16.0.200:22


Chain INPUT (policy ACCEPT 1 packets, 229 bytes)

pkts bytes target     prot opt in     out     source               destination


Chain OUTPUT (policy ACCEPT 0 packets, 0 bytes)

pkts bytes target     prot opt in     out     source               destination


Chain POSTROUTING (policy ACCEPT 0 packets, 0 bytes)

pkts bytes target     prot opt in     out     source               destination

   7   477 MASQUERADE  all  --  *      *       172.16.0.200         0.0.0.0/0

   8   750 MASQUERADE  all  --  *      *       0.0.0.0/0            0.0.0.0/0


附:

1 将内网控制平面(dhcp和nat网关)解藕,效率提升,可用性提高,操作简便,架构明了

2 nat网关不是必需的,也就是如果没有SNAT和DNAT需求,就不用创建,如果有,可以单独创建

3 如果有snat需求,需要在主机中指定网关服务器的内网IP作为该主机系统的网关

4 可控且灵活,有些云内的nat网关就是这样实现的,供参考

5 nat网关服务器可以2台作为高可用

6 不影响网段内默认网关IP








以上是关于CentOS7使用iptables搭建nat网关服务器拓展延伸的主要内容,如果未能解决你的问题,请参考以下文章

iptables 共享上网 (NAT表的使用)

Iptables实验

linux基础之iptables SNAT和DNAT

配置CentOS 7 为NAT网关

iptables的NAT配置

Linux centos7iptables filter表案例iptables nat表应用