Iptables防火墙(二)
重点:
ØSNAT策略的用途、用法
ØDNAT策略的用途、用法
7.1 SNAT策略及应用
SNAT(source network address translation,源地址转换)是linux中防火墙的一种地址转换,也是liptables命令中的一种数据包控制类型,其作用是根据指定的条件修改数据包源IP地址
7.1.1 SNAT策略概述
通过在网关中应用SNAT策略,可以解决局域网共享上网的问题。
1.只开启路由转发,未做地址转换的情况
正常情况下,作为网关的linux服务器必须打开路由转发,才能沟通各个网段,未使用地址转换策略时,从局域网PC 访问internet的数据包经过网关转发后源IP地址保持不变,当internet中的主机这样的请求数据包后,响应数据包将无法正确返回(私有地址不能在internet正常路由),从而导致访问失败
2.开启路由转发,并设置SNAT转换的情况
当局域网PC 访问internet的数据包到达网关服务器时,会先进行路由选择,若发现该数据包从外网接口向外转发,则将其源IP地址(192.168.1.234)修改为网关的外网接口地址(218.29.30.31),然后才发送给目标主机(56.63.236.45).相当于从网关服务器的公网IP地址提交数据访问请求,目标主机也可以正确返回响应数据包,最终实现局域网PC 机共享同一个公网IP地址接入internet。
7.1.2 SNAT策略的应用
SNAT典型应用是为局域网共享上网将提供接入策略,处理数据包的切入时机是在路由选择之后(POSTROUTING)进行。关键操作在于将局域网外发数据包的源IP地址(私有地址)
修改为网关服务器的外网接口IP地址(公有地址)
SNAT策略只能用在nat表的POSTROUTING链,使用iptables命令编写SNAT策略时,需结合“—to-source IP地址”选项来指定修改后的源IP 地址(列:-j SNAT –to-source218.29.30.30)
1.共享固定IP地址上网
1)打开网关的路由转发
对于linux服务器IP转发是实现路由的关键所在,对应于/proc文件系统中的ip_forward设置,当值为1时表示开启,0为表示关闭
修改sysctl.conf配置文件,永久打开路由功能
Vim /etc/sysctl.conf
Net.ipv4.ip_forward = 1 //将此行配置中0改为1
Sysctl.conf // 读取修改后的配置
若只希望临时开启路由转发,可执行以下操作中:
Echo 1 > /proc/sys/net/ipv4/ip_forward
或者 Sysctl –w net.ipv4.ip_forward=1
2)正确设置SNAT策略
将局域网PC机访问internet的数据包采取SNAT策略,将源地址更改为网关的公网IP 地址
Iptables -t nat -A POSTROUTING –s 192.168.1.0/24 -o eth0 –j SNAT –to-source 218.29.30.31
3)测试SNAT共享接入结果
使用局域网中PC机可以正常访问internet的网站,查看internet中web服务器会显示访问的IP地址为218.29.30.31(tail /var/log/messages)
2.共享动态IP上网
使用ADSL宽带接入时,如何应用SNAT策略?针对这种需求,iptables提供MASQUERADE(伪装)的数据包控制类型,MASQUERADE相当于SNAT的一个特列,同样用来修改(伪装)数据包的源IP地址,只不过它能自动获取外网接口的IP地址,而无需使用“—to-source”指定固定的IP地址
对于ADSL宽带连接来说,连接名通常为ppp0、ppp1等使用-j MASQUERADE控制包类型
列:iptables -t nat -A POSTROUTING –s 192.168.1.0/24 -o ppp0(或外网接口) -j MASQUERADE
7.2 DNAT策略及应用、
DNAT(desination network addresstranslation ,目标地址转换)是linux中防火墙的一种地址转换,也是liptables命令中的一种数据包控制类型,其作用是根据指定的条件修改数据包的目标IP地址、目标端口。
7.2.1 DNAT策略概述
SNATY用来修改原IP地址,DNAT用来修改目标IP地址、目标端口;
SNAT只能用在nat表的POSTROUTING链,而DNAT只能用在nat表的PREROTING和 OUTPUT链(或被其调用的链)中。
7.2.2 DNAT策略的应用
DNAT的典型应用是在internet中发布企业内部的服务器,处理包的切入时机是在路由选择之前(PREROUTING)进行。关键操作在于将访问网关外网接口IP地址(公有地址)的数据包的目标地址修改为实际提供服务的内部服务器的IP地址(私有地址)。
1.发布企业内部的web服务器
1)打开网关的路由转发(配置永久路由转发功能)同上
2)正确设置DNAT策略
Iptables -t nat -A PREROUTING -I eth0 –d 218.29.30.31 -p tcp --dport 80 -j DNAT --to-destination 192.168.1.6
3)测试DNAT发布结果
在网站服务器192.168.1.6正确配置、启动web服务,并测试网页
(echo “here is lanweb” > /var/www/html/index.html)
2.发布企业外部的OpenSSH服务器
1)配置OpenSSH服务
在网关、网站服务器均开启OpenSSH服务(默认sshd服务开启),分别使用2345、22端口,其中网关的sshd服务因直接面向internet,因此不使用默认端口
2)打开网关的路由转发(配置永久路由转发功能)同上
3)正确设置DNAT策略
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
4)测试DNAT发布结果
ssh –p 2345 //登录网关服务器(zhangsan是网关账户)
/sbin/ifconfig eth0| grep “inet addr” //确认连接结果
ssh –p 2346 //登录网关服务器(lisi是网站账户)
/sbin/ifconfig eth0| grep “inet addr”
注意:在发布ftp服务器时,除了针对20、21及被动模式的端口设置DNAT策略以外,还需加载ip_nat_ftp、ip_conntrack_ftp模块
列:modprobe ip_nat_ftp //加载ip_nat_ftp 模块
modprobe ip_conntrack_ftp //加载ip_conntrack_ftp模块
lsmod | grep “ftp”