2019独角兽企业重金招聘Python工程师标准>>>
3.2.3 私有地址和网络地址转换
要想放慢IP地址的分配速度,就要识别不同的连通性需求,并据此分配IP地址,这是重中之重。
绝大多数组织的连通性需求不外乎以下两种。
- 公网连通性。
- 私网连通性。
公网连通性
公网连通性是指组织内部的主机能够同时访问Internet和internal(内联网)主机。在此情形,主机就必须配置对组织内外都具有全局唯一性的IP地址。要求公网连通性的组织必须向其提供商申请IP地址。
私网连通性
私网连通性是指组织内部的主机只需访问internal主机,无需访问Internet主机。只需私网连通性的主机示例包括银行ATM机、零售店收银机以及任何其他无需连接公司之外主机的机器。私网主机的IP地址需在组织内唯一。为满足这种连通性需求,IANA专门预留了以下三块IP地址空间,并将其称为“私有互联网地址(private internets)”。
- 10.0.0.0~10.255.255.255(单个A类网络号)。
- 172.16.0.0~172.31.255.255(16个连续的B类网络号)。
- 192.168.0.0~192.168.255.255(256个连续的C类网络号)。 256=16*16
与上述地址用途以及其他预留网络号有关的其他信息,可参阅RFC 1918。
任何企业都可以从上述地址范围中挑选地址,无需获得IANA或Internet注册机构的准许。配置了私有地址的主机可以与组织内的任何其他主机通信,但是如果没有网关代理设备的“帮助”,这样的主机就无法访问组织之外的网络。原因是,从内向外发送的数据包所携带的源IP地址对组织以外的网络来说不具备唯一性,因此外部世界的网络无法将回程流量送回内部网络。因为公司只要构建私有网络,大都会启用相同的私网IP地址,故而可以减少对全球唯一的公网IP地址的需求。
配置了私网地址的主机可以和配置了公网地址的主机共存。图3-18显示了这样一个环境。
图3-18 私网连通的一般环境
公司可以选择为绝大多数主机配置私有地址,并仍然为某些特定网段上的主机配置公网地址。配置了公网地址的主机可以照常访问Internet。对于那些使用私有地址但仍要访问Internet的公司来说,他们有义务去执行路由过滤,以阻止将私有地址泄露到Internet。无论如何,服务提供商都应该对来自客户的入站路由施以策略——只接受来自公网地址空间的路由。
上述做法的缺点是,如果有一天公司决定让所有主机访问Internet,那么就必须对网络重新编址——使用新的公网地址替代私网地址。随着引入像DHCP(动态主机配置协议)这样的新型协议,这项任务也变得颇为简单。DHCP提供了一种向使用TCP/IP协议簇的主机传输配置参数的机制(包括IP地址)。只要支持DHCP,主机就能够从中央服务器动态获取新IP地址。
另一种方案是:安装一台堡垒(bastion)主机,在公网和私网之间担当网关。如图3-19所示,主机A配置了私网地址。若主机A想要对公司外部网络执行Telnet操作,该主机可以首先登陆主机B,然后再从主机B上执行对外的Telnet操作。现在,发往公司外部世界的Telnet数据包的源地址是主机B的IP地址,这个地址是全球唯一的公网地址。第三种方案是启用网络地址转换器。
图3-19 配置了私有地址的主机访问Internet资源
网络地址转换
借助于网络地址转换技术(NAT),公司就可以从私有地址空间过渡到公网地址空间。NAT技术能够在IP地址无须重新编址的情况下让私有网络连接到Internet。当内部主机需要与Internet上的目的网络通信时,可在网域边界放置NAT路由器,该路由器会将私网地址和公网地址相互转换。
如图3-20所示,主机A和B分别配置了私网地址10.1.1.1和10.1.1.2。
图3-20 网络地址转换示例
若主机A和B想要访问公司以外的网络,NAT设备会根据自身NAT表中预定义(或动态)的映射来转换数据包的源IP地址。由主机A所发的数据包抵达外部目的网络时,数据包的源地址已被替换为128.213.x.y。外部主机对数据包中地址的转换一无所知,并以128.213.x.y这一公网地址为目的地来发送回程流量。NAT设备会将外部主机所发回程数据包的目的地址(128.213.x.y)再转换回内部主机的私网地址。
对NAT设备的深入讨论超出了本书的范围,这主要是因为NAT设备处理的情况许多属于极端情况(corner case),或是非常复杂。胡乱使用公网地址作为私网地址的企业就是其中一例。在这种情况下,地址注册机构可能已将该公司所滥用的公网地址分配给了其他公司。分配给公司的公网地址数量少于内部主机实际数量是另外一例。在这种情况下,就必须使用NAT将私网地址映射为一小块公网地址。
并不总是需要部署专用设备来行使NAT功能,网络中的路由器软件一般都支持NAT功能。Cisco公司早已将NAT功能集成进了Cisco互联网络操作系统(IOS)。