示例1
在本例中,公司使用一台两接口路由器,一个是Ethernet,另一个是串行接口。Ethernet0连接到内部网络,而串行接口则通过PPP链路连接到ISP路由器。在内部网络中,公司使用10.0.0.0/24地址范围内的地址。公司已从其供应商那里获得了一个单一的全局可路由的IP地址171.100.1.1,并且该地址用于路由器的串行接口上。公司使用PAT将其所有的内部本地地址转换成单一的内部全局地址171.100.1.1。公司希望提供可以从Internet访问的FTP和Web服务器,并且对Web服务器的请求应被送到Web服务器所在的地址10.1.1.100,而FTP请求则被送到FTP服务器所在的地址10.1.1.101。
1 解决方案
inte***ce ethernet0
ip address 10.1.1.1 255.255.255.0
ip nat inside
!
inte***ce serial0
ip address 171.100.1.1 255.255.255.252
ip nat outside
!
ip access-list permit 10.0.0.0 0.255.255.255
!
ip nat inside source list 1 inte***ce serial0 overload
ip nat inside source list 1 static tcp 10.1.1.100 80 171.100.1.1 80
ip nat inside source list 1 static tcp 10.1.1.101 21 171.100.1.1 21
2 分析
先定义NAT所用的接口,并通过将合适的命令放在每个接口下面来定义接口是NAT内部或外部接口。通常,在定义NAT接口之后,就要定义NAT池来指定所用的内部全局地址。但是,在本例中只使用了一个单一的内部全局地址,并且将该单一内部全局地址用于路由器的serial 0接口上。由于只有一个单一内部全局地址并且用于路由器自己的接口上,所以我们不需要定义NAT池。我们只简单地使用示例中所示的inside source list语句即可。所定义源列表使用路由器接口的IP地址,并且超载该单一IP地址。该命令允许来自10.0.0.0/24网络的内部主机访问Internet。路由器执行PAT来创建TCP / UDP端口的NAT映射。完成该步以后,接下来需要为内部Web和FTP服务器创建静态映射。
由于只有一个单一的内部全局IP地址,因此要根据IP地址以及TCP或UDP端口来定义静态映射。在本例中,将目的地址为171.100.1.1和目的TCP端口为80的报文地址转换成TCP端口80上的10.1.1.100内部主机地址。我们还将目的地址为171.100.1.1和目的TCP端口为21的报文地址转换成TCP端口21上的10.1.1.101内部主机地址。这样我们就在不同的内部服务器上提供了Web和FTP服务,虽然我们只有一个单一的内部全局地址。注意,由于该命令语法允许指定内部服务器的IP地址和端口,所以可以在内部提供多个Web和FTP服务器。例如,可以创建如下的静态映射:
ip nat inside source static tcp 10.1.1.102 21 21.171.100.1 27
该转换*作将所有目的地址为171.100.1.1且目的端口为27的向内报文的地址转换为FTP端口上的地址10.1.1.102。当然,我们必须保证,外部用户能够知道我们的FTP服务器使用非标准的端口,而大多数的FTP客户机都提供这一能力。显然公司可以使用各种不同的端口转换方法来提供服务,即使公司只有一个全局可路由的IP地址。这些方法使Cisco NAT的功能更加强大。
示例2
在本例中,某公司使用一台具有两个Ethernet的路由器。Ethernet0连接到内部网络,而Ethernet1则连接到一个LAN网段。公司与其ISP的路由器共享该网段。在内部网络中,公司使用10.0.0.0/24地址空间中的地址。公司为自己提供一个IP地址或171.100.1.0/24。公司路由器的接口使用IP地址171.100.1.1,而ISP路由器接口则使用IP地址171.100.1.2,而将那些从171.100.1.0/24开始的其余地址留给NAT转换。公司希望在路由器上使用必要的命令,以使其内部用户能够使用ISP所提供的地址空间中的有效,全局可路由的地址,以访问Internet。
1 解决方案
interface ethernet0
ip address 10.1.1.1 255.255.255.0
ip nat inside
!
interface Ethernet1
ip address 171.100.1.1 255.255.255.0
ip nat outside
!
ip access-list 1 permit 10.0.0.0 0.255.255.255
!
ip nat pool internet 171.100.1.3 171.100.1.254 netmask 255.255.255.0
!
ip nat inside source list 1 pool internet
2 分析
在该方案中定义了用于NAT的接口。通过将相应的命令放在每个接口下面,指定该接口是一个NAT外部接口或内部接口。这是配置NAT的第一步。如果读者不将接口指定为一个NAT内部或NAT外部接口,或者指定的不正确,则NAT就不能正确工作。如果不定义NAT接口,NAT根本不工作,并且debug ip nat detail命令也不会输出任何结果。如果读者已定义了所有其他的NAT命令,但NAT还是不工作,则确认每个接口下面的所放的NAT命令是否合理。
在每个接口下面定义了合适的NAT命令之后,就可以定义存放内部全局地址的NAT池。我们定义的起始IP地址是171.100.1.3,而结束地址为171.100.1.254。我们不使用.1和.2地址是因为这两个地址分别用于用户路由器和ISP路由器。由于这两个地址也与用户路由器上的Ethernet1接口所在的子网是同一子网地址,用户路由器将使用自己的MAC地址回答来自ISP路由器的ARP请求。这允许ISP路由器从NAT池中解析出IP地址,并使用从NAP池中取出的目的IP地址将报文发送给用户路由器。
注意,MAT地址池并非必须来自与用户路由器接口上所配置的子网相同。
在本例中,公司使用一台两接口路由器,一个是Ethernet,另一个是串行接口。Ethernet0连接到内部网络,而串行接口则通过PPP链路连接到ISP路由器。在内部网络中,公司使用10.0.0.0/24地址范围内的地址。公司已从其供应商那里获得了一个单一的全局可路由的IP地址171.100.1.1,并且该地址用于路由器的串行接口上。公司使用PAT将其所有的内部本地地址转换成单一的内部全局地址171.100.1.1。公司希望提供可以从Internet访问的FTP和Web服务器,并且对Web服务器的请求应被送到Web服务器所在的地址10.1.1.100,而FTP请求则被送到FTP服务器所在的地址10.1.1.101。
1 解决方案
inte***ce ethernet0
ip address 10.1.1.1 255.255.255.0
ip nat inside
!
inte***ce serial0
ip address 171.100.1.1 255.255.255.252
ip nat outside
!
ip access-list permit 10.0.0.0 0.255.255.255
!
ip nat inside source list 1 inte***ce serial0 overload
ip nat inside source list 1 static tcp 10.1.1.100 80 171.100.1.1 80
ip nat inside source list 1 static tcp 10.1.1.101 21 171.100.1.1 21
2 分析
先定义NAT所用的接口,并通过将合适的命令放在每个接口下面来定义接口是NAT内部或外部接口。通常,在定义NAT接口之后,就要定义NAT池来指定所用的内部全局地址。但是,在本例中只使用了一个单一的内部全局地址,并且将该单一内部全局地址用于路由器的serial 0接口上。由于只有一个单一内部全局地址并且用于路由器自己的接口上,所以我们不需要定义NAT池。我们只简单地使用示例中所示的inside source list语句即可。所定义源列表使用路由器接口的IP地址,并且超载该单一IP地址。该命令允许来自10.0.0.0/24网络的内部主机访问Internet。路由器执行PAT来创建TCP / UDP端口的NAT映射。完成该步以后,接下来需要为内部Web和FTP服务器创建静态映射。
由于只有一个单一的内部全局IP地址,因此要根据IP地址以及TCP或UDP端口来定义静态映射。在本例中,将目的地址为171.100.1.1和目的TCP端口为80的报文地址转换成TCP端口80上的10.1.1.100内部主机地址。我们还将目的地址为171.100.1.1和目的TCP端口为21的报文地址转换成TCP端口21上的10.1.1.101内部主机地址。这样我们就在不同的内部服务器上提供了Web和FTP服务,虽然我们只有一个单一的内部全局地址。注意,由于该命令语法允许指定内部服务器的IP地址和端口,所以可以在内部提供多个Web和FTP服务器。例如,可以创建如下的静态映射:
ip nat inside source static tcp 10.1.1.102 21 21.171.100.1 27
该转换*作将所有目的地址为171.100.1.1且目的端口为27的向内报文的地址转换为FTP端口上的地址10.1.1.102。当然,我们必须保证,外部用户能够知道我们的FTP服务器使用非标准的端口,而大多数的FTP客户机都提供这一能力。显然公司可以使用各种不同的端口转换方法来提供服务,即使公司只有一个全局可路由的IP地址。这些方法使Cisco NAT的功能更加强大。
示例2
在本例中,某公司使用一台具有两个Ethernet的路由器。Ethernet0连接到内部网络,而Ethernet1则连接到一个LAN网段。公司与其ISP的路由器共享该网段。在内部网络中,公司使用10.0.0.0/24地址空间中的地址。公司为自己提供一个IP地址或171.100.1.0/24。公司路由器的接口使用IP地址171.100.1.1,而ISP路由器接口则使用IP地址171.100.1.2,而将那些从171.100.1.0/24开始的其余地址留给NAT转换。公司希望在路由器上使用必要的命令,以使其内部用户能够使用ISP所提供的地址空间中的有效,全局可路由的地址,以访问Internet。
1 解决方案
interface ethernet0
ip address 10.1.1.1 255.255.255.0
ip nat inside
!
interface Ethernet1
ip address 171.100.1.1 255.255.255.0
ip nat outside
!
ip access-list 1 permit 10.0.0.0 0.255.255.255
!
ip nat pool internet 171.100.1.3 171.100.1.254 netmask 255.255.255.0
!
ip nat inside source list 1 pool internet
2 分析
在该方案中定义了用于NAT的接口。通过将相应的命令放在每个接口下面,指定该接口是一个NAT外部接口或内部接口。这是配置NAT的第一步。如果读者不将接口指定为一个NAT内部或NAT外部接口,或者指定的不正确,则NAT就不能正确工作。如果不定义NAT接口,NAT根本不工作,并且debug ip nat detail命令也不会输出任何结果。如果读者已定义了所有其他的NAT命令,但NAT还是不工作,则确认每个接口下面的所放的NAT命令是否合理。
在每个接口下面定义了合适的NAT命令之后,就可以定义存放内部全局地址的NAT池。我们定义的起始IP地址是171.100.1.3,而结束地址为171.100.1.254。我们不使用.1和.2地址是因为这两个地址分别用于用户路由器和ISP路由器。由于这两个地址也与用户路由器上的Ethernet1接口所在的子网是同一子网地址,用户路由器将使用自己的MAC地址回答来自ISP路由器的ARP请求。这允许ISP路由器从NAT池中解析出IP地址,并使用从NAP池中取出的目的IP地址将报文发送给用户路由器。
注意,MAT地址池并非必须来自与用户路由器接口上所配置的子网相同。
示例3
在本例中,公司使用一台具有两个接口的路由器,分别是以太网和串行接口。Ethernet0连接到内部网络,而串行接口则通过点到点协议(PPP)链路连接到ISP路由器。在内部网络中,公司使用的地址来自地址空间10.0.0.0/24,该地址空间在Internet上是不可路由的。公司自己使用IP地址范围171.100.1.0/24。到ISP的PPP链路使用来自198.50.1.0/30子网的地址。公司希望在路由器上配置合适的命令,以便内部用户可以通过使用有效的、全局可路由的地址访问Internet。这些地址应该是来自ISP所提供的地址空间171.100.1.0/24。我们打算与上游的ISP路由器交换OSPF(开放式最短路径优先)更新信息。从而可以从该路由器接收缺省路由,并将其通知ISP路由器,该路由正在公司路由器上使用。
1 解决方案1
interface ethernet0
ip address 10.1.1.1 255.255.255.0
ip nat inside
!
interface serial0
ip address address 198.50.1.1 255.255.255.252
ip nat outside
!
ip access-list 1 permit 10.0.0.0 0.255.255.555
!
ip nat pool internet 171.100.1.1 171.100.1.254 netmask 255.255.255.0
!
ip nat inside source list 1 pool internet
!
ip route 171.100.1.0 255.255.255.0 null0
!
router ospf 1
network 198.50.1.0 0.0.0.255 area 0
redistribute static
2 解决方案2
interface loopback 0
ip address 171.100.1.1 255.255.255.0
ip ospf network point-to-point
!
interface ethernet0
ip address 10.1.1.1 255.255.255.0
ip nat inside
!
interface serial0
ip address address 198.50.1.1 255.255.255.252
ip nat outside
!
ip access-list 1 permit 10.0.0.0 0.255.255.555
!
ip nat pool internet 171.100.1.1 171.100.1.254 netmask 255.255.255.0
!
ip nat inside source list 1 pool internet
!
ip route 171.100.1.0 255.255.255.0 null0
!
router ospf 1
network 198.50.1.0 0.0.0.255 area 0
network 171.100.1.0 0.0.0.255 area 0
3 分析
在解决方案1中,先定义了用于NAT的接口,并通过将合适的命令放在每个接口下面,来指定该接口是一个NAT内部或外部接口。在每个接口下面定义了适当的NAT命令之后,再定义内部全局地址所在的NAT池。定义全局地址的起始IP地址为171.100.1.1,结束IP地址为171.100.1.254。我们使用除.1和.2地址之外的所有主机地址,是因为这些主机地址都不用于路由器接口。通过在NAT池中使用与用户路由器接口所用子网不同的子网,可以获得一些主机地址。但这又引入了一个新的问题。
在前一个示例中,ISP路由器直接连接到分配给NAT池的子网上。这种情况下,ISP路由器只发出一个ARP请求,以请求NAT池中的单个NAT地址,而用户路由器则使用自己的MAC地址来响应,此时工作正常。但是,上游的ISP路由器并不直接连接到NAT地址池子网171.100.1.0/24,所以必须告诉它如何通过路由协议或静态路由的方法到达NAT池所在的子网。在解决方案1中,我们启用了OSPF并且为171.100.1.0/24重新分配一个静态路由到OSPF中。上游的ISP路由器会接收到该路由,并且将所有目的地址为NAT池中地址的报文转发到我们的路由器中。
可选地,ISP可以在其路由器上安装一个静态路由,用来将所有171.100.1.0/24网络的报文指向我们的路由器。但是,我们希望:当NAT池地址不是直接从相连的子网上取出时,能够显示出路由信息的传播路径。注意,我们将整个171.10.10/24子网的NAT地址表置为null0。由于我们要指定NAT地址表中的某些表项,而非整个171.100.1.0/24子网,这时路由器并不丢弃这些报文,而是将它们转发到NAT表中所定义的内部主机上。
在解决方案2中,我们使用了另一种方法来通知ISP路由器有关NAT池的信息。这种方法是创建一个闭环(loopback)接口,并给其分配一个NAT池中的IP地址。通过将network171.100.1.00.0.0.255 area 0语句包含在我们的OSPF路由进程下面,可以将该闭环地址作为OSPF路由的一部分。注意,我们将.1地址从NAT池中删除,而使用主机地址.2作为NAT池的起始地址,这样就减少了NAT池地址和用于闭环接口上的IP地址重叠的可能性。另外,我们在闭环接口下面使用接口命令ip ospf ntwork point-to-point。一般地,OSPF将闭环接口看成是一个OSPF桩(stub)网络,并且将接口的32位表项作为路由,而非整个子网。在本例中,OSPF进程会发送172.100.1.1/32而非表172.100.1.0/24。在这种情况下,由于需要将整个171.100.1.0/24子网信息传送给上游的ISP路由器,所以该地址转换过程不能工作。OSPF接口命令告诉OSPF传送该接口的路由,就像该网络是点到点网络一样,而不像是一个桩(stub)网络。这意味着它将通过OSPF传送整个171.100.1.0/24子网信息(ip ospf network point-to-point命令在IOS版本11.3或更高版本中使用),这两种方法都能正常工作,但使用哪一种则是读者的偏好问题了。
注意:我们知道一个公司通常会在其路由器和ISP路由器之间运行边界网关协议(Border Gateway Protocol, BGP)。在本例中,我们选择了OSPF路由协议,目的是为了分析ip ospf network point-to-point命令。
在本例中,公司使用一台具有两个接口的路由器,分别是以太网和串行接口。Ethernet0连接到内部网络,而串行接口则通过点到点协议(PPP)链路连接到ISP路由器。在内部网络中,公司使用的地址来自地址空间10.0.0.0/24,该地址空间在Internet上是不可路由的。公司自己使用IP地址范围171.100.1.0/24。到ISP的PPP链路使用来自198.50.1.0/30子网的地址。公司希望在路由器上配置合适的命令,以便内部用户可以通过使用有效的、全局可路由的地址访问Internet。这些地址应该是来自ISP所提供的地址空间171.100.1.0/24。我们打算与上游的ISP路由器交换OSPF(开放式最短路径优先)更新信息。从而可以从该路由器接收缺省路由,并将其通知ISP路由器,该路由正在公司路由器上使用。
1 解决方案1
interface ethernet0
ip address 10.1.1.1 255.255.255.0
ip nat inside
!
interface serial0
ip address address 198.50.1.1 255.255.255.252
ip nat outside
!
ip access-list 1 permit 10.0.0.0 0.255.255.555
!
ip nat pool internet 171.100.1.1 171.100.1.254 netmask 255.255.255.0
!
ip nat inside source list 1 pool internet
!
ip route 171.100.1.0 255.255.255.0 null0
!
router ospf 1
network 198.50.1.0 0.0.0.255 area 0
redistribute static
2 解决方案2
interface loopback 0
ip address 171.100.1.1 255.255.255.0
ip ospf network point-to-point
!
interface ethernet0
ip address 10.1.1.1 255.255.255.0
ip nat inside
!
interface serial0
ip address address 198.50.1.1 255.255.255.252
ip nat outside
!
ip access-list 1 permit 10.0.0.0 0.255.255.555
!
ip nat pool internet 171.100.1.1 171.100.1.254 netmask 255.255.255.0
!
ip nat inside source list 1 pool internet
!
ip route 171.100.1.0 255.255.255.0 null0
!
router ospf 1
network 198.50.1.0 0.0.0.255 area 0
network 171.100.1.0 0.0.0.255 area 0
3 分析
在解决方案1中,先定义了用于NAT的接口,并通过将合适的命令放在每个接口下面,来指定该接口是一个NAT内部或外部接口。在每个接口下面定义了适当的NAT命令之后,再定义内部全局地址所在的NAT池。定义全局地址的起始IP地址为171.100.1.1,结束IP地址为171.100.1.254。我们使用除.1和.2地址之外的所有主机地址,是因为这些主机地址都不用于路由器接口。通过在NAT池中使用与用户路由器接口所用子网不同的子网,可以获得一些主机地址。但这又引入了一个新的问题。
在前一个示例中,ISP路由器直接连接到分配给NAT池的子网上。这种情况下,ISP路由器只发出一个ARP请求,以请求NAT池中的单个NAT地址,而用户路由器则使用自己的MAC地址来响应,此时工作正常。但是,上游的ISP路由器并不直接连接到NAT地址池子网171.100.1.0/24,所以必须告诉它如何通过路由协议或静态路由的方法到达NAT池所在的子网。在解决方案1中,我们启用了OSPF并且为171.100.1.0/24重新分配一个静态路由到OSPF中。上游的ISP路由器会接收到该路由,并且将所有目的地址为NAT池中地址的报文转发到我们的路由器中。
可选地,ISP可以在其路由器上安装一个静态路由,用来将所有171.100.1.0/24网络的报文指向我们的路由器。但是,我们希望:当NAT池地址不是直接从相连的子网上取出时,能够显示出路由信息的传播路径。注意,我们将整个171.10.10/24子网的NAT地址表置为null0。由于我们要指定NAT地址表中的某些表项,而非整个171.100.1.0/24子网,这时路由器并不丢弃这些报文,而是将它们转发到NAT表中所定义的内部主机上。
在解决方案2中,我们使用了另一种方法来通知ISP路由器有关NAT池的信息。这种方法是创建一个闭环(loopback)接口,并给其分配一个NAT池中的IP地址。通过将network171.100.1.00.0.0.255 area 0语句包含在我们的OSPF路由进程下面,可以将该闭环地址作为OSPF路由的一部分。注意,我们将.1地址从NAT池中删除,而使用主机地址.2作为NAT池的起始地址,这样就减少了NAT池地址和用于闭环接口上的IP地址重叠的可能性。另外,我们在闭环接口下面使用接口命令ip ospf ntwork point-to-point。一般地,OSPF将闭环接口看成是一个OSPF桩(stub)网络,并且将接口的32位表项作为路由,而非整个子网。在本例中,OSPF进程会发送172.100.1.1/32而非表172.100.1.0/24。在这种情况下,由于需要将整个171.100.1.0/24子网信息传送给上游的ISP路由器,所以该地址转换过程不能工作。OSPF接口命令告诉OSPF传送该接口的路由,就像该网络是点到点网络一样,而不像是一个桩(stub)网络。这意味着它将通过OSPF传送整个171.100.1.0/24子网信息(ip ospf network point-to-point命令在IOS版本11.3或更高版本中使用),这两种方法都能正常工作,但使用哪一种则是读者的偏好问题了。
注意:我们知道一个公司通常会在其路由器和ISP路由器之间运行边界网关协议(Border Gateway Protocol, BGP)。在本例中,我们选择了OSPF路由协议,目的是为了分析ip ospf network point-to-point命令。
示例4
在本例中,公司与示例2中的公司相同,但情况稍有不同。这里公司处于Internet环境中,它决定提供一个能从Internet访问的Web服务器,以便那些浏览Web的用户能够了解公司。该服务器位于内部网络中,并且能够从Internet上的主机访问该服务器。这样它将拥有IP地址10.1.1.100。由于Web服务器必须能够通过Internet来访问,所以这个源IP地址在转发给ISP路由器之前,必须被转换成内部全局缓冲池中的地址。我们为公司Web服务器选择171.100.1.100作为其转换成的内部全局地址。
如示例2那样,Ethernet0连接到内部网络,而串行接口则通过PPP链路连接到ISP路由器。在内部网络中,公司使用10.0.0.0/24中的地址,而全局池中的IP地址范围是171.100.1.0/24。在本例中,我们将假定ISP使用静态路由来找到我们的路由器,其中路由器地址在172.100.1.0/24地址范围内。并且ISP将该路由传送到Internet上。
1 解决方案
interface ethernet0
ip address 10.1.1.1 255.255.255.0
ip nat inside
!
interface serial0
ip address 198.50.1.1 255.255.255.252
ip nat outside
ip access-list 1 permit 10.0.0.0 0.255.255.255
!
ip nat pool internet prefix-length 24
address 171.100.1.1 171.100.1.99
address 171.100.1.101 171.100.1.254
!
ip nat inside source static 10.1.1.100 171.100.1.100
ip nat inside source list 1 pool internet
2 分析
如其他示例那样,我们在使用任何其他NAT命令之前,应先定义NAT内部和外部接口。而后需要配置NAT池地址和NAT源列表,以允许能够从池中获得地址。本例与示例2的不同之处在于:我们需要为Web服务器设置IP地址171.100.1.100。另外,必须在内部全局地址和内部本地地址之间给出静态映射关系。不然的话,就不能保证NAT表中的NAT转换会将NAT池中的特定IP地址映射到Web服务器。这也意味着无法从Internet上知道应该使用哪个地址才能到达Web服务器,显然这是毫无用处的。
注意,我们在配置中使用ip nat inside source static 命令,以建立10.1.1.100和171.100.1.100之间的静态映射。注意到在本例中NAT池的语法有些不同。Cisco已扩展了NAT语法,所以可以拆分NAT池所用的IP地址范围。我们定义了两个不同的地址范围:从171.100.1.1到171.100.1.9 9,以及从171.100.1.1 0 1到171.100.1.254。所以我们可以将IP地址171.100.1.100从NAT池中排除出去,因为我们使用该地址进行静态转换。我们使用ip nat inside source list命令来定义IP地址,以允许该IP地址从NAT池中获取相应的IP地址。注意,至此,只使用了标准IP访问表来定义IP地址。也可以使用一个扩展的IP访问表,在本章后面的示例中会涉及到。
转载于:https://blog.51cto.com/chenxiang/55065