开发者社区> 余二五> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

Linux 2.4 NAT(网络地址转换) HOWTO(一)

简介:
+关注继续查看

1. Introduction

亲爱的读者﹐欢迎您﹗

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

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

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

2. 官方的网站和通信论坛何处觅﹖

目前有三个官方网站可供浏览﹕

而官方的 netfilter 邮件论坛﹐则可以到这里看﹕ Netfilter List.

2.1 何为 Network Address Translation?

一般来说﹐在网络上封包从其来源(比方您家中的计算机)出去﹐然后到达目的地(比方www.gnumonks.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)﹑或透明代理了。










本文转自 makewong 51CTO博客,原文链接:http://blog.51cto.com/makewong/565359,如需转载请自行联系原作者

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
+关注
20377
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
低代码开发师(初级)实战教程
立即下载
阿里巴巴DevOps 最佳实践手册
立即下载
冬季实战营第三期:MySQL数据库进阶实战
立即下载