目录

前言

一、SNAT策略及应用

1、SNAT策略概述

2、SNAT的典型应用环境

3、SNAT策略的工作原理

4、SNAT策略的应用

二、DNAT策略及应用

1、DNAT策略概述

2、DNAT工作原理:

3、DNAT策略的应用

三、防火墙规则的备份和还原

总结


前言

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

一、SNAT策略及应用

1、SNAT策略概述

1-1、SNAT策略的典型应用环境

局域网主机共享单个公网IP地址接入lnternet

1-2、SNAT策略的原理

源地址转换,Source Network Address Translation

修改数据包的源地址

2、SNAT的典型应用环境

随着Internet网络在全世界范围内的快速发展,IPv4协议支持的可用IP地址资源逐渐变少,资源匮乏使得许多企业难以申请更多的公网IP地址,或者只能承受一个或者少数几个公网IP地址的费用。而与此同时,大部分企业面临着将局域网内的主机接入Internet的需求。

通过在网关中应用SNAT策略,可以解决局域网共享上网的问题。

3、SNAT策略的工作原理

3-1、只开启路由转发,未设置地址转换的情况

正常情况下,作为网关的linux服务器必须打开路由转发,才能沟通多个网络。未使用地址转换策略时,从局域网PC访问Internet的数据包经过网关转发后其源IP地址持不变,当Internet中的主机收到这样的请求数据包后,响应数据包将无法正确返回(私有地址不能在Internet中正常路由),从而导致访问失败。

3-2、开启路由转发,并设置SNAT转换的情况

如果在网关服务器中正确运用SNAT策略,数据包转发情况就不一样了。当局域网PC访问Internet的数据包到达网关服务器时,会先进行路由选择,若发现该数据包需要从外网接口向外转发,则将其源IP地址修改为网关的外网接口地址,然后才发送给目标主机。相当于从网关服务器的公网IP地址提交数据访问请求,目标主机也可以正确返回响应数据包,最终实现局域网PC共享同一个公网IP地址接入Internet。

在上述SNAT转换地址的过程中,网关服务器会根据之前建立的SNAT映射,将响应数据包正确返回局域网中的源主机。因此,只要连接的第一个包被SNAT处理了,那么这个连接以及对应数据流的其他包也会自动的被进行SNAT处理。另一方面,Internet中的服务器并不知道局域网PC的实际IP地址,中间的转换完全由网关主机完成,一定程度上也起到了保护内部网络的作用。

4、SNAT策略的应用

SNAT策略只能用在nat表的POSTROUTING链,使用iptables命令编写SNAT策略时,需要结合“--to-source IP地址”选项来指定修改后的源IP地址(如-j SNAT --to-source 218.29.30.31)。

4-1、共享固定IP地址上网

4-1-1、打开网关的路由转发

[root@localhost ~]#vim /etc/sysctl.conf      #修改sysctl.conf配置文件,永久打开路由转发功能
......                    #省略部分内容
net.ipv4.ip_forward = 1   #将此行配置中的0改为1,表示开启
[root@localhost ~]#sysctl -p    #读取修改后的配置如果只希望临时开启路由转发,执行一些操作
[root@localhost ~]#echo 1 > /proc/sys/net/ipv4/ip_forward
或者
[root@localhost ~]#sysctl -w net.ipv4.ip_forward=1
net.ipv4.ip_forward=1

4-1-2、正确设置SNAT策略

[root@localhost ~]#iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o eth0 -j
SNAT--to-source 218.29.30.31#218.29.30.31为网关主机

4-1-3、测试SNAT共享接入结果

上述操作完成以后,使用局域网中的PC就可以正常访问Internet中的网站了。对于被访问的网站服务器来说,将会认为是网关主机(218.29.30.31)在访问(可观察Web日志获知),而不知道实际上是企业内网的PC在访问。

4-2、共享动态IP地址上网

在某些情况下,网关的外网IP地址可能并不是固定的,如使用ADSL宽度接入时,且连接名称通常为ppp0、ppp1等。需要将SNAT策略中的“--to-source IP地址”去掉,然后改用“-j MASQUERADE”指定数据包控制类型。

[root@localhost ~]#iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o ppp0
-j MASQUERADE

当然,如果网关使用固定的公网IP地址,最后选择SNAT策略而不是MASQUERADE策略,以减少不必要的系统开销。

小知识扩展:一个IP地址做SNAT转换,一般可以让内网100到200 台主机实现上网。

二、DNAT策略及应用

1、DNAT策略概述

DNAT策略与SNAT非常相似,只不过应用方向相反。SNAT用来修改源IP地址,而DNAT用来修改目标IP地址和目标端口;SNAT只能用在nat表的POSTROUTING链中,而DNAT只能用在nat表的PREROUTING链和OUTPUT链(或被其调用的链)中。

2、DNAT工作原理:

2-1、 DNAT应用环境:

在Internet中发布位于局域网内的服务器

DNAT原理:修改数据包的目的地址。

2-2、DNAT转换前提条件:

1.局域网的服务器能够访问Internet

2.网关的外网地址有正确的DNS解析记录

3. Linux网关开启IP路由转发

vim /etc/ sysctl.conf
net.ipv4.ip_forward = 1
sysctl -p

2-3、进行DNAT转换后的情况

当Internet中的客户机提交的HTTP请求到达企业的网关服务器时,网关首先判断数据包的目标地址和目标端口,若发现该数据包需要访问本机的80端口,则将其目标IP地址修改为内网中真正的网站服务器的IP地址,然后才发送给内部的网站服务器。

在上述DNAT转换地址的过程,网关服务器会根据之前建立的DNAT映射,修改返回的HTTP应答数据包的源IP地址,最后返回给Internet中的客户机。Internet中的客户机并不知道企业网站服务器的真实局域网地址,中间的转换完全由网关主机完成。通过设置恰当的DNAT策略,企业内部的服务器就可以面向Internet提供服务了。

3、DNAT策略的应用

3-1、DNAT转换1:发布内网的web服务

#打开网关的路由转发
[root@localhost ~]#vim /etc/sysctl.conf
......
net.ipv4.ip_forward = 1
[root@localhost ~]#sysctl -p#把从ens33进来的要访问web服务的数据包目的地址转换为192.168.100.100(例子)
[root@localhost ~]#iptables -t nat -A PREROUTING -i ens37 -d 10.0.0.1 -p tcp --dport
80 -j DNAT --to 192.168.100.13
或
[root@localhost ~]#iptables -t nat -A PREROUTING -i ens37 -d 10.0.0.1 -p tcp --dport
80 -j DNAT --to-destination 192.168.100.13
(-i ens37:入站)、(10.0.0.1:外网IP)、(192.168.100.13:内网服务器IP)#回包
[root@localhost ~]#iptables -t nat -A POSTROUTING -s 192.168.100.13 -o ens37 -j
SNAT --to 10.0.0.1

3-2、DNAT转换2:发布时修改目标端口

#配置OpenSSH服务
在网关、网站服务器中均开启OpenSSH服务,分别使用2345、22端口。其中网关的sshd服务因直接面向Internet,因此不使用默认端口。#打开网关的路由转发
[root@localhost ~]#vim /etc/sysctl.conf
net.ipv4.ip_forward = 1
[root@localhost ~]#sysctl -p#正确设置DNAT策略
网关本机的sshd服务直接面向Internet,因此不需要地址转换,但网站服务器位于内网,必须通过DNAT策略进行发布。在网关中设置防火墙规则,修改访问外网ip地址250端口的数据包,将目标地址改为192.168.100.13,将目标端口改为22,以便转发给网站服务器。#发布局域网内部的OpenSSH服务器,外网主机需使用250端口进行连接
[root@localhost ~]#iptables -t nat -A PREROUTING -i ens37 -d 10.0.0.1 -p tcp --dport
250 -j DNAT --to 192.168.100.13:22#测试DNAT发布结果
ssh -p 250 root@10.0.0.1      //#在外网环境中使用SSH测试
yum install net-tools -y      //若没有ifconfig 命令可提前使用yum进行安装
ifconfig ens33iptables -nvL -t nat    查看

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

三、防火墙规则的备份和还原

#导出(备份)所有表的规则.
iptables-save > /opt/ipt.txt
导入(还原)规则
#iptables-restore < /opt/ipt.txt将iptables规则文件保存在/etc/sysconfig/iptables中,iptables服务启动时会自动还原规则
iptables-save > /etc/sysconfigliptables
systemctl stop iptables  #停止iptables服务会清空掉所有表的规则
systemctl start iptables #启动iptables服务会自动还原/etc/sysconfig/iptables中的规则

总结

SNAT策略仅在nat表的POSTROUTING链使用,可以修改数据包的源地址,如实现局域网共享上网。

当网关使用非固定的公网IP地址时,SNAT可以替换为地址伪装策略MASQUERADE。

DNAT策略仅在nat表的PREROUTING、OUTPUT链使用,可以修改数据包的目标地址和目标端口,如在Internet中发布企业内部网络中的应用服务器。

主机型防火墙主要使用INPUT、OUTPUT链,设置规则时一般要详细的指定到端口。

网络型防火墙主要使用FORWARD链,设置规则时很少去指定到端口,一-般指定到IP地址或者到网段即可。

Linux防火墙(二)相关推荐

  1. linux防火墙基础firewalld

    第二章firewalld防火墙(一)linux防火墙基础 防火墙技术: 1.包过滤 packet filtering 2.应用代理 application proxy 3.状态检测 stateful ...

  2. Linux日常运维管理技巧(二)Linux防火墙:你可以ping别人,别人ping不了你、转发、代理

    目录 Linux防火墙 netfilter iptables filter表小案例 nat表应用 Linux防火墙 selinux临时关闭 setenforce 0 [root@zyshanlinux ...

  3. linux 防火墙 -netfilter

    2019独角兽企业重金招聘Python工程师标准>>> 关于iptables 什么是iptables? 常见于linx系统下的应用层防火墙工具 firewalld 和netfilte ...

  4. Linux防火墙与iptables命令

    Linux防火墙与iptables命令 防火墙概念 一.Firewalld与iptables简介 1.1Firewalld 1.2Firewalld.iptables 二.iptables 2.1四表 ...

  5. Linux防火墙iptables学习

    http://blog.chinaunix.net/uid-9950859-id-98277.html 要在网上传输的数据会被分成许多小的数据包,我们一旦接通了网络,会有很多数据包进入,离开,或者经过 ...

  6. 怎么监听linux防火墙,linux怎么查看防火墙是否开启并清除防火墙规则?

    iptables是linux下的防火墙组件服务,相对于windows防火墙而言拥有更加强大的功能,下面我们就来看看linux系统中关于iptables的一般常见操作,判断linux系统是否启用了ipt ...

  7. linux防火墙--iptables(三)

    七.SNAT源地址转换 ·Source Network Address Translation ·修改数据包的源地址 ·仅用于nat表的POSTROUTING链 Example:局域网共享公网IP上网 ...

  8. 1 Linux防火墙设置

    1.(ubuntu)从 iptables 过渡到 nftables 当前,有一个与 nftables 兼容的 iptables-nft 后端,但是很快,即使是它也不再提供了.另外,正如 Red Hat ...

  9. Linux防火墙firewalld安全设置

    微信公众号:运维开发故事,作者:wanger 背景描述 防火墙是具有很好的保护作用.***者必须首先穿越防火墙的安全防线,才能接触目标计算机.在公司里数据安全是最重要的,要求安全部门进行全公司进行服务 ...

最新文章

  1. 谷歌X实验室的“无用”发明
  2. Android中dispatchTouchEvent, onInterceptTouchEvent, onTouchEvent的理解
  3. java枚举和枚举类_Java枚举:您拥有优雅,优雅和力量,这就是我所爱!
  4. c#sql防注入模糊查询_SQL中利用LIKE实现模糊查询的功能
  5. 快讯:Oracle 19c 新特性及官方文档抢鲜下载
  6. 这款游戏玩法是Low了点,但赚的却是实打实的EOS。
  7. java ee图书管理系统_基于jsp的图书管理系统-JavaEE实现图书管理系统 - java项目源码...
  8. 【历史上的今天】9 月 3 日:谷歌发布 Android 10;微软收购诺基亚;eBay 诞生
  9. 常用的即时通讯软件有哪些
  10. php中的资源是什么意思,PHP 和 COM
  11. 基于双服务器的抗关键词猜测攻击的公钥可搜索加密方案
  12. 妙不可言的JASTVIN云域网,用过的都说好!你怎么看
  13. VSCode XML文件格式化
  14. html调用手机NFC,NFC门禁模拟-教你用NFC手机模拟门禁卡
  15. cqh-class 文件内容,类加载过程,编写第一个程序
  16. PostgreSQL引入的JSONB解释
  17. kvm切换器什么牌子好?怎么选择
  18. linux上部署K8S集群
  19. Java连接MySQL数据库并进行简单查询
  20. Linux中的lo回环接口

热门文章

  1. java javadoc要求_javadoc注释规范
  2. 用计算机处理文字单元设计,《计算机图形处理》课程单元设计方案.doc
  3. WIN7一开机就自动连接宽带 WIN7盘符混乱 WIN7查看隐藏文件 WIN7禁止提示更新 WIN7设置共享
  4. linux awk过滤符号,shell文本过滤之awk命令
  5. 国内知名技术团队博客
  6. JavaScript(入门)
  7. iframe替换html,div替换iframe
  8. Windows ❀ 蓝屏代码及其相关解决方案
  9. 【机器学习】随机森林预测并可视化特征重要性
  10. WHR-HP-G54