本文转自:http://hebe852.blog.163.com/blog/static/1207262482009525111825512/

ip nat inside source
Translates the source of IP packets that are traveling inside to outside.
Translates the destination of the IP packets that are traveling outside to inside.

ip nat outside source
Translates the source of the IP packets that are traveling outside to inside.
Translates the destination of the IP packets that are traveling inside to outside.

ip nat inside destination
Translates the destination of IP packets that are traveling inside to outside.
Translates the source of the IP packets that are traveling outside to inside.

ip nat outside destination
Translates the destination of the IP packets that are traveling outside to inside.
Translates the source of the IP packets that are traveling inside to outside.

ip nat inside 是对配置了ip nat inside的接口的数据包进行nat转换,相应的ip nat outside是对配置了ip nat outside的接口的数据包进行nat转换。

而source和destination是对数据包的源地址活着目的地址进行转换。

NAT基础知识

  ● NAT简介
  NAT(Network Address Translation)的功能,就是指在一个网络内部,根据需要可以随意自定义的IP地址,而不需要经过申请。在网络内部,各计算机间通过内部的IP地 址进行通讯。而当内部的计算机要与外部internet网络进行通讯时,具有NAT功能的设备(比如:路由器)负责将其内部的IP地址转换为合法的IP地 址(即经过申请的IP地址)进行通信。
  ● NAT 的应用环境:
  情况1:一个企业不想让外部网络用户知道自己的网络内部结构,可以通过NAT将内部网络与外部Internet 隔离开,则外部用户根本不知道通过NAT设置的内部IP地址。
  CISCO NAT经典基础配置
  ● 全部采用端口:ISP分配的IP202.99.160.129
interface fastethernet0/0
ip address 192.168.1.1 255.255.255.0
duplex auto
speed auto
in nat inside
no shutdown

interface fastethernet0/1
ip address 192.168.2..1 255.255.255.0
duplex auto
speed auto
in nat outside
no shutdown

ip nat pool OnlyYou 202.99.160.130 202.99.160.130 netmask 255.255.255.252
//OnlyYou代表地址池的名称。 2个202.99.160.130是代表只用一个ip做转换后ip.
access-list 1 permit 192.168.1.0 0.0.0.255
access-list 1 permit 192.168.2.0 0.0.0.255
ip nat inside source list1 pool OnlyYou overload

  ● 动态地址转换+端口:ISP分配的IP 有:202.99.160.130~190 255.255.255.192
Interface fastethernet0/1
Ip address 192.168.1.1 255.255.255.0
Ip address 192.168.2.1 255.255.255.0 secondary
Duplex auto
Speed auto
Ip nat inside
No shutdown

Interface serial 0/0
Ip address 202.99.160.129 255.255.255.192
Duplex auto
Speed auto
Ip nat outside
No shutdwon

Ip nat pool OutPort 202.99.160.190 202.99.160.190 netmask 255.255.255.192
Ip nat pool OutPool 202.99.160.130 202.99.160.190 netmask 255.255.255.192
Ip nat inside source list1 pool OutPort //192.168.1.0段主机全部转成202.99.160.190
Ip nat inside source list2 pool OutPool
//出于访问ftp站点等考虑:192.168.2.0和192.168.3.0段主机全部
//转成202.99.160.130到202.99.160.189中的所有地址。
Access-list1 permit 192.168.1.0 0.0.0.255
Access-list2 permit 192.168.2.0 0.0.0.255
Access-list2 permit 192.168.3.0 0.0.0.255

  ● 静态地址转换:ISP分配的IP地址是:211.82.220.80~211.82.220.87、211.82.220.81 255.255.255.248。要求Intranet上的Web.E-mail.Ftp.Media可以被外部访问。
Interface fastethernet0/0
Ip address 192.168.1.1 255.255.255.0
Duplex auto
Speed auto
Ip nat inside
No shutdown
Interface fastethernet0/1
Ip address 211.82.220.81 255.255.255.248
Speed auto
Duplex auto
Ip nat outside
No shutdown
Ip nat pool Outpool 211.82.220.86 211.82.20.86 netmask 255.255.255.248
Access-list 1 permit 192.168.1.2 0.0.0.255
Access-list 1 permit 192.168.1.3 0.0.0.255
Access-list 1 permit 192.168.1.4 0.0.0.255
Access-list 1 permit 192.168.1.5 0.0.0.255
Ip nat inside source list1 pool Outpool overload
Ip nat inside source static 192.168.1.2 211.82.220.82
Ip nat inside source static 192.168.1.3 211.82.220.83
Ip nat inside source static 192.168.1.4 211.82.220.84
Ip nat inside source static 192.168.1.5 211.82.220.85
  ● NAT映射:如果ISP提供的IP地址比较多还可以,但如果不是的时候(如就两个时),一个用于内网地址转换,另一个用于对外网提供服务。ISP提供的内网上网IP。
Interface ethernet0
Ip address 192.168.1.1 255.255.255.0
Duplex auto
Speed auto
Ip nat inside
No shutdown
Interface fastethernet0/0
Ip address 211.82.220.129 255.255.255.248
Duplex auto
Speed auto
Ip nat outside
No shutdown

Access-list 1 permit 192.168.1.0 0.0.0.255
Ip nat pool Everybody 211.82.220.130 211.82.220.130 network 255.255.255.252
Ip nat inside source list1 pool Everybody overload
Ip nat inside source static tcp 192.168.1.2 80 202.99.220.130 80
Ip nat inside source static tcp 192.168.1.3 21 202.99.220.130 21
Ip nat inside source static tcp 192.168.1.4 25 202.99.220.130 25
Ip nat inside source static tcp 192.168.1.5 110 202.99.220.130 110

  ● 利用地址转换实现负载均衡:当有如象腾讯公司似的多服务器时,使用路由器实现负载平衡,可以使它们有平等的访问机会.
Interface fastethernet0/1
Ip address 192.168.1.1 255.255.255.0
Duplex auto
Speed auto
Ip nat inside
No shutdown

Interface fastethernet0/0
Ip address 202.110.198.81 255.2555.255.248
Duplex auto
Speed auto
Ip nat outside
Access-list 1 permit 202.110.198.82
Access-list 2 permit 202.110.198.83
Access-list 3 permit 192.168.1.0 0.0.0.255
Ip nat pool Webser 192.168.1.2 192.168.1.3 255.255.255.248 type rotary
Ip nat pool Ftpser 192.168.1.4 192.168.1.5 255.255.255.248 type rotary
Ip nat pool normal 202.110.198.84 202.110.198.84 netmask 255.255.255.248
Ip nat inside destination list 1 pool Webser
Ip nat inside destination list 2 pool Ftpser

示例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 解决方案
interface ethernet0
ip address 10.1.1.1 255.255.255.0
ip nat inside
!
interface 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 interface 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命令。

示例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池中获取