Linux 2.4 NAT HOWTO

2008-02-23 07:21:15来源:互联网 阅读 ()

新老客户大回馈,云服务器低至5折

作者:Rusty Russell, mailing list netfilter@lists.samba.org
译者:网中人 netmanforever@yahoo.com
v1.0.1 Mon May 1 18:38:22 CST 2000


--------------------------------------------------------------------------------
本文件描述如何用 2.4 Linux 核心去做 masquerading、transparent proxying、port forwarding、和其它类型的 Network Address Translations 。
--------------------------------------------------------------------------------



--------------------------------------------------------------------------------

1. Introduction
亲爱的读者,欢迎您!


您将要探索的是引人入胜(有时蛮恐怖)的 NAT(Network Address Translation) 世界,同时,您甚至可以把这份 HOWTO 当成 Linux 2.4 核心及以後版本的精确指南呢。


在 Linux 2.4 里面,有一个叫 `netfilter' 的东东,它是专门撕裂 (mangling* )封包的。在它再上一个层级,就是提供 NAT 功能的了,则是完全由以往的核心实作而成的。


(译者注:很奇怪,原作者用 mangle 这一词,似乎在过往的中文文件中都没碰到过,查过好多字典都不知道怎麽翻译好。这里暂时勉强用‘撕裂’这个词代替,不过後面我就不尝试翻译这词了,让读者自己去理解吧。)



--------------------------------------------------------------------------------


--------------------------------------------------------------------------------

2. 官方的网站和通信论坛何处觅?
目前有三个官方网站可供浏览:

感谢 Filewatcher (http://netfilter.filewatcher.org).
感谢 The Samba Team and SGI (http://www.samba.org/netfilter).
感谢 Jim Pick (http://netfilter.kernelnotes.org).

而官方的 netfilter 邮件论坛,则可以到这里看: Samba's Listserver (http://lists.samba.org).


2.1 何为 Network Address Translation?
一般来说,在网路上封包从其来源(比方您家中的电脑)出去,然後到达目的地(比方www.kernelnotes.org),会经过许许多多个不同的连接(links):就我所在的澳洲来说就大约有 19 个之多。没有任何一个连接会真的去更改您的封包:他们仅仅是将之传送出去而已。


假如其中一个连接会做 NAT 的话,然後它们就会更改那些经它而过的封包之来源或目的地地址。诚如您能想像得到的,这并非系统被设计成这样的,而是 NAT 所做的手脚而已。通常要做 NAT 的连线会记住它如何 mangled 封包的,然後当回应封包从另一方向过来的时候,然後就反过来 mangling 那个回应封包,所以所有东西都工作起来了。


2.2 为什麽我要做 NAT 呢?
在完美的世界里,您无需这样做啦。在目前来说,还是有其理由的:


用 modem 拨接上网
大多数的 ISP 在您连上去的时候只会给您一个单一 IP 地址。您喜欢的话,以任何来源地址把封包送出去都行,但只有回应到这个来源地址的封包才可以回到您那里。如果您想用多台不同主机(例如家中网路)透过该连接上 internet 的话,那您就要 NAT 了。


这也就是今天 NAT 最常用之处,而在 Linux 世界最为人知的就是所谓的 `masquerading(封包伪装术)' 了。我称之为 SNAT,因为您改变了第一个封包的 source(来源) 地址的缘故。


多重伺服器
有时候,您会想去改变那些进入您网路的封包之路向。这最常是因为(如上述)您只有一个 IP 地址,但您却想让别人能够连接到 `真实' IP 地址後面的主机去。如果您重写这些内送封包的目的地址,这样您就可以管理它们了。


一个常见的变动是负载分担(load-sharing),也就是在一组机器上面为封包做映对(mapping)的动作。这类型的 NAT ,在以前的的 Linux 版本中也就被称为 port-forwarding 。


透明代理(Transparent Proxying)
有时候,您或许想要每一个经过您的 Linux 主机的封包送至主机本身的一个程式去。这就需要进行透明代理的动作了:一个代理就是一个位於您的网路和外部网路的程式,为彼此双方负起沟通的任务。而所谓的透明,则是因为您的网路甚至无须知道在和一个代理对讲,当然了,除非代理不再工作了吧。


Squid 可以配置成这样的工作方式,这就是在过往的 Linux 版本中所谓的重导向(redirection)、或透明代理了。



--------------------------------------------------------------------------------


--------------------------------------------------------------------------------

3. 两种类型的 NAT
我将 NAT 分为两种不同的类型: Source NAT (SNAT) 与 Destination NAT (DNAT)


Source NAT 就是您将改变第一个封包的来源地址:例如,您为传入的连线做 caching 的动作。Source NAT 永远会在封包传出网线之前就做好 post-routing 的动作。封包伪装(Masquerading)就是一个 SNAT 特例。


Destination NAT 就是您将改变第一个封包的目的地地址:例如您要为传出的连线做 caching 的动作。Destination NAT 永远会在封包从网线进入之後就马上做好 pre-routing 的动作。Port forwarding、负载分担、以及透明代理,都属於 DNAT。



--------------------------------------------------------------------------------


--------------------------------------------------------------------------------

4. 从 2.0 到 2.2 核心的快速转变
非常抱歉,假如您仍然忙於从 2.0(ipfwadm) 到 2.2(ipchains) 的转型的话。不过,这也是个喜忧参半的消息啦。


首先,您可以轻易的一如往昔地使用 ipchains 和 ipfwadm。要这样做的话,您需要将最新的 netfilter 套件中的 `ipchains.o' 或 `ipfwadm.o' 核心模组载入。它们是相互排斥的(您应已获警告了),同时也不能和其它 netfilter 模组同时整合在一起。


一旦其中一个模组被载入,您就可以如常使用 ipchains 和 ipfwadm 了,但也有如下一些变化啦:

标签:

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有

上一篇:CVS RCS HOWTO 原始程式码版本控制系统 (2)

下一篇:架设 DHCP Server