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

本文涉及的产品
公网NAT网关,每月750个小时 15CU
简介:

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,如需转载请自行联系原作者
相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
基于阿里云,构建一个企业web应用上云经典架构,让IT从业者体验企业级架构的实战训练。
目录
相关文章
|
2天前
|
消息中间件 Java Linux
2024年最全BATJ真题突击:Java基础+JVM+分布式高并发+网络编程+Linux(1),2024年最新意外的惊喜
2024年最全BATJ真题突击:Java基础+JVM+分布式高并发+网络编程+Linux(1),2024年最新意外的惊喜
|
18小时前
|
JSON 安全 网络协议
【Linux 网络】网络基础(二)(应用层协议:HTTP、HTTPS)-- 详解
【Linux 网络】网络基础(二)(应用层协议:HTTP、HTTPS)-- 详解
|
19小时前
|
存储 网络协议 安全
【Linux 网络】网络基础(一)(局域网、广域网、网络协议、TCP/IP结构模型、网络传输、封装和分用)-- 详解(上)
【Linux 网络】网络基础(一)(局域网、广域网、网络协议、TCP/IP结构模型、网络传输、封装和分用)-- 详解(上)
|
6天前
|
运维 网络协议 Linux
Docker网络_docker 网络,来看看这份超全面的《Linux运维面试题及解析》
Docker网络_docker 网络,来看看这份超全面的《Linux运维面试题及解析》
|
8天前
|
网络协议 Linux 网络架构
|
8天前
|
域名解析 网络协议 Linux
linux网络配置详解
linux网络配置详解
26 0
|
8天前
|
网络协议 Java Linux
【探索Linux】P.29(网络编程套接字 —— 简单的TCP网络程序模拟实现)
【探索Linux】P.29(网络编程套接字 —— 简单的TCP网络程序模拟实现)
16 0
|
8天前
|
存储 网络协议 算法
【探索Linux】P.28(网络编程套接字 —— 简单的UDP网络程序模拟实现)
【探索Linux】P.28(网络编程套接字 —— 简单的UDP网络程序模拟实现)
16 0
|
8天前
|
网络协议 算法 Linux
【探索Linux】P.27(网络编程套接字 —— UDP协议介绍 | TCP协议介绍 | UDP 和 TCP 的异同)
【探索Linux】P.27(网络编程套接字 —— UDP协议介绍 | TCP协议介绍 | UDP 和 TCP 的异同)
18 0