79 FreeBSD连载:设置和使用ipfilter( 二 )


map fxp1 192.168.3.0/24 -> 202.102.245.0/26
显然内部计算机的数量显然要多于系统拥有的合法地址的数量,上例中内部地址最多254个,而合法的外部地址仅仅有62个,这样如果向外连接的计算机一多,必然出现地址资源用光的问题 。因此动态分配IP一般和端口转换结合起来,以避免出现地址消耗完毕的问题 。
map规则是用于转换外出数据包的源地址,使得被转换后的地址好象是从外部地址中发起的 。而另一个规则rdr用于转换数据包中的目的地址,这样就能使得一个数据包被转发到某个特定计算机上进行处理,这可用于构建端口映射关系 。
rdr fxp1 202.102.245.60 port ftp -> 192.168.3.2 port ftp
上面的规则将指定ipfilter在fxp1网络界面上将发送给202.102.245.60,端口为ftp的数据包,转换为发送给内部地址192.168.3.2 。
rdr的另一个重要用途是可以用以构建透明的代理服务器,普通代理服务器都需要在客户机上进行设置,如果不进行设置,客户机将直接访问Internet上的计算机而不通过代理服务器,然而防火墙可以将这些应用请求转发给代理服务器,完成代理工作 。此时对外界发送请求是在内部网络界面fxp0上发起的,因此也要在这里进行地址转换,而使用0.0.0.0/0代表对所有目的地址,并且是80端口的浏览请求都转发到127.0.0.1上去,而127.0.0.1必须运行代理服务器软件,以提供代理服务 。
rdr fxp0 0.0.0.0/0 port 80 -> 127.0.0.1 port 80
虽然不是所有的应用代理服务都能使用透明代理的方法来减轻客户设置的负担,但绝大多数代理完全可以使用这种方法,使得客户不需要修改软件设置,就能利用代理服务器,而代理服务器具备大量的缓冲区,能够节约内部网络的Internet访问流量并加速Internet访问速度 。
因此,一个简单的不支持透明代理服务器的设置文件ipnat.conf例子为:
map fxp1 192.168.3.0/24 -> 202.102.245.0/26 portmap tcp/udp 10000:65000map fxp1 192.168.3.0/24 -> 202.102.245.0/26rdr fxp1 202.102.245.60 port ftp -> 192.168.3.2 port ftp在这样的设置下,tcp和udp在地址资源消耗完毕之后将进行端口转换,而其他协议,如icmp,将直接进行地址转换而不必进行端口转换 。此后就可以将这个转换规则加入系统中,需要执行ipnat命令:
# ipnat -C# ipnat -f /etc/ipnat.conf当前使用-C参数用于清除现有的转换规则,-f用于从配置文件中读取转换规则 。设置了转换规则之后,就可以使用-l参数查看当前设置的转换规则和已经激活的转换关系 。
# ipnat -lList of active MAP/Redirect filters:map fxp1 192.168.3.0/24-> 202.102.245.0/26portmap tcp/udp 10000:65000map fxp1 192.168.3.0/24-> 202.102.245.0/26 rdr fxp1 202.102.245.60/32 port 21 -> 192.168.3.2 port 21 tcpList of active sessions:RDR 192.168.3.221<- -> 202.102.245.6021[202.102.245.25 35635] 863992 0 407MAP 192.168.3.21024<- -> 202.102.245.6010000 [202.102.245.25 9999] 863993 0 1f09设置包过滤
ipfilter也能很好的完成包过滤任务,它的过滤规则相当复杂 。下面为一些简单的过滤设置例子,一般这些过滤规则可以保存在/etc/ipf.conf文件中 。
block in log quick all with shortblock in log quick all with ipoptsblock参数用于屏蔽符合过滤条件的数据包,in代表数据包的方向,标识从网络上或其他网络界面上发送到某个网络界面上的数据包,log用于指出该规则过滤的数据包应被记录下来,quick指示ipfilter进行快速过滤处理,符合这个规则的数据包将立即丢弃,all with short标识不完整的IP数据包,数据包的长度太小就没有包含合法的源地址或目标地址,从而无法被ipfilter识别,all with ipopts标志本身带有路由数据的IP数据包,这些IP数据包由于包含自己的路由信息,因此可能会带来网络安全问题 。

推荐阅读