NAT是网络地址翻译就是把公网IP翻译成私有地址, 又叫端口映射或端口转发. 采用路由方式是指ADSL拥有一个动态或固定的公网IP,ADSL直接接在HUB或交换机上,所有的电脑共享上网。这时ADSL的外部地址只有一个,比如61.177.*.*。 而内部的IP是人为设置的,比如ADSL设为192.168.0.1,下面的电脑就依次设为192.168.0.*(*表示1,2,3,...)。  
   
如何实现NAT功能呢?一般路由器中有个虚拟服务器(有些英文设置界面的叫services项)的设置。针对邮件服务器要做如下设置:进入“虚拟服务器”(或services项->选择NAT
或NAT RULE),在端口填入 25, 协议中选择: TCP,
IP地址:192.168.x.x(安装邮件服务器电脑的局域网IP地址),同样方法设置110(pop3),6080(webmail)端口

  另一种方法就是开放主机。开放主机(DMZ
Host)是针对IP地址,取消防火墙的功能,将该局域网的IP地址直接映射到外部IP之上,采用开放主机(DMZ)的方式,不必管端口是多少。这种方式只支持一台内部电脑。
NAT———网络地址翻译

注:我们驴友一般来说都是家庭用户,所以我们大多数是用到“端口NAT(PAT)”
******************************************
作者:陈维义

   随着Internet的飞速发展,网上丰富的资源产生着巨大的吸引力。接入Internet、访问Internet成为当今信息业最为迫切的需求。

   但这受到IP地址的许多限制。首先,许多局域网在未联入Internet之前,就已经运行许多年了,局域网上有了许多现成的资源和应用程序,但它的IP地址分配不符合Internet的国际标准,因而需要重新分配局域网的IP地址,这无疑是劳神费时的工作;其二,随着Internet的膨胀式发展,其可用的IP地址越来越少,要想在ISP处申请一个新的IP地址已不是很容易的事了。这不仅仅是费用的问题,而是IP地址的现行标准IPv4决定的。当然,随着IPv6的出台,这个问题应当能够得到解决。但从IPv4到IPv6的升级不是一两天就能完成的。

   NAT(网络地址翻译)能解决不少令人头疼的问题。它解决问题的办法是:在内部网络中使用内部地址,通过NAT把内部地址翻译成合法的IP地址,在Internet上使用。其具体的做法是把IP包内的地址域用合法的IP地址来替换。

   NAT功能通常被集成到路由器、防火墙、ISDN路由器或者单独的NAT设备中。NAT设备维护一个状态表,用来把非法的IP地址映射到合法的IP地址上去。每个包在NAT设备中都被翻译成正确的IP地址发往下一级,这意味着给处理器带来了一定的负担。但这对于一般的网络来说是微不足道的,除非是有许多主机的大型网络。

   需要注意的是,NAT并不是一种有安全保证的方案,它不能提供类似防火墙、包过滤、隧道等技术的安全性,仅仅在包的最外层改变IP地址。这使得黑客可以很容易地窃取网络信息,危及网络安全。

   NAT有三种类型:静态NAT(staticNAT)、NAT池(pooledNAT)和端口NAT(PAT)。其中静态NAT设置起来最为简单,内部网络中的每个主机都被永久映射成外部网络中的某个合法的地址。而NAT池则是在外部网络中定义了一系列的合法地址,采用动态分配的方法映射到内部网络。PAT则是把内部地址映射到外部网络的一个IP地址的不同端口上。根据不同的需要,各种NAT方案都是有利有弊。

   ■使用NAT池

   使用NAT池,可以从未注册的地址空间中提供被外部访问的服务,也可以从内部网络访问外部网络,而不需要重新配置内部网络中的每台机器的IP地址。例如,建立在NT+IIS服务器上的内部试验子网192.168.0.0,其网络地址属于B类保留地址。作为企业网的一个子网,其IP地址不分配给企业网上的设备而仅仅局限在试验子网的设备上。为了使企业网能访问到这个内部网,在网络上增加一条静态路径,使信息能回传给Cisco4700路由器。其中的路由器可以把内部网和企业网连接起来,使之能相互访问。在内部网中不要使用RIP协议,因为使用RIP后,内部网络相对外部来说变得不可见了。

   这样,本地信息可以相互访问了,但由于192.168.0.0属于保留地址,故不能直接访问Internet。所以在路由器中设置一个NAT池,用来翻译来自内部网络的IP包,把它的IP地址映射成地址池(pooledaddresses)中的合法IP地址。那么,内部网可以访问Internet上的任何服务器,Internet上的任何主机也能通过TCP或UDP访问到内部网。

   采用NAT池意味着可以在内部网中定义很多的内部用户,通过动态分配的办法,共享很少的几个外部IP地址。而静态NAT则只能形成一一对应的固定映射方式。该引起注意的是,NAT池中动态分配的外部IP地址全部被占用后,后续的NAT翻译申请将会失败。庆幸的是,许多有NAT功能的路由器有超时配置功能。例如在上述的Cisco4700中配置成开始15分钟后删除当前的NAT进程,为后续的NAT申请预留出外部IP地址。通过试验表明,一般的外部连接不会很长,所以短的时间阈值也可以接受。当然用户可以自行调节时间阈值,以满足各自的需求。

   NAT池提供很大灵活性的同时,也影响到网络原有的一些管理功能。例如,SNMP管理站利用IP地址来跟踪设备的运行情况。但使用NAT之后,意味着那些被翻译的地址对应的内部地址是变化的,今天可能对应一台工作站,明天就可能对应一台服务器。这给SNMP管理带来了麻烦。一个可行的解决方案就是把划分给NAT池的那部分地址在SNMP管理平台上标记出来,对于这些不响应管理信号的地址不予报警,如同它们被关掉了一样。

   ■使用PAT

   PAT在远程访问产品中得到了大量的应用,特别是在远程拨号用户使用的设备中。PAT可以把内部的TCP/IP映射到外部一个注册IP地址的多个端口上。PAT可以支持同时连接64500个TCP/IP、UDP/IP,但实际可以支持的工作站个数会少一些。因为许多Internet应用如HTTP,实际上由许多小的连接组成。

   在Internet中使用PAT时,所有不同的TCP和UDP信息流看起来仿佛都来源于同一个IP地址。这个优点在小型办公室(SOHO)内非常实用,通过从ISP处申请的一个IP地址,将多个连接通过PAT接入Internet。实际上,许多SOHO远程访问设备支持基于PPP的动态IP地址。这样,ISP甚至不需要支持PAT,就可以做到多个内部IP地址共用一个外部IP地址上Internet。虽然这样会导致信道的一定拥塞,但考虑到节省的ISP上网费用和易管理的特点,用PAT还是很值得的。

   ■基于NAT的负载平衡

   以上所谈论的均是关于使用NAT和PAT来把内部IP地址转换成外部合法的IP地址使用。下面介绍NAT的另一个运用:作为用于负载平衡的DNS系列服务器(DNSround-robin)的一个替代品。DNS系列服务器解决了多个IP地址共用一个域名的问题。它会在响应DNS申请时跳跃式地寻找可用的IP地址。达到的效果就是一个域名可以对应多个IP地址。这种功能可以应用在一个HTTP服务器群中,利用它可以平衡多个服务器的负载。但是这里还有一个问题,IP客户端会在本地缓冲DNS/IP地址解析,从而使它的后续的申请都会到达同一个IP地址,减弱了DNS系列服务器的作用。

   使用基于NAT的负载平衡方案,则可以避免这个问题。路由器或其它NAT设备把需要负载平衡的多个IP地址翻译成一个公用的IP地址,每个TCP连接被NAT送到一个IP地址,而后续的TCP连接则被NAT送到下一个IP地址。真正实现了负载平衡。当然,基于NAT的负载平衡只能在NAT上实现,而不能在PAT上实现。

   ■安全问题

   当NAT改变包的IP地址后,需要认真考虑这样做对安全设施带来的影响。

   对于防火墙,它利用IP地址、TCP端口、目标地址以及其它在IP包内的信息来决定是否干预网络的连接。当使用了NAT之后,可能就不得不改变防火墙的规则,因为NAT改变了源地址和目的地址。

   在许多配置中,NAT被集成在防火墙系统之中,提供访问控制和地址翻译的功能。不要把NAT设在防火墙之外,因为黑客可以轻易地骗过NAT,让NAT认为它是一个授权用户,从而进入网络。

   若企业网中使用了VPN(虚拟专用网),并用IPSec进行加密安全保证,那么错误地设置NAT将会破坏VPN的功能。把NAT放在受保护的VPN内部,而不是在中间。因为NAT改变IP包内的地址域,而IPSec规定一些信息是不能被改变的。若IP地址被改变了,IPSec就会认为这个包是伪造的,拒绝使用。

   虽然NAT带来了许多优越性,例如使现有网络不必重新编址、减少了ISP接入费用,还可以起平衡负载的作用,但NAT潜在地影响到一些网络管理功能和安全设施,这就需要谨慎地使用它。

 
 
 

什么叫NAT,设置NAT的两个方法的更多相关文章

  1. Kettle_设置变量的两种方法

    一个复杂的kettle作业一般包括很多子作业和转换,在主作业Start后通常会添加一个[设置变量]的流程,该流程的功能是为所有流程的公共变量设置通用值.       主作业添加的[设置变量]针对的是所 ...

  2. suse下设置IP的两种方法

    /Files/yzhxhwt/DB_51aspx.rar 第一种SUSE Linux IP设置方法ifconfig eth0 192.168.1.22 netmask 255.255.255.0 up ...

  3. centos下安装memcached并设置开机自动启动-两种方法

    方法一: 安装memcachedyum install memcached 启动服务并初始化service memcached start -p 11211 -l 127.0.0.1 -d 设置mem ...

  4. textView代码设置文字居中失效 textView设置文字居中两种方法

    1.TextView的高度占据整个父控件的高度,然后设置TextView的Grayvity Center就可以了. 2.如果第一个方法不行,那么,textView的高度设置为warp_content, ...

  5. iOS--NSTimer设置定时器的两种方法

    //方法一: //创建定时器 NSTimer *timer=[NSTimer timerWithTimeInterval:2.0 target:self selector:@selector(next ...

  6. Qt中的布局浅析与弹簧的使用,以及Qt居中的两种方法

    1. 布局 为什么要布局: 布局之后窗口的排列是有序的 布局之后窗口的大小发生变化, 控件的大小也会对应变化 如果不对控件布局, 窗口显示出来之后有些控件的看不到的 布局是可以嵌套使用 常用的布局方式 ...

  7. VMware8.0虚拟机中安装Ubuntu12.04使用NAT设置连接网络

    之前一直尝试使用“桥接”的方法,但是一打开虚拟机,本机windows就断网.最后不得不换种方法,还好尝试了很多遍终于使用NAT设置成功的联网了. 说明:本机windows连接的是无线网. 1.检查自己 ...

  8. CentOS6.5如何设置NAT网络方式

    如何设置虚拟机与外网的连通. 今天说一下NAT的配置方法,其它两个都比较简单. 1.配置CentOS的IP [root@mycentos ~]# vi /etc/sysconfig/network-s ...

  9. NAT 模式下有两个虚拟机 网段不一样,一台可上网,可ping通,一台上不了网且ping不通

    NAT 模式下有两个虚拟机 网段不一样,一台可上网,可ping通,一台上不了网且ping不通直接修改网段的话,会登录不上去,解决方法:设置>网络适配器>高级>生成mac地址重新登陆即 ...

随机推荐

  1. robotframework-ride多次运行,有时候不显示日志信息

    解决方法: 修改"C:\Python27\lib\site-packages\robotide\contrib\testrunner\testrunner.py"文件pop方法中  ...

  2. C++静态成员的应用

    当在类外部定义静态成员时,不能重复使用static关键字 静态成员函数不包含this指针(无论是显示还是隐式使用) 静态成员可以通过类对象进行访问,也可以通过类进行访问 静态成员不是由构造函数初始化的 ...

  3. MySQL执行计划explain的key_len解析

    前言:当用Explain查看SQL的执行计划时,里面有列显示了 key_len 的值,根据这个值可以判断索引的长度,在组合索引里面可以更清楚的了解到了哪部分字段使用到了索引.下面演示中,表结构的合理性 ...

  4. SCTF 2015 pwn试题分析

    Re1 是一个简单的字符串加密.程序使用了多个线程,然后进行同步.等加密线程加密好了之后才会启动验证线程.这个题比较坑的是IDA F5出来的结果不对,不知道是不是混淆机制. 刚开始看的是F5后的伪代码 ...

  5. **PHP错误Cannot use object of type stdClass as array in错误的

    错误:将PHP对象类型当做了PHP数组  解决方法:用对象操作符-> 今天在PHP输出一个二维数组的时候,出现了“Fatal error: Cannot use object of type s ...

  6. deploy.sh

    备份一下之前的一个脚本吧 #!bin/bash adb uninstall org.cocos2d.fishingjoy4 for apk in `find . -name '*.apk' | xar ...

  7. 【LOJ】#2443. 「NOI2011」智能车比赛

    题解 显然是个\(n^2\)的dp 我们要找每个点不穿过非赛道区域能到达哪些区域的交点 可以通过控制两条向量负责最靠下的上边界,和最靠上的下边界,检查当前点在不在这两条向量之间即可,对于每个点可以\( ...

  8. 【Java】 剑指offer(49) 丑数

    本文参考自<剑指offer>一书,代码采用Java语言. 更多:<剑指Offer>Java实现合集   题目 我们把只包含因子2.3和5的数称作丑数(Ugly Number). ...

  9. hdoj2955 Robberies(01背包)

    题目链接 http://acm.hdu.edu.cn/showproblem.php?pid=2955 题意 有n家银行,每家银行有两个属性:钱数m,概率p,p表示抢这家银行被逮着的概率.有一个人想抢 ...

  10. .Net中的IO

    C#中的IO 本文环境为: Win 10 VS 2015 .net Framework 版本 4.0 File 类 File 类是一个工具类,可以用来判断文件是否存在和方便的创建文件, 读取.写入等操 ...