CCNA 学习指南-640-802
NAT 工作原理
好的,现在我们看一下整个 NAT 的工作过程。图 11.2 描述了 NAT 的基本转 换。
在图 11.2 展示的例子中,主机 10.1.1.1 发送一个外出数据包到配置了 NAT 的边界路由器。边界路由器识别出此 IP 地址为内部本地 IP 地址。目标是外部网 络,它要转换内部本地 IP 地址,并把转换结果记录到 NAT 表中。
图 11.2 基本的 NAT 转换 这个数据包使用转换后新
的源地址被发送到外部接口。外部主机返回此包到
目标主机,NAT 路由器使用 NAT 表转换内部全局 IP 地址为内部本地 IP 地址。 整个过程就是这么简单。
让我们看一个使用复用或被称为端口地址转换的比较复杂的配置。我将使用 图 11.3 示范 PAT 如何工作。
使用复用,全部的内部主机被转换为一个单独的 IP 地址,因此叫做复用。 再次强调,我们没有使用完因特网上可用 IP 地址的原因就是因为复用(PAT)。 再
看一次图 11.3 的 NAT 表。除了内部本地 IP 地址和外部全局 IP 地址外, 我们用到了端口号。这些端口号帮助路由器识别哪一台主机接收返回的流量。 在
此例中,端口号被用在传输层,用于识别本地主机。如果我们必须要使用 IP 地址来识别源主机,那将被称为静态 NAT,而且我们将会使用完所有可用 IP 地址。PAT 允许我们使用传输层来识别主机,同时允许多达 65000 台主机(理论
广东韶关学院 王为群整理 783
CCNA 学习指南-640-802
上)使用一个真实的 IP。
图 11.3 NAT 复用示例(PAT)
静态 NAT 配置
让我们来看一个简单的基本静态 NAT 配置:
ip nat inside source static 10.1.1.1 170.46.2.2 !
interface Ethernet0
ip address 10.1.1.10 255.255.255.0 ip nat inside !
interface Serial0
ip address 170.46.2.1 255.255.255.0 ip nat outside !
在上面的路由器输出中,ip nat inside source 命令识别哪一个 IP 地址将被转 换。在这个配置例子中,ip nat inside source 命令在内部本地 IP 地址 10.1.1.1 与 外部全局 IP 地址 170.46.2.2 之间配置了一个静态转换。
在配置中继续向下看,我们会看到每个接口下方都有 ip nat 命令。命令 ip nat inside 识别接口为内部接口,命令 ip nat outside 识别接口为外部接口。当你回过 去看 ip nat inside source 命令,会看到这个命令把内部接口作为源地址或转换的
广东韶关学院 王为群整理
784
CCNA 学习指南-640-802
开始点。这个命令也可能这样使用—ip nat outside source—把你指定的接口作为 外部接口,并把这个外部接口作为源地址或是转换的开始点。
动态 NAT 配置
动态 NAT 意味着我们可以为内部的用户组提供真实的 IP 地址池。我们不使 用端口号,因此我们必须为每个尝试连接外网的用户提供真实的 IP 地址。
下面是一个动态 NAT 配置的示例输出:
ip nat pool todd 170.168.2.2 170.168.2.254 netmask 255.255.255.0 ip nat inside source list 1 pool todd !
interface Ethernet0
ip address 10.1.1.10 255.255.255.0 ip nat inside !
interface Serial0
ip address 170.168.2.1 255.255.255.0 ip nat outside !
access-list 1 permit 10.1.1.0 0.0.0.255 !
命令 ip nat inside source list 1 pool todd 告诉路由器把匹配 access-list 的 IP 地 址转换为名字叫 todd 的 IP NAT 地址池中的一个地址。在此情况中,访问列表并 不像以往那样,为了安全原因通过允许或拒绝来过滤流量。在这里,访问列表被 用来选择或指定触发流量。当触发流量与访问列表匹配时,触发流量被放入 NAT 过程进行转换。这是访问列表常见的使用方法,访问列表并不是始终只在接口上 做阻塞流量这种枯燥的工作。
命令 ip nat pool todd 170.168.2.2 170.168.2.254 创建了一个地址池,这个地址 池为那些需要 NAT 的主机提供地址。
PAT(复用)配置
最后一个示例展示如何配置内部全局地址复用。这是今天我们使用的典型的
NAT。现在很少使用静态或动态 NAT,除非我们静态地映射一个服务器。
广东韶关学院 王为群整理
785
CCNA 学习指南-640-802
下面是一个 PAT 配置的示例输出: ip nat pool globalnet 170.168.2.1 170.168.2.1
netmask 255.255.255.0
ip nat inside source list 1 pool globalnet overload !
interface Ethernet0/0
ip address 10.1.1.10 255.255.255.0 ip nat inside !
interface Serial0/0
ip address 170.168.2.1 255.255.255.0 ip nat outside !
access-list 1 permit 10.1.1.0 0.0.0.255
PAT 的好处是,存在于这种配置和前面的动态 NAT 配置间的仅有差异是 IP 地址池被缩减为一个 IP 地址,并且在 ip nat inside source 命令之后包含 overload 命令。
注意,在示例中被用做地址池的那个 IP 地址是外部接口 IP 地址。在家里或 是一个小的办公室里,你的 ISP 仅为你提供一个 ip,配置 NAT 复用真的很棒。 然而,你可以使用如 170.168.2.2 这样的另外一个地址,如果地址是可用的。这 在拥有很多内部用户以至于必须在外部接口有一个以上的复用 IP 地址的大规模 网络配置中非常有用。
NAT 的简单验证
一旦你配置一种需要类型的 NAT,典型的是复用(PAT),你就要有能力对配 置进行验证。
为了查看基本 IP 地址转换信息,使用下面的命令:
Router#show ip nat translation
当查看 IP NAT 转换信息的时候,你将看到许多转换是从相同的主机到相同 的目的主机之间的转换。这是典型的到 Web 的多个连接。
另外,可以使用 debug ip nat 命令验证 NAT 配置。输出结果中的每个调试行 将显示发送端地址、转换、目的地址:
广东韶关学院 王为群整理
786
CCNA 学习指南-640-802
Router#debug ip nat
如何从转换表中清除 NAT 条目?使用 clear ip nat translation 命令。为了从
NAT 表中清除所有的条目,在命令的结尾使用星号(*)。
广东韶关学院 王为群整理
787