一、局域网内主机上外网——NAT
1、内网与外网
(1)内网
即所说的局域网,比如学校的局域网,
局域网内每台计算机的 IP 地址在本局域网内具有互异性,是不可重复的。但两个局域网内的内网 IP 可以有相同的
。
(2)外网
即互联网,局域网通过一台服务器或是一个路由器对外连接的网络,这个 IP 地址是惟一的。也就是说
局域网里所有的计算机都是连接到这一个外网 IP 上,通过这一个外网 IP 对外进行交换数据的
。也就是说,一个局域网里所有电脑的内网 IP 是互不相同的,但共用一个外网 IP
。(用ipconfig/all查到的IP是你本机的内网IP;在www.ip138.com上看到的是你连接互联网所使用的IP,即外网)。
在局域网中,每台电脑都可以自己分配自己的 IP,这个 IP 只在局域网中有效。而如果你将电脑连接到互联网,你的网络提供商(ISP)的服务器会为你分配一个IP地址,这个 IP 地址才是你在外网的 IP。两个 IP 同时存在,一个对内,一个对外。
当你家里买了两台电脑,你想组建一个局域网,你除了要用网线和路由器等设备将两台电脑相连,你还要将两台电脑设置固定 IP,比如电脑 A 设为 192.168.1.2,电脑 B 设为 192.168.1.3,这样你就可以用这两个 IP 地址互相访问两台电脑,但这两个 IP 地址只在这两台电脑间有效,对外网无效。所以局域网中分配的 IP 与广域网中的IP完全没有对应关系。
(3)访问外网数据流向
你在内网的机子在上网时,都是在向网关发出请求,再由网关(一般为路由器)用外网IP转到INT网上,接受数据后,再分发到你的内网 IP 上
。
2、公有 IP 和私有 IP
公有地址(Public address):由 Inter NIC(Internet Network Information Center 因特网信息中心)负责。
这些 IP 地址分配给注册并向 Internet NIC 提出申请的组织机构,公有 IP 全球唯一,通过它直接访问因特网(直接能上网),它是广域网范畴内的
。
私有地址(Private address):属于非注册地址,专门为组织机构内部使用,私有 IP 不能直接上网
。
3、NAT
NAT ( Network Address Translation ) 中文意思是"网络地址转换",它是一个IETF(Internet Engineering Task Force, Internet工程任务组) 标准,
允许一个整体机构以一个公用IP(Internet Protocol)地址出现在 Internet 上
。顾名思义,它是一种把内部私有网络地址(IP地址)翻译成合法网络IP地址
的技术。NAT 可以让那些使用私有地址的内部网络连接到 Internet 或其它 IP 网络上。NAT 路由器在将内部网络的数据包发送到公用网络时,在 IP 包的报头把私有地址转换成合法的 IP 地址
。
RFC1918规定了三块专有的地址,作为私有的内部组网使用:
这三块私有地址本身是可路由的,只是公网上的路由器不会转发这三块私有地址的流量;当一个公司内部配置了这些私有地址后,内部的计算机在和外网通信时,公司的边界路由会通过 NAT 或者 PAT 技术,将内部的私有地址转换成外网 IP,外部看到的源地址是公司边界路由转换过的公网 IP 地址,这在某种意义上也增加了内部网络的安全性
。
NAT 有三种类型:
静态NAT(Static NAT)、动态地址NAT(Pooled NAT)、网络地址端口转换NAPT(Port-Level NAT)
(1)静态 NAT ( Static NAT ):一对一
将内部网络的私有 IP 地址转换为公有 IP 地址,IP 地址对是一对一的,是一直不变的
。
通过手动设置,使 Internet 客户进行的通信能够映射到某个特定的私有网络地址和端口。如果想让连接在 Internet 上的计算机能够使用某个私有网络上的服务器(如网站服务器)以及应用程序(如游戏),那么静态映射是必需的。
静态映射不会从 NAT 转换表中删除
。如果在 NAT 转换表中存在某个映射,那么 NAT 只是单向地从 Internet 向私有网络传送数据。这样,NAT 就为连接到私有网络部分的计算机提供了某种程度的保护。但是,如果考虑到 Internet 的安全性,NAT 就要配合全功能的防火墙一起使用。
(2)动态地址 NAT ( Pooled NAT ):一对多
将内部网络的私有 IP 地址转换为公用 IP 地址时,IP 地址是不确定,随机的
。所有被授权访问 Internet 的私有 IP 地址可随机转换为任何指定合法的 IP 地址。也就是说,只要指定哪些内部地址可以进行转换,以及用哪些合法地址作为外部地址时,就可以进行动态 NAT 转换。动态 NAT 是在路由器上配置一个外网 IP 地址池,当内部有计算机需要和外部通信时,就从地址池里动态的取出一个外网 IP,并将他们的对应关系绑定到 NAT 表中,通信结束后,这个外网 IP 才被释放,可供其他内部 IP 地址转换使用
。
动态 NAT 方式适合于当机构申请到的全局IP地址较少,而内部网络主机较多的情况。
。
(3)网络地址端口转换 NAPT(Network Address Port Translation)(Port-Level NAT):多对一
改变外出数据包的源端口并进行端口转换,采用
端口多路复用
方式。内部网络的所有主机均可共享一个合法外部 IP 地址实现对 Internet 的访问
,可以最大限度地节约 IP 地址资源。同时,也可以隐藏网络内部的所有主机,有效避免来自 Internet 的攻击
。因此,目前网络中应用最多的就是 PAT 规则。这是最常用的 NAT 技术,也是 IPv4 能够维持到今天的最重要的原因之一,它提供了一种多对一的方式,对多个内网 IP 地址,边界路由可以给他们分配一个外网 IP,利用这个外网 IP 的不同端口和外部进行通信。NAPT 与 动态 NAT 不同,它将内部连接映射到外部网络中的一个单独的 IP 地址上,同时在该地址上加上一个由 NAT 设备选定的端口号
。
对于 NAT ( 网络地址转换 ) 技术来讲,最重要的一点是,在配置 NAT 的路由器上形成了 NAT 转换表,这个转换表的形成是非常关键的。配置 NAT 后,能形成正确的转换表,那么我们的工作就算成功了。
NAT 应用
NAT主要可以实现以下几个功能:数据包伪装、平衡负载、端口转发和透明代理。
1) 数据伪装:
可以将内网数据包中的地址信息更改成统一的对外地址信息,不让内网主机直接暴露在因特网上,保证内网主机的安全。同时,该功能也常用来实现共享上网。例如,内网主机访问外网时,为了隐藏内网拓扑结构,使用全局地址替换私有地址。
2) 端口转发:
当内网主机对外提供服务时,由于使用的是内部私有IP地址,外网无法直接访问。因此,需要在网关上进行端口转发,将特定服务的数据包转发给内网主机。例如公司小王在自己的服务器上架设了一个Web网站,他的IP地址为192.168.0.5,使用默认端口80,现在他想让局域网外的用户也能直接访问他的Web站点。利用NAT即可很轻松的解决这个问题,服务器的IP地址为210.59.120.89,那么为小王分配一个端口,例如81,即所有访问210.59.120.89:81的请求都自动转向192.168.0.5:80,而且这个过程对用户来说是透明的。
3)负载平衡:
目的地址转换NAT可以重定向一些服务器的连接到其他随机选定的服务器。
4)失效终结:
目的地址转换NAT可以用来提供高可靠性的服务。如果一个系统有一台通过路由器访问的关键服务器,一旦路由器检测到该服务器当机,它可以使用目的地址转换NAT透明的把连接转移到一个备份服务器上,提高系统的可靠性。
5)透明代理:
例如自己架设的服务器空间不足,需要将某些链接指向存在另外一台服务器的空间;或者某台计算机上没有安装IIS服务,但是却想让网友访问该台计算机上的内容,这个时候利用IIS的Web站点重定向即可轻松的帮助我们搞定。
NAT的缺陷
(1) 不能处理嵌入式 IP 地址或端口
NAT 设备不能翻译那些嵌入到应用数据部分的 IP 地址或端口信息,它只能翻译那种正常位于 IP 首部中的地址信息和位于 TCP/UDP 首部中的端口信息,如下图,由于对方会使用接收到的数据包中嵌入的地址和端口进行通信,这样就可能产生连接故障,如果通信双方都是使用的公网IP,这不会造成什么问题,但如果那个嵌入式地址和端口是内网的,显然连接就不可能成攻,原因就如开篇所说的一样。MSN
Messenger的部分功能就使用了这种方式来传递IP和端口信息,这样就导致了NAT设备后的客户端网络应用程序出现连接故障。(2) 不能从公网访问内部网络服务
由于内网是私有 IP,所以不能直接从公网访问内部网络服务,比如 WEB 服务,对于这个问题,我们可以采用建立静态映射的方法来解决
。比如有一条静态映射,是把 218.70.201.185:80 与 192.168.0.88:80 映射起的,当公网用户要访问内部 WEB 服务器时,它就首先连接到218.70.201.185:80,然后 NAT 设备把请求传给 192.168.0.88:80,192.168.0.88 把响应返回 NAT 设备,再由 NAT 设备传给公网访问用户。(3) 数据发送接收端口不一致
有一些应用程序虽然是用 A 端口发送数据的,但却要用 B 端口进行接收,不过 NAT 设备翻译时却不知道这一点,它仍然建立一条针对A端口的映射,结果对方响应的数据要传给B端口时,NAT设备却找不到相关映射条目而会丢弃数据包。
(4) 一些 P2P 应用在 NAT 后无法进行
对于那些没有中间服务器的纯 P2P 应用(如电视会议,娱乐等)来说,如果大家都位于 NAT 设备之后,双方是无法建立连接的
。因为没有中间服务器的中转,NAT 设备后的 P2P 程序在NAT设备上是不会有映射条目的,也就是说对方是不能向你发起一个连接的。现在已经有一种叫做P2P NAT 穿越的技术来解决这个问题
。
二、外网访问局域网内的主机——端口映射
解决办法:
静态 NAT 技术:端口转发映射
。
如果你是 ADSL、MODEM 或光纤等宽带接入用户,想在公司或单位内部建一个服务器或 WEB 站点,并且想让互联网上的用户访问你的服务器,那么你就会遇到端口映射问题。
通常情况下,路由器都有防火墙功能,互联网用户只能访问到你的路由器 WAN 口(接 ADSL 的电话线口或路由宽带外网口),而访问不到内部服务器
。要想让互联网用户访问到你建的服务器,就要在路由器上做一个转发设置,也就是端口映射设置。互联网用户发送的请求到达路由器后,再通过端口映射转发到你建立的服务器或 WEB 站点
。由于各个路由器厂商所取功能名称不一样,有的叫虚拟服务器,有的叫 NAT 设置(BitComet中常见问题)端口映射。
其实做端口映射设置很简单,例如要映射一台内网IP地址为 192.168.0.66 的WEB服务器,只需把 WEB 服务器的 IP 地址 192.168.0.66 和 TCP 端口 80 填入到路由器的端口映射表中就 OK 了。 关于打开端口映射后的安全问题:设置了端口映射后,互联网用户能够通过设置好映射的端口,跳过路由器防火墙访问到你的服务器,在通过攻击你服务器上的漏洞控制你的主机,所以打开端口映射后有必要在你的服务器上再挂一个防火墙也确保安全性
。
三、 家庭局域网络
如上图是一家庭网络组网环境。
(1)
要连接公网,必须通过 Modem 拨号才能上网
,拨号通过 pppoe 协议拨号 ;
(2)WLAN 路由器的 wan 口连接 ADSL 猫,会动态获取一个公网 IP 地址
100.87.59.254,在广域网内,任何一个主机,均可以访问到该 ip 地址
;
(3)台式机、手机、ipad、笔记本等终端可以通过有线或者无线的方式通过共享无线路由器的 wan 口访问公网
;
(4)终端通过路由器的 DHCP 协议自动获取的地址是局域网地址
,pc 获得地址是192.168.0.104,网段是 192.168.0.0/24,但是我们无法使用该地址直接访问公网;
(5)局域网内终端通过共享 WAN 地址上网,所有走 WLAN 路由器的数据包都要通过 NAT 协议进行源、目的IP,源、目的端口号的转换
;
(6)局域网内终端之间通信运行的是以太网协议,网卡通过 mac 地址过滤数据帧;
(7)要获取局域网内其他网口的 mac 地址需要通过 ARP 协议;
(8)公网内路由器之间数据传输一般是 PPP 协议 ;
router 路由器
路由器(Router)是互联网的主要结点设备。路由器通过路由决定数据的转发。转发策略称为路由选择(routing),这也是路由器名称的由来(router,转发者)。
作为不同网络之间互相连接的枢纽,路由器系统构成了基于TCP/IP 的国际互联网络Internet 的主体脉络,也可以说,路由器构成了Internet的骨架
。
路由器通常有一个wan口,4个物理连接网口。既可以通过网线连接,也可以通过无线连接,通常带宽100M到450M。
以下是1个企业级网络的组网拓扑图,我们通常用图中的图标表示路由器:
路由器的一些使用规则
(1)路由器工作在IP(网络)层;
(2)路由器用来连接不同的网络
;
(3)路由器的每一个接口都必须是不同网段的
;
(4)路由器之间互联是接口直接连接,一般用 ppp 协议通信;
(5)处于不同网络中的2个设备要想互相通信,必须通过路由器
;
(6)一个成熟稳定的网络,路由器必须知道每一个网络设备到达另外一个网络的通路,否则会直接丢弃,路由器通过路由表来维护这些通路;
(7)路由器只解析到数据包的IP层(传输层和应用层不会查看)
总结
(1)路由器的 IP 地址分 wan 口和 lan 口,
wan 口地址是 PPPoE 拨号时运营商的其他设备分配的用于公网寻址
,lan口地址在路由器中设置, 用于和局域网内终端通信
;
(2)终端连接无线路由器时,路由器通过 dhcp 协议给终端分配了动态 ip 地址,通过 DHCP 的地址池可以设置分配的 ip 地址的范围;
(3)分配 ip 地址的时候,同时终端会将无线路由器的 lan 口地址设置为自己的默认网关,所以 pc 访问外网,所有的数据包都会发送给网关,就是无线路由器
;
(4)当用户要访问外网的时候,需要知道网关的 mac 地址
,如果 ARP 缓存中没有对应的的arp条目,那么就通过 ARP 协议找到 lan 口的 mac 地址,因为网关地址已分配;
(5)局域网内终端通过共享 WAN 地址上网,所有走 wlan 路由器的数据包都要通过NAT协议进行源、目的IP,源、目的端口号的转换;