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,如需转载请自行联系原作者
目录
相关文章
|
17天前
|
安全 Linux 虚拟化
网络名称空间在Linux虚拟化技术中的位置
网络名称空间(Network Namespaces)是Linux内核特性之一,提供了隔离网络环境的能力,使得每个网络名称空间都拥有独立的网络设备、IP地址、路由表、端口号范围以及iptables规则等。这一特性在Linux虚拟化技术中占据了核心位置🌟,它不仅为构建轻量级虚拟化解决方案(如容器📦)提供了基础支持,也在传统的虚拟机技术中发挥作用,实现资源隔离和网络虚拟化。
网络名称空间在Linux虚拟化技术中的位置
|
17天前
|
网络协议 安全 Linux
Linux网络名称空间之独立网络资源管理
Linux网络名称空间是一种强大的虚拟化技术🛠️,它允许用户创建隔离的网络环境🌐,每个环境拥有独立的网络资源和配置。这项技术对于云计算☁️、容器化应用📦和网络安全🔒等领域至关重要。本文将详细介绍在Linux网络名称空间中可以拥有的独立网络资源,并指出应用开发人员在使用时应注意的重点。
|
17天前
|
安全 网络协议 Linux
Linux网络名称空间概述
Linux网络名称空间是操作系统级别的一种虚拟化技术🔄,它允许创建隔离的网络环境🌐,使得每个环境拥有自己独立的网络资源,如IP地址📍、路由表🗺️、防火墙规则🔥等。这种技术是Linux内核功能的一部分,为不同的用户空间进程提供了一种创建和使用独立网络协议栈的方式。本文旨在全方面、多维度解释Linux网络名称空间的概念、必要性和作用。
Linux网络名称空间概述
|
25天前
|
Linux
Linux中centos桌面消失网络图标
Linux中centos桌面消失网络图标
13 0
|
1月前
|
运维 网络协议 安全
【Shell 命令集合 网络通讯 】Linux 网络抓包工具 tcpdump命令 使用指南
【Shell 命令集合 网络通讯 】Linux 网络抓包工具 tcpdump命令 使用指南
44 0
|
1月前
|
监控 Linux Shell
【Shell 命令集合 网络通讯 】Linux 配置和管理网络流量的形状 shapecfg命令 使用指南
【Shell 命令集合 网络通讯 】Linux 配置和管理网络流量的形状 shapecfg命令 使用指南
39 0
|
1月前
|
Shell Linux C语言
【Shell 命令集合 网络通讯 】Linux 查看系统中的UUCP日志文件 uulog命令 使用指南
【Shell 命令集合 网络通讯 】Linux 查看系统中的UUCP日志文件 uulog命令 使用指南
29 0
|
15天前
|
存储 算法 Linux
【实战项目】网络编程:在Linux环境下基于opencv和socket的人脸识别系统--C++实现
【实战项目】网络编程:在Linux环境下基于opencv和socket的人脸识别系统--C++实现
39 6
|
1月前
|
网络协议 Shell Linux
【Shell 命令集合 网络通讯 】Linux 追踪数据包在网络中的路径 traceroute命令 使用指南
【Shell 命令集合 网络通讯 】Linux 追踪数据包在网络中的路径 traceroute命令 使用指南
42 0
|
5天前
|
机器学习/深度学习 缓存 监控
linux查看CPU、内存、网络、磁盘IO命令
`Linux`系统中,使用`top`命令查看CPU状态,要查看CPU详细信息,可利用`cat /proc/cpuinfo`相关命令。`free`命令用于查看内存使用情况。网络相关命令包括`ifconfig`(查看网卡状态)、`ifdown/ifup`(禁用/启用网卡)、`netstat`(列出网络连接,如`-tuln`组合)以及`nslookup`、`ping`、`telnet`、`traceroute`等。磁盘IO方面,`iostat`(如`-k -p ALL`)显示磁盘IO统计,`iotop`(如`-o -d 1`)则用于查看磁盘IO瓶颈。