Linux防火墙(二)
目录
前言
一、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防火墙(二)相关推荐
- linux防火墙基础firewalld
第二章firewalld防火墙(一)linux防火墙基础 防火墙技术: 1.包过滤 packet filtering 2.应用代理 application proxy 3.状态检测 stateful ...
- Linux日常运维管理技巧(二)Linux防火墙:你可以ping别人,别人ping不了你、转发、代理
目录 Linux防火墙 netfilter iptables filter表小案例 nat表应用 Linux防火墙 selinux临时关闭 setenforce 0 [root@zyshanlinux ...
- linux 防火墙 -netfilter
2019独角兽企业重金招聘Python工程师标准>>> 关于iptables 什么是iptables? 常见于linx系统下的应用层防火墙工具 firewalld 和netfilte ...
- Linux防火墙与iptables命令
Linux防火墙与iptables命令 防火墙概念 一.Firewalld与iptables简介 1.1Firewalld 1.2Firewalld.iptables 二.iptables 2.1四表 ...
- Linux防火墙iptables学习
http://blog.chinaunix.net/uid-9950859-id-98277.html 要在网上传输的数据会被分成许多小的数据包,我们一旦接通了网络,会有很多数据包进入,离开,或者经过 ...
- 怎么监听linux防火墙,linux怎么查看防火墙是否开启并清除防火墙规则?
iptables是linux下的防火墙组件服务,相对于windows防火墙而言拥有更加强大的功能,下面我们就来看看linux系统中关于iptables的一般常见操作,判断linux系统是否启用了ipt ...
- linux防火墙--iptables(三)
七.SNAT源地址转换 ·Source Network Address Translation ·修改数据包的源地址 ·仅用于nat表的POSTROUTING链 Example:局域网共享公网IP上网 ...
- 1 Linux防火墙设置
1.(ubuntu)从 iptables 过渡到 nftables 当前,有一个与 nftables 兼容的 iptables-nft 后端,但是很快,即使是它也不再提供了.另外,正如 Red Hat ...
- Linux防火墙firewalld安全设置
微信公众号:运维开发故事,作者:wanger 背景描述 防火墙是具有很好的保护作用.***者必须首先穿越防火墙的安全防线,才能接触目标计算机.在公司里数据安全是最重要的,要求安全部门进行全公司进行服务 ...
最新文章
- 谷歌X实验室的“无用”发明
- Android中dispatchTouchEvent, onInterceptTouchEvent, onTouchEvent的理解
- java枚举和枚举类_Java枚举:您拥有优雅,优雅和力量,这就是我所爱!
- c#sql防注入模糊查询_SQL中利用LIKE实现模糊查询的功能
- 快讯:Oracle 19c 新特性及官方文档抢鲜下载
- 这款游戏玩法是Low了点,但赚的却是实打实的EOS。
- java ee图书管理系统_基于jsp的图书管理系统-JavaEE实现图书管理系统 - java项目源码...
- 【历史上的今天】9 月 3 日:谷歌发布 Android 10;微软收购诺基亚;eBay 诞生
- 常用的即时通讯软件有哪些
- php中的资源是什么意思,PHP 和 COM
- 基于双服务器的抗关键词猜测攻击的公钥可搜索加密方案
- 妙不可言的JASTVIN云域网,用过的都说好!你怎么看
- VSCode XML文件格式化
- html调用手机NFC,NFC门禁模拟-教你用NFC手机模拟门禁卡
- cqh-class 文件内容,类加载过程,编写第一个程序
- PostgreSQL引入的JSONB解释
- kvm切换器什么牌子好?怎么选择
- linux上部署K8S集群
- Java连接MySQL数据库并进行简单查询
- Linux中的lo回环接口