Linux2.4内核中iptables新增功能(2)

ZDNet软件频道 时间:2009-11-05 作者:张翠萍 | 51CTO.COM 我要评论()
本文关键词:iptables 系统安全 Linux
上面的这行在iptables中仅仅是指任何本网段的机器当目标就是防火墙时被拒绝,但绝不影响NAT和转发包, 这在以前的ipchains中是不可能的。

  上面的这行在iptables中仅仅是指任何本网段的机器当目标就是防火墙时被拒绝,但绝不影响NAT和转发包, 这在以前的ipchains中是不可能的。

  3. 透明代理和端口转发功能的轻松实现

  a. 端口转发

  在Linux 2.4内核中,NAT分为 SNAT(源NAT)和DNAT(目的NAT)。我们可以利用SNAT和DNAT轻松地实现透明代理,重定向和端口转发功能。

  假定某公司的网络结构如下图:

  10.0.0.2 | |

  |PC | (10.0.0.1)eth1| |eth0(1.2.3.4), eth0:0(1.2.3.5)

  B|___|_ ___________________|防火墙 |---------Internet

  (LAN: | 10.0.0.0/24) | A |

  | |_______|

  |

  _____

  | |

  | C | Linux POP3 server

  |_____| IP: 10.0.0.3 gw: 10.0.0.1

  当一个包被路由,转发后送出之前进行源地址改写,源地址改为1.2.3.5(防火墙上的别名IP)

  iptables -t nat -A POSTROUTING -s 10.0.0.3 -o eth0 -j SNAT --to 1.2.3.5

  IP伪装是SNAT的特例,当需要伪装时,其实不需要外界主动对源地址进行请求。而上面的例子是指局域网内部有一台Linux POP3服务器,IP为10.0.0.3, 网关为10.0.0.1,且在防火墙外部网卡上绑定一个IP别名1.2.3.5,作为该POP3服务器对外界联系的出去的源IP地址。对外部用户来说(公司员工在外出差),这个IP 1.2.3.5就是POP3服务器的IP地址,当向这个IP请求时我们用DNAT送到10.0.0.3上从而实现端口转发的功能。

  iptables -t nat -A PREROUTING -i eth0 -d 1.2.3.5 -j DNAT --to 10.0.0.3

  则这两行规则即可实现端口转发的功能。

  b. 透明代理(重定向)

  最常见的透明代理的使用是结合开放源代理软件Squid,实现局域网内用户在不用设置任何浏览器代理

  的条件下透明地使用代理上网。 如果我们的Squid的HTTP端口运行在 3333,则使用下面的规则:

  iptables -t nat -A PREROUTING -i eth1 -p tcp -s 10.0.0.0/24 --dport 80 -j

  DNAT --to 10.0.0.1:3333

  而且还必须设置Squid 2.3 或者2.4 版本中的squid.conf如下:

  http_port 3333

  httpd_accel_host virtual

  httpd_accel_port 80

  httpd_accel_with_proxy on

  httpd_accel_uses_host_header on

  这样,局域网内的用户即使不设置任何代理,也同样是利用了Squid的代理上网。

  四 常见问题解答

  a. 在运行中的防火墙规则如何保存下来,供redhat的ntsysv中的iptables服务使用?

  使用 iptables-save和iptables-restore保存为文件/etc/sysconfig/iptables,再用ntsysv启动iptables服务使用

  b. 我能同时使用ipchains和iptables吗?

  不行。在使用iptalbes之前,你必须停止ipchains及任何内存中的与ipchains相关的模 块,用/sbin/lsmod 检查所有ipchains模块,用/sbin/rmmod逐一删除,最后再运行iptables规则。


百度大联盟认证黄金会员Copyright© 1997- CNET Networks 版权所有。 ZDNet 是CNET Networks公司注册服务商标。
中华人民共和国电信与信息服务业务经营许可证编号:京ICP证010391号 京ICP备09041801号-159
京公网安备:1101082134