系统相关
首页 > 系统相关> > Linux 防火墙(二)(SNAT 与 DNAT 的原理及应用)(规则的导出与导入)

Linux 防火墙(二)(SNAT 与 DNAT 的原理及应用)(规则的导出与导入)

作者:互联网

文章目录


Linux 防火墙在很多时候承担着连接企业内、外网的重任,除了提供数据包过滤功能以外,还提供一些基本的网关应用

一、SNAT 的原理及应用

1.概述

1.1 只开启路由转发,未设置地址转换的情况

1.2 开启路由转发,并设置 SNAT 转发的情况

2.应用

2.1 共享固定 IP 地址上网

2.1.1 打开网关的路由转发

vim /etc/sysctl.conf
...
net.ipv4.ip_forward =1 
#将此行写入配置文件,0改为1


sysctl -p                   #读取修改后的配置


#临时开启路由转发
echo 1> /proc/sys/net/ipv4/ip_forward
或
sysctl -w net.ipv4.ip_forward=1

2.1.2 正确设置 SNAT 策略

iptables -t nat -A POSTROUTING -s 192.168.126.0/24 -o ens33 -j SNAT --to 12.0.0.1
或
iptables -t nat -A POSTROUTING -s 192.168.126.0/24 -o ens33 -j SNAT --to-source 12.0.0.1-12.0.0.10
                                    #内网IP       出站 外网网卡                      外网IP或地址池

2.1.3 测试 SNAT 共享接入结果

2.2 共享动态 IP 地址上网

iptables-t nat -A POSTROUTING -s 192.168.126.0/24 -o ens33 -j MASQUERADE

二、DNAT 的原理及应用

1.概述

2.应用

2.1 发布企业内部的 Web 服务器

需求描述如下:

2.1.1 打开网关的路由转发

vim /etc/sysctl.conf
...
net.ipv4.ip_forward =1 
#将此行写入配置文件,0改为1


sysctl -p                   #读取修改后的配置

2.1.2 正确设置 DNAT 策略

iptables -t nat -A PREROUTING -i ens33:0 -d 12.0.0.1 -p tcp --dport 80 -j DNAT --to-destination 192.168.126.11
	                         入站 外网网卡  外网IP                                              内网服务器IP

2.1.3 测试 DNAT 发布结果

2.3 发布时修改目标端口

#发布局域网内部的OpenssH服务器,外网主机需使用250端口进行连接
iptables -t nat -A PREROUTING -i ens33 -d 12.0.0.1 -p tcp --dport 250 -j DNAT --to 192.168.126.11:22

#在外网环境中使用SSH测试
ssh -p 250 root@12.0.0.1

#在外网环境中使用SSH测试
ssh -p 250 root@12.0.0.1
yum -y install net-tools        #若没有ifconfig命令可提前使用yum进行安装
ifconfig ens33

#注意:使用DNAT时,同时还有配合SNAT使用,才能实现响应数据包的正确返回

#小知识扩展:
#主机型防火墙主要使用INPUT,OUTPUT链,设置规则时一般要详细的指定到端口
#网络型防火墙主要使用FORWARD链,设置规则时很少去指定到端口,一般指定到IP地址或者到网段即可

三、规则的导出与导入(即备份与恢复)

在 Linux 系统中, iptables 为我们提供了批量备份与恢复规则的命令,也提供了标准的系统服务以便开启、关闭防火墙功能

1.规则的备份及还原

1.1 iptables-save 命令

iptables-save
iptables-save > /opt/ipt.txt
#备份所有表的规则

1.2 iptables-restore 命令

iptables-restore < /opt/ipt.txt
#从备份文件恢复规则

2.使用 iptables 服务

2.1 自动启用防火墙规则

iptables-save > /etc/sysconfig/iptables

2.2 清空所有防火墙规则

systemctl stop iptables   
#停止iptables服务会清空掉所有表的规则

systemctl start iptables  
#启动iptables服务会自动还原/etc/sysconfig/iptables中的规则

标签:iptables,网关,DNAT,IP,地址,Linux,SNAT,数据包
来源: https://blog.csdn.net/weixin_51486343/article/details/113620934