Internet是针对全局唯一的IP地址空间而设计的,每一个连接到Internet的接口都必须拥有一个基于该接口所连接子网的唯一Internet IP地址,因此不管此接口所在的子网在Internet上如何进行路由,别人总可以通过你的Internet全局唯一的IP地址对你进行访问。
但是随着可分配的IP地址空间逐渐减少,而连接到Internet上的主机数量却大量的增加,已经不可能再为每一台需要连接到Internet的主机分配一个唯一的IP地址,此时,NAT(网络地址转换)就应运而生了。NAT允许专用网络(专用网络/Internet在此等同于内部网络/外部网络)上的多个客户计算机通过某个Internet接口访问Internet资源,而Internet上的主机却不能直接对专用网络中的客户计算机进行访问。NAT支持在专用网络上重复使用 IPv4私用IP地址地空间 (10.0.0.0/8、172.16.0.0/12、192.168.0.0/16),这极大的减轻了Internet IPv4地址快速消耗所带来的IP地址数不足分配的压力。
NAT 的基本操作如下:
当专用网络客户发起对Internet的连接请求时,对于每一个传出的数据包,NAT将专用网络中的源地址更改为连接到Internet的公用接口的源地址,并修改源传输控制协议(TCP)或用户数据报协议(UDP)端口号为一个NAT特定的值;并且,在自己的连接状态表中进行记录。
对于传入的数据包,NAT首先检查自己的连接状态表,如果匹配某个专用网络中发起的通讯请求,则NAT将目标公用地址更改为初始发起通讯请求的专用网络中客户的专用网络地址,并将目标TCP或UDP端口号更改为其原始值,转发给此专用网络客户;如果不匹配某个专用网络中发起的通讯请求,NAT会丢弃此数据包。
例如,如果某一个专用网络上的客户192.168.0.8需要通过自己的NAT网关(专用网络IP地址为192.168.0.1,Internet IP地址为61.139.0.8)访问Internet上主机61.139.0.1的HTTP服务,则NAT转换过程如下:
专用网络客户192.168.0.8发起通讯请求,数据包原格式为 TCP 192.168.0.8:1031(随机端口)->61.139.0.1:80,将此数据包发送给自己的默认网关192.168.0.1;
当NAT网关接收到192.168.0.8发送的数据包后,修改此数据包为 TCP 61.139.0.8:60066(随机端口)->61.139.0.1:80,转发给Internet主机61.139.0.1,并在自己的连接状态表中作记录;
Internet主机61.139.0.1收到此数据包后,回复数据包到NAT网关61.138.0.8,格式为 TCP 61.139.0.1:80 -> 61.139.0.8:60066;
当NAT网关收到此数据包后,检查自己的连接状态表,发现 此数据包匹配专用网络客户192.168.0.8发起的连接请求,则修改数据包为 TCP 61.139.0.1:80 -> 192.168.0.8:1031,然后转发数据包给专用网络中的客户。
所以,NAT可以有效地允许专用网络中的客户端计算机正常访问Internet资源,而不需要让专用网络中的客户端计算机都直接连接到Internet。
在Windows系统中提供了ICS(Internet连接共享)和RRAS中的NAT这两种NAT组件,但是具有不同的定位和作用,我总结了一下,它们之间的详细区别如下表所示:
特性 |
ICS |
NAT |
定位 |
单个C类子网范围,适合于家庭网络或者小型企业网络使用。 |
网络地址范围无限制,适合于大中型网络使用。 |
配置 |
简单 |
较ICS更为复杂 |
提供方式 |
Windows 2000及其后客户端操作系统和服务器操作系统中均提供 |
作为路由和远程访问服务的一个组件,只在Windows服务器操作系统中提供。 |
公共IP地址 |
只能使用一个公共IP地址 |
可以使用多个公共IP地址 |
保留IP地址 |
无此功能 |
可以 |
对外发布服务(端口映射) |
可以 |
可以 |
专用网络地址范围 |
限定为192.168.0.0/24 |
无限制 |
连接专用网络的网络接口的IP地址 |
限定为192.168.0.1/24 |
无限制,可保持原有配置不变。 |
专用网络地址分配 |
提供简化的DHCP服务,但是不可配置。 分配的IP地址范围为192.168.0.2~192.168.0.254, 子网掩码为255.255.255.0 |
提供DHCP分配器服务(也是简化的DHCP服务),默认分配的IP地址范围为专用网络接口所属子网。 你可以禁用此DHCP分配器服务,也可以配置DHCP分配器分配的IP地址范围,分配的IP地址数只受到配置的限制 |
DNS代理服务 |
默认启用,不能禁用,ICS中的简化DHCP服务为客户分配的DNS服务器地址是连接专用网络的网络接口的IP地址192.168.0.1。 |
默认启用,NAT的简化DHCP服务为客户分配的DNS服务器地址是连接专用网络的网络接口的IP地址,但是可以手动禁用 |
分配的默认网关地址 |
默认启用,不能禁用,为连接专用网络的网络接口的IP地址192.168.0.1 |
默认启用,不能禁用,为连接专用网络的网络接口的IP地址 |
DHCP更新期限 |
300秒(5分钟) |
|
DHCP重新绑定期限 |
453600秒(租约期限的75%) |
|
DHCP租约期限 |
604800秒(7天) |
|
分配的连接指定域名 |
mshome.net |
接下来,我将给大家分别进行详细的介绍。
第一部分 ICS(Internet连接共享)
ICS依赖于Windows Firewall/Internet Connection Sharing (ICS)服务,它的配置非常简单。为了启用ICS,你必须至少具有一个连接到专用网络的网络适配器和一个连接到Internet(公共网络)的网络适配器或拨号连接 (如果使用拨号连接,你必须在启用ICS前创建拨号连接)。你只能在连接到公共网络的网络适配器或拨号连接上启用ICS,具体操作步骤如下图所示:
右击网络邻居,选择属性,打开网络连接文件夹;右击你连接到公共网络的网络适配器或拨号连接,选择属性;
1、对于通过网络适配器连接到公共网络:
在网络适配器属性对话框,点击高级标签,然后在Internet连接共享框架中,勾选允许其他网络用户通过此计算机的 Internet 连接来连接,如果除了此公共网络连接外还有多个网络适配器,则要求你选择一个连接到专用网络的网络连接;如下图所示。
如果其他网络适配器均连接到专用网络,则你可以先使用桥接将它们桥接在一起,ICS就不再提示你选择连接到专用网络的网络连接了,如下图所示:
2、对于通过拨号连接到公共网络:
对于拨号连接的设置和网络适配器的设置基本一致,唯一的区别在于拨号连接多了一个每当网络上的计算机试图访问Internet时建立一个拨号连接选项,此选项用于实现请求拨号功能。 在启用请求拨号功能时,当专用网络中的客户端计算机试图访问Internet,ICS会自动连接此拨号连接。
你还可以点击设置按钮来配置需要让外部网络访问的服务,如下图所示。这个功能通常也称为端口映射,如果本地计算机上启用 了Windows防火墙,在此配置开放的服务将在Windows防火墙上对相应的网络适配器开放相应的端口。
ICS内置了一部分服务,你可以勾选相应的服务,
然后在弹出的服务设置对话框中设置转发数据到的专用网络中的计算机的名字或者IP地址,强烈建议使用IP地址来定义。当ICS在公共网络接口上接收到目的端口匹配外部端口号设置的数据包时,就会转发到专用网络中的这个计算机上,并且修改目的端口为内部端口号。ICS内置的服务不可以修改端口号和协议类型,不过你可以根据需要自行添加服务。
当启用ICS时,ICS将配置专用网络连接的IP地址为192.168.0.1,子网掩码为255.255.255.0,这个配置不可修改;ICS将在此接口上提供简化的DHCP服务和DNS代理服务,其中简化的DHCP服务将分配向DHCP客户分配范围为192.168.0.2~192.168.0.254、子网掩码为255.255.255.0的IP地址,并且分配默认网关和DNS服务器为192.168.0.1,DHCP客户端接收到的DHCP选项如下图所示:
而DNS代理服务的作用类似于DNS转发器,它可以将专用网络中客户发送的DNS解析请求转发到自己的DNS服务器,从而帮助专用网络中的客户端计算机完成DNS解析。
对于专用网络中的客户端计算机,你可以配置其为DHCP客户端,从而通过ICS的简化DHCP服务来自动进行配置,或者你可以按照相同的TCP/IP选项来手动进行配置。
第二部分 NAT
NAT是作为路由和远程访问服务(RRAS)中的一个组件,它和ICS最主要的区别在于:
可以使用的专用网络地址不限制;
可以设置保留IP地址选项。
它的配置比起ICS稍显复杂,不过和ICS的要求一样,你必须至少具有一个连接到专用网络的网络适配器和一个连接到Internet(公共网络)的网络适配器或拨号连接。不过,你可以在启用NAT的时候创建拨号连接,而ICS则必须要求你先创建拨号连接再启用ICS。
启用NAT
启用NAT的步骤如下,配置之前要求没有启用ICS并且必须禁用Windows Firewall/Internet Connection Sharing (ICS)服务:
在管理工具中选择路由和远程访问,在弹出的路由和远程访问管理控制台,右击服务器名,选择配置并启用路由和远程访问;
在弹出的欢迎使用路由和远程访问服务器安装向导页,点击下一步;
在配置页,选择网络地址转换(NAT),然后点击下一步;如果你需要同时提供远程访问服务,则选择虚拟专用网络(VPN)访问和NAT,此选项将同时启用NAT和VPN功能;
在NAT Internet连接页,选择连接到Internet的公共接口。对于NAT而言,它同样通过公用接口和专用接口来定义NAT行为,NAT将在公共接口上NAT从专用接口获得的IP数据包。在此我选择连接到Internet的网络适配器LAN10,你也可以选择创建一个新的到Internet的请求拨号接口来创建请求拨号连接,关于请求拨号接口我将在后文叙述。如果你接受默认的选择通过设置基本防火墙来在对选择的接口进行保护,则NAT会在此Internet接口上启用基本防火墙,这也是推荐设置。关于基本防火墙更详细的信息,请参见深入理解路由和远程访问服务中的筛选器和基本防火墙一文;点击下一步;
在名称和地址转换服务页,选择是否启用基本的名称和地址服务。如果NAT没有在网络中检测到DNS服务器和DHCP服务器,则推荐启用基本的名称和地址服务,此时,NAT会在专用网络接口上启用DHCP分配器和DNS代理服务。DHCP分配器和ICS的DHCP服务类似,也是一种简化的DHCP服务,它具有以下特性:
DHCP分配器根据NAT服务器的专用网络接口的IP子网来确定分配的IP地址范围;你可以设置排除的地址范围;
DHCP分配器给DHCP客户端分配的默认网关为NAT服务器的专用网络接口的IP地址;
在启用基本的名称服务时,NAT会在专用网络接口上启用DNS代理服务,而DHCP分配器会给DHCP客户端分配DNS服务器为此IP地址;如果没有启用基本的名称服务,则NAT不会启用DNS代理服务,DHCP分配器也不会给DHCP客户端分配DNS服务器。
如果你具有独立的DHCP服务器,推荐选择我将稍后设置名称和地址服务,此时,NAT不启用DHCP分配器和DNS代理服务。在此我接受默认的选择启用基本的名称和地址服务,然后点击下一步;
在地址指派范围页,NAT根据你的专用网络接口(在此是172.16.1.1/24)自动设置了DHCP分配器分配的IP地址范围172.16.1.0/24,点击下一步继续;
在正在完成路由和远程访问服务器安装向导页,点击完成。
此时,RRAS开始进行配置,等待几秒后完成配置,如下图所示:
NAT设置
右击NAT/基本防火墙,选择属性,弹出NAT/基本防火墙属性对话框,在此你可以设置NAT的全局属性。
在常规标签,你可以设置NAT在事件日志中记录的事件类型,默认为只记录错误;
在转换标签,你可以设置NAT在连接状态表中保留动态映射的时间。当NAT对某个从专用网络发往公共网络的IP数据包进行NAT时,会在连接状态表中记录此IP数据包,而转换设置用于配置此记录在连接状态表中保留的时间。默认情况下,TCP映射是1440分钟,即24小时;UDP映射是1分钟。
在地址指派标签,在此你可以配置DHCP分配器用于分配给专用网络中DHCP客户端的IP地址范围,你必须设置为和专用网络接口子网一致的IP地址范围,你还可以点击排除按钮设置此IP地址范围中不进行分配的IP地址。
在名字解析标签,你可以设置是否在专用网络接口上启用DNS代理服务,勾选使用域名系统(DNS)的客户端则启用,此时,DHCP分配器将会为DHCP客户端分配一个IP地址为NAT服务器专用网络接口的DNS服务器,如果取消选择则不会分配。当采用请求拨号连接到Internet时,应勾选当名称需要解析时连接到公用网络,然后选择相应的请求拨号接口。
NAT是通过定义公用接口和专用接口的机制来运行,NAT会在公用接口上NAT从专用接口收到的数据。在运行配置向导时,除了选择的公用网络接口外,其他网络接口均为专用接口。你可以在NAT/基本防火墙右边面板中看到当前NAT所使用的网络接口及其状态信息,如果你还想添加其他已有的网络接口,则右击NAT/基本防火墙,选择新增接口即可。
对于每一个接口,你可以配置其为专用接口、公共接口或者仅基本防火墙。当其配置为专用接口时,额外的配置只有数据包筛选器,你可以点击入站筛选器或出站筛选器按钮来进行配置。关于数据包筛选器和基本防火墙更详细的信息,请参见深入理解路由和远程访问服务中的筛选器和基本防火墙一文。
而选择为公共接口或者仅基本防火墙时,除了数据包筛选器,你还可以配置其他选项,如地址池、服务和端口、ICMP等等,我将分别进行说明。
当选择为公共接口时,你可以配置是否在此公共接口上启用NAT和是否在此接口上启用基本防火墙。你只能在公共接口上启用NAT,并且强烈建议你在公共接口上启用基本防火墙。
在地址池标签,你可以设置此公共接口上可以使用的公共IP地址以及保留IP地址。你在此添加的公共IP地址范围必须已经在公共网络接口的TCP/IP属性中进行了设置,即是属于此公共网络适配器的IP地址。
你可以点击添加按钮来添加,需要你输入起始IP地址、子网掩码和结束IP地址。一个IP地址也可以设置地址池,起始IP地址和结束IP地址相同即可。
当你至少设置了包含一个地址的地址池后,你就可以点击保留按钮来设置保留选项。 保留选项用于将地址池中的某个公共网络IP地址保留起来给专用网络中的主机使用,NAT使用此保留地址来转换专用网络中的对应主机发送的数据包;当接收到发往此保留公共IP地址的数据包时,NAT直接转发至专用网络中的对应主机。在弹出的地址保留对话框,你可以点击添加按钮来添加保留IP地址,保留公共IP地址和专用网络上的主机是一一对应的关系,你还可以设置是否允许传入会话,只有允许传入会话时才会将接收到的针对此保留公共IP地址的数据包转发至专用网络中的这台主机。例如我图中的设置,当NAT接收到发往保留公共IP地址10.2.1.4的数据包,就直接修改目的IP地址为172.16.1.8并发往专用网络上的主机172.16.1.8。
在服务和端口标签,你可以设置需要对公共网络发布的专用网络中的服务,它和保留选项的区别在于,服务和端口选项只是对某些服务或端口进行映射,而保留选项是对IP地址进行映射,但是服务和端口选项中的设置比保留选项具有更高的优先级,当出现冲突时,以服务和端口选项中的设置为准。它的配置和ICS基本相同,同样内置了部分服务,当设置开放服务或端口时,会在基本防火墙中创建例外,但是并不会在入站筛选器中创建例外。
勾选对应的服务,然后在弹出的编辑服务对话框中,配置服务选项即可。其中公用地址你可以选择在此接口,即在公共接口的主IP地址上进行侦听,而在此地址池项允许你侦听地址池中的某个IP地址而不是公共接口的主IP地址,然后在专用地址输入专用网络中对应服务器的IP地址即可。内置的服务不可修改协议和端口号,如果需要修改协议或端口,则需自行添加服务。
在ICMP标签,你可以设置此公共接口如何处理ICMP协议,你允许的配置同样会在基本防火墙上创建例外,但是但是并不会在入站筛选器或出站筛选器中创建例外。
使用请求拨号连接
如果你需要新建一个请求拨号接口来连接到Internet,则在NAT Internet连接页选择创建一个新的到Internet的请求拨号接口,点击下一步;需要注意的是,Windows Server 2003中NAT的请求拨号只支持PPPoE或者VPN拨号连接,不再支持普通的Modem和ISDN了,对于它们你需要使用ICS,不能使用NAT。
在网络选择页,选择专用网络接口,在此选择的专用网络接口将用于DHCP分配器和DNS代理服务,在此只能选择一个,你可以在向导完成后再手动添加专用网络接口。在此我选择我的内部网络接口LAN172,然后点击下一步;
在名称和地址转换服务页,接受默认的启用基本的名称和地址服务,然后点击下一步;
在地址指派范围页,点击下一步;
在准备应用选择页,点击下一步;
在弹出的欢迎使用请求拨号接口向导页,点击下一步;
在接口名称页,输入此请求拨号接口的名称,然后点击下一步;
在连接类型页,根据你的拨号连接类型进行选择,在此我是PPPoE,因此选择使用以太网上的PPP(PPPoE)连接后点击下一步;
在服务名称页直接点击下一步;
在协议及安全措施页,接受默认的选择在此接口上路由选择IP数据包,此选项将允许NAT在请求拨号接口上进行IP数据包的路由,然后点击下一步;
在拨出凭据页,输入你拨号时的用户名和密码,然后点击下一步;
在完成请求拨号接口向导页,点击完成;然后在正在完成路由和远程访问服务器安装向导页,点击完成。
完成后的RRAS管理控制台如下图所示:
此时,只有在网络选择页选择的网络接口才会添加为专用接口,对于其他专用网络接口,你需要手动进行添加。DHCP分配器也是分配的和选择的网络接口同子网(172.16.1.0/24)的IP地址,如下图所示:
名字解析标签中允许在需要解析名称时通过请求拨号接口连接到公用网络。
此外,你还可以通过设置IP请求拨号筛选器和拨出时间来对此请求拨号连接进行限制。IP请求拨号筛选器用于判断需要初始化请求拨号连接的IP数据包,当NAT接收到匹配某个请求拨号接口的请求拨号筛选器设置的IP数据包时,会自动对此请求拨号接口进行拨号,从而进行数据包的路由转发,默认情况下为所有数据包进行请求拨号;关于请求拨号筛选器更详细的信息,请参见深入理解路由和远程访问服务中的筛选器和基本防火墙一文。而拨出时间用于定义此请求拨号连接可以进行连接的时间,默认情况下为所有时间均允许进行连接。
操作步骤为点击左边列表中的网络接口,然后在右边的网络接口列表中右击请求拨号连接,然后分别选择设置IP请求拨号筛选器或者拨出时间。