感谢支持
我们一直在努力

SNAT、DNAT——iptables防火墙基础策略汇总

通过之前的学习(见 http://www.linuxidc.com/Linux/2013-08/88423.htm ),我们认识了linux防火墙的表、链结构,并学会编写简单的防火墙规则,接下来为大家补充linux防火墙的SNAT源地址转换和DNAT目标地址转换策略,熟悉其的用途和用法是我们掌握防火墙的基础,下边开始我们的学习:

推荐阅读:

iptables—包过滤(网络层)防火墙 http://www.linuxidc.com/Linux/2013-08/88423.htm

Linux防火墙iptables详细教程 http://www.linuxidc.com/Linux/2013-07/87045.htm

iptables+L7+Squid实现完善的软件防火墙 http://www.linuxidc.com/Linux/2013-05/84802.htm

iptables的备份、恢复及防火墙脚本的基本使用 http://www.linuxidc.com/Linux/2013-08/88535.htm

Linux下防火墙iptables用法规则详解 http://www.linuxidc.com/Linux/2012-08/67952.htm

SNAT策略概述:

SNAT策略的典型应用环境

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

SNAT策略的原理:

源地址转换Source Network Address Translation)是linux防火墙的一种地址转换操作,也是iptables命令中的一种数据包控制类型,并根据指定条件修改数据包的源IP地址。

实验环境拓扑:

实验分析:

a:只开启路由转发,未做地址转换的情况:

分析:

  • 从局域网PC机访问Internet的数据包经过网关转发后其源IP地址保持不变;

  • Internet中的主机收到这样的请求数据包后,响应数据包将无法正确返回,从而导致访问失败。

b:开启路由转发,并设置SNAT转换的情况:

分析:

  • 局域网PC机访问Internet的数据包到达网关服务器时,会先进行路由选择;

  • 如果该数据包需要从外网接口eth0向外转发,则将其源IP地址192.168.10.2修改为网关的外网接口地址210.106.46.151,然后发送给目标主机。

  • 这种访问方式的优点:

  • Internet中的服务器并不知道局域网PC机的实际IP地址,中间的转换完全由网关主机完成,起到了保护内部网络的作用。

SNAT策略的应用:

前提条件:

  • 局域网各主机正确设置IP地址/子网掩码

  • 局域网各主机正确设置默认网关地址

  • Linux网关支持IP路由转发

实现方法:

编写SNAT转换规则

SNAT共享固定IP地址上网:

实验环境描述:

  • Linux网关服务器两块网卡eth0210.106.46.151连接Interneteth1192.168.10.1连接局域网,开启IP路由功能

  • 局域网PC机的默认网关设为192.168.10.1,并设置正确的DNS服务器。

  • 内网和外网分别新建客户机,分别指定对应的网关地址,在外网客户机上开启httpd服务,在内网客户机中访问httpd服务,最后查看httpd客户机的访问记录;

  • 要求:192.168.10.0/24网段的PC机能够通过共享方式正常访问internet

实验步骤:

1:打开网关的路由转发(IP转发是实现路由功能的关键所在):

打开路由转发的两种方式

永久打开修改/proc文件系统中的ip_forward,当值为1时表示开启,为0表示关闭):

临时开启,临时生效:

2:正确设置SNAT策略(若要保持SNAT策略长期有效,应将相关命令写入rc.local中):

[root@localhost ~]# iptables -t nat -A POSTROUTING -s 192.168.10.0/24 -o eth0 -j SNAT –to-source 210.106.46.151

3:测试SNAT共享接入的结果:

上诉操作完成后,使用局域网PC就可以正常访问Internet中的网站。

对于被访问的网站服务器,在日志文件中将会记录以网关主机210.106.46.151访问。

共享动态IP地址上网

  • MASQUERADE —— 地址伪装

  • 适用于外网IP地址非固定的情况

  • 对于ADSL拨号连接,接口通常为ppp0ppp1

  • SNAT规则改为MASQUERADE即可

实例:

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

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

DNAT策略概述:

DNAT策略的典型应用环境

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

DNAT策略的原理

目标地址转换Destination Network Address Translation,是Linux防火墙的另一种地址转换操作,也是iptables命令中的一种数据包控制类型,其作用是根据指定条件修改数据包的目标IP地址、目标端口。

SNAT用来修改源IP地址,而DNAT用来修改目标IP地址、目标端口;SNAT只能用在nat表的POSTROUTING链,而DNAT只能用在nat表的PREROUTING链和OUTPUT链(或被其调用的链)中。

DNAT策略的应用:

前提条件:

  • 局域网的Web服务器能够访问Internet

  • 网关的外网IP地址有正确的DNS解析记录

  • Linux网关支持IP路由转发

实现方法:

编写DNAT转换规则:

实验部署:

实验描述:

1.要求主机型防火墙(在192.168.10.2)上配置:

只提供webssh服务;

192.168.10.2可以访问网络上其他主机;

2.网络型防火墙(在网关主机配置)。

局域网内主机共享一个共有IP地址访问Internet

Internet可以访问公司的网站;

管理员在外网可远程管理公司web服务器(不使用标准端口);

不允许局域网用户ping到外网;

防火墙本机不提供任何访问,但可访问其他主机。

实验步骤:

a.只提供webssh服务;192.168.10.2可以访问网络上其他主机:

[root@webssh ~]# iptables -P INPUT DROP

[root@webssh ~]# iptables -I INPUT -m state –state ESTABLISHED,RELATED -j ACCEPT

[root@webssh ~]# iptables -I INPUT -p tcp –dport 80 -j ACCEPT

[root@webssh ~]# iptables -I INPUT -p tcp –dport 22 -j ACCEPT

b.局域网内主机共享一个共有IP地址访问Internet

[root@gateway ~]# iptables -t nat -A POSTROUTING -s 192.168.10.0/24 -o eth0 -j SNAT –to-source 173.16.16.1

Internet可以访问公司的网站;

[root@gateway ~]# iptables -t nat -A PREROUTING -i eth0 -d 173.16.16.1 -p tcp–dport 80 -j DNAT –to 192.168.10.2

c正确设置DNAT策略

管理员在外网可远程管理公司web服务器(不使用标准端口);

[root@gateway ~]# iptables -t nat -A PREROUTING -i eth0 -d 173.16.16.1 -p tcp–dport 2346 -j DNAT –to-destination 192.168.10.2:22

不允许局域网用户ping到外网;

[root@gateway ~]# iptables -A FORWARD -p icmp -j DROP

防火墙本机不提供任何访问,但可访问其他主机。

[root@gateway ~]# iptables -A INPUT -m state –state ESTABLISHED,RELATED -j ACCEPT

在外网服务器开启httpd服务并添加主页内容:

在网关服务器上开启路由转发功能:

整个实验到此就完成了,实验要求一一满足,根据需求还可以实现更多的功能,有待大家去发现。

赞(0) 打赏
转载请注明出处:服务器评测 » SNAT、DNAT——iptables防火墙基础策略汇总
分享到: 更多 (0)

听说打赏我的人,都进福布斯排行榜啦!

支付宝扫一扫打赏

微信扫一扫打赏