科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网网络频道如何用iptables实现NAT(3)

如何用iptables实现NAT(3)

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

本文主要介绍如何使用iptbales实现linux2.4下的强大的NAT功能。路由器并不会对转发的数据包进行修改,NAT恰恰是出于某种特殊需要而对数据包的源ip地址、目的ip地址、源端口、目的端口进行改写的操作。

作者:51CTO.COM 2007年11月17日

关键字: Linux NAT iptables IP地址

  • 评论
  • 分享微博
  • 分享邮件

  2. 指定源地址和目的地址

  通过--source/--src/-s来指定源地址(这里的/表示或者的意思,下同),通过--destination/--dst/-s来指定目的地址。可以使用以下四中方法来指定ip地址:

  a. 使用完整的域名,如“www.linuxaid.com.cn”;

  b. 使用ip地址,如“192.168.1.1”;

  c. 用x.x.x.x/x.x.x.x指定一个网络地址,如“192.168.1.0/255.255.255.0”;

  d. 用x.x.x.x/x指定一个网络地址,如“192.168.1.0/24”这里的24表明了子网掩码的有效位数,这是 UNIX环境中通常使用的表示方法。

  缺省的子网掩码数是32,也就是说指定192.168.1.1等效于192.168.1.1/32。

  3. 指定网络接口

  可以使用--in-interface/-i或--out-interface/-o来指定网络接口。从NAT的原理可以看出,对于PREROUTING链,我们只能用-i指定进来的网络接口;而对于POSTROUTING和OUTPUT我们只能用-o指定出去的网络接口。

  4. 指定协议及端口

  可以通过--protocol/-p选项来指定协议,如果是udp和tcp协议,还可--source-port/--sport和 --destination-port/--dport来指明端口。

  四、准备工作

  1. 编译内核,编译时选中以下选项,具体可参看“用iptales实现包过虑型防火墙”一文:

  Full NAT

  MASQUERADE target support

  REDIRECT target support

  2. 要使用NAT表时,必须首先载入相关模块:

  modprobe ip_tables

  modprobe ip_nat_ftp

  iptable_nat 模块会在运行时自动载入。

  五、使用实例

  1. 源NAT(SNAT)

  比如,更改所有来自192.168.1.0/24的数据包的源ip地址为1.2.3.4:

  iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o eth0 -j SNAT --to 1.2.3.4

  这里需要注意的是,系统在路由及过虑等处理直到数据包要被送出时才进行SNAT。

  有一种SNAT的特殊情况是ip欺骗,也就是所谓的Masquerading,通常建议在使用拨号上网的时候使用,或者说在合法ip地址不固定的情况下使用。比如

  # iptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADE

  可以看出,这时候我们没有必要显式的指定源ip地址等信息。

  2. 目的SNAT(DNAT)

  比如,更改所有来自192.168.1.0/24的数据包的目的ip地址为1.2.3.4:

  iptables -t nat -A PREROUTING -s 192.168.1.0/24 -i eth1 -j DNAT --to 1.2.3.4

  这里需要注意的是,系统是先进行DNAT,然后才进行路由及过虑等操作。

    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

    如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章