Iptables防火墙(二)

重点:

ØSNAT策略的用途、用法

ØDNAT策略的用途、用法

7.1 SNAT策略及应用

SNATsource network address translation,源地址转换)是linux中防火墙的一种地址转换,也是liptables命令中的一种数据包控制类型,其作用是根据指定的条件修改数据包源IP地址

7.1.1 SNAT策略概述

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

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

175725738.jpg

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

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

175747619.jpg

当局域网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的网站,查看internetweb服务器会显示访问的IP地址为218.29.30.31tail /var/log/messages

2.共享动态IP上网

使用ADSL宽带接入时,如何应用SNAT策略?针对这种需求,iptables提供MASQUERADE(伪装)的数据包控制类型,MASQUERADE相当于SNAT的一个特列,同样用来修改(伪装)数据包的源IP地址,只不过它能自动获取外网接口的IP地址,而无需使用“—to-source”指定固定的IP地址

对于ADSL宽带连接来说,连接名通常为ppp0ppp1使用-j  MASQUERADE控制包类型


列:iptables  -t  nat -A  POSTROUTING –s  192.168.1.0/24  -o ppp0(或外网接口)  -j MASQUERADE

7.2 DNAT策略及应用、

 DNATdesination  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服务开启),分别使用234522端口,其中网关的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@218.29.30.31   //登录网关服务器(zhangsan是网关账户)

/sbin/ifconfig  eth0|  grep inet  addr   //确认连接结果

ssh –p  2346 lisi@218.29.30.31    //登录网关服务器(lisi是网站账户)

/sbin/ifconfig  eth0|  grep inet  addr

注意:在发布ftp服务器时,除了针对2021及被动模式的端口设置DNAT策略以外,还需加载ip_nat_ftpip_conntrack_ftp模块

列:modprobe  ip_nat_ftp         //加载ip_nat_ftp 模块

modprobe  ip_conntrack_ftp   //加载ip_conntrack_ftp模块

lsmod  | grep ftp