iptables防火墙应用-地址转换
一 SNAT策略及应用
·SNAT策略概述
如图,在linux网关服务器上应用SNAT策略,即可让局域网内的主机共享网关的公网IP,从而接入互联网
·SNAT策略的原理
源地址转换(Source Network Address Translation);修改数据包的源地址
1假如未作SNAT转换
如上图局域网PC机发送请求包(源地址192.168.1.234,目标地址58.63.236.45),网关服务器直接根据路由表进行转发, 192.168.1.234),于是乎私有地址是不能在互联网中使用的,所以通信失败
2进行SNAT转换
如上图局域网PC机发送请求包(源地址192.168.1.234,目标地址58.63.236.45),网关服务器根据SNAT记录将源IP改为自己公网接口IP,然后再转发出去;互联网中的web服务器接收到了请求包然后回复一个应答包(源地址58.63.236.45,目标地址218.29.30.31),网关服务器接收到数据包后将目标地址自动修改为192.168.1.234,然后发送给局域网PC机(第一被SNAT处理过的包,那么它的后续此类连接都会被SNAT自动处理)
·SNAT策略的应用
1前提条件:
局域网各主机正确设置IP地址/子网掩码;
局域网各主机正确设置默认网关地址;
Linux网关支持IP路由转发并有两块以上网卡
2打开linux网关的路由转发(默认是关闭的)
修改配置文件中的默认项为1,并重新读取配置
3共享静态IP上网的实现方法:编写SNAT转换规则
如果公司拥有自己的固定的公网IP
iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o eth0 -j SNAT --to-source 218.29.30.31
:先路由后处理,将源地址为192.168.1.0/24网段内的IP地址转换外接口网地址,然后通过外网卡eth0接口转发出去;其中-source可以省略
4共享动态IP上网的实现方法:编写SNAT转换规则:MASQUERADE —— 地址伪装
如果公司使用ADSL拨号上网,IP是不固定的;接口通常为 ppp0、ppp1
iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o eth0 -j MASQUERADE
MASQUERADE表示动态获取公网IP
5验证SNAT结果
在linux局域网主机上使用命令行访问互联网;Ctrl+c退出
在linux互联网web服务器上查看访问日志;访问的源地址只会是官网的外网地址
二 DNAT策略及应用
·DNAT策略概述
如图,在linux网关上设置DNAT防火墙策略,即可实现将内网服务器提供的服务发布到互联网,让外网的用户访问
·DNAT策略的工作原理
目标地址转换(Destination Network Address Translation );在Internet中发布位于企业局域网内的服务器;在网关防火墙上设置好策略后,internet中的客户机访问的数据包目标地址都会被转换为内网服务器的地址
·DNAT策略的应用
1前提条件
局域网的Web服务器能够访问Internet(配置SNAT)
网关的外网IP地址有正确的DNS解析记录
Linux网关支持IP路由转发
2实现方法
编写DNAT转换规则
:先处理后路由,将从网卡eth0入站的数据包目的地址从原来的外网地址修改为内网服务器地址,并且只能从指定端口访问;其中-destination可以省略
这里的指定端口如果是默认端口,则无需写出实际端口;若非指定端口,需要写出实际端口
iptables -t nat -A PREROUTING -i eth0 -d 218.29.30.31 -p tcp --dport 2346 -j DNAT --to-destination 192.168.1.6:22
访问时需指定端口2346
3验证SNAT结果
略
三实验
实验目的:让内网主机可以访问互联网;让外网主机可以访问内网服务器
实验环境:如图所示.其中内网web服务器由linux系统搭建,外网web服务器由windows系统搭建;按图配置好IP,搭建好环境
实验要求:
1配置内网web服务器防火墙策略,只提供web服务和远程连接服务且服务器能够ping通其他主机,但是其他主机却无法ping通服务器,拒绝其他所有服务
2配置SNAT策略,让局域网主机能够访问互联网
3配置DNAT策略,将内网web服务器发布到互联网中,让互联网主机能够访问内网网站
4发布网关服务器的远程连接和内网web服务器的远程连接,并要求使用非默认端口连接
实验步骤
要求1
1搭建内网web服务器(实验环境下只需安装服务,再开启服务,使用服务的默认站点)
远程连接服务默认已存在,开启相应端口即可(22);但是开启后只能局域网内的主机连接,若需要互联网外的主机连接,还需要在网关服务器上编写DNAT策略
2编写防火墙策略
清空所有规则
修改filter表中INPUT链的默认策略为拒绝所有
其中允许80、22端口的访问,并允许已建立连接的请求
3在局域网客户机上进行测试(也可在配置完DNAT后在互联网PC上测试)
略(实际中测试成功)
要求2
1开启网关路由功能
Linux网关要有两块网卡
修改配置文件并重载
2编写SNAT策略
清空所有规则
将源地址转换为公网地址
3在局域网客户机访问外网测试
略(实际中测试成功)
要求3
1编写DNAT策略
将目的地址转换为内网服务器地址
2在互联网中的PC上访问内网服务器测试
略(实际中测试成功)
要求4
1发布web服务器的SSH((非默认端口))
编写DNAT策略
2发布网关的SSJ
网关直接暴露在互联网中,所以只需修改SSHD服务的监听端口号即可;(去掉注释)
重启服务
3测试
使用同一个IP,不同端口,就能远程连接不同服务器
注意事项:对于一些特殊的服务,为了保持网络连接的相关性,需要额外的加载一些内核模块才能正常使用;如发布FTP服务时,除了编写DNAT策略发布20、21端口号外,还需运行两个模块