(以下所有内容为本手纯手打,有纰漏的地方,也请大家多多包含可发小猪消息赐教交流!)

(本文所有内容及批注呈内收递归的架构显示,因格式显示不懂之处望谅解!)

(本文手打之,命令关键字大多使用简写,如有不明最好是键入命令时惯用tab补全!)


网络地址转转nat(static静态转换/dynamic动态转换)、端口多路复用pat:


1、静态nat的配置:

router(config)#int f0/0

router(config-if)#ip add 10.0.0.1 255.255.255.0 (设置外部端口的ip地址)

router(config)#int f1/0

router(config-if)#ip add 192.168.1.1 255.255.255.0 (设置内部端口的ip地址)

router(config)#ip nat inside source static local-ip global-ip [extendable]

    (这里是将内部局部地址静态转换为内部全局地址,extendable为可选项,表示支持多个global-ip)

    (inside表示对从inside口进入的流量源地址进行静态转换,static为静态,例如配置:)

                        router(config)#ip nat in so stat 192.168.1.10 10.0.0.2

                        router(config)#ip nat in so stat 192.168.1.100 10.0.0.3 extendable

                        router(config)#ip nat in so stat 192.168.1.100 10.0.0.4 extendable

                        (这里配置static-nat,可以发现,并没有减少global-ip的使用!!!)

router(config)#int f0/0

router(config-if)#ip nat oustside

router(config-if)#int f1/0

router(config-if)#ip nat inside    (在内部或外部端口启用NAT)

router(config)#ip route 0.0.0.0 0.0.0.0 gateway-ip   (配置默认路由网关ip)

        (以上为静态nat配置地址转换全部完毕)


2、nat的端口映射:

router(config)#ip nat in so stat protocol local-ip udp/tcp-port global-ip port [extendable]

        (以上为将内部某服务器端口号转化为全局地址端口号使用,主要用来发布内部服务器:web)

router(config)#ip nat in so stat tcp 192.168.1.10 80 10.0.0.2 8080 extendable

router(config)#ip nat in so stat tcp 192.168.1.100 25 10.0.0.2 25 extendable

        (这里还可以把内部不同服务器的不同服务端口映射到同一个ip上的不同端口上)


3、动态nat的配置:

router(config)#int f0/0

router(config-if)#ip add 10.0.0.1 255.255.255.0  (设置外部端口ip)

router(config-if)#int f1/0

router(config-if)#ip add 192.168.1.1 255.255.255.0 (设置内部端口ip)

router(config)#access-list 1 permit 192.168.1.0 0.0.0.255

        (这里是定义内部网络中允许访问外网的acl)

router(config)#ip nat pool pool-name start-ip end-ip {netmask netmask |prefix-length prefix-length } [type rotary]  (定义合法ip地址池,用来地址转换的global-ip)

        (pool-name:合法地址池的名称      start-ip/end-ip:地址池内起始和终止ip,表示范围

        netmask :子网掩码,用十进制表示如24位子网掩码表示为netmask 255.255.255.0

        prefix-length :子网掩码用位数表示,如prefix-length 24,即表示24位的子网掩码

        type rotary :可选项,表示地址池ip为循环使用)

        (这里合法地址池可同时定义多个,来供给不同需求调配使用,举例如下:)

                router(config)#ip nat pool test1 10.0.0.10 10.0.0.20 netmask 255.255.255.0

                router(config)#ip nat pool test2 20.0.0.10 20.0.0.20 prefix-length 24 

                router(config)#ip nat inside source list acl-name pool pool-name [overload]                         (实现网络地址转换)

        (这里 voerload为扩展可选项,表示地址复用,用于pat,单纯的动态nat并不配置此项)

router(config)#ip nat in so list 1 pool test1

router(config)#ip nat in so list 1 pool test2

        (这里可以同时为一个acl调配多个pool,用来扩大可转换的地址范围)

router(config)#int f0/0

router(config-if)#ip nat outside

router(config-if)#int f1/0

router(config-if)#ip nat inside (在内部和外部端口启用nat)

router(config)#ip route 0.0.0.0 0.0.0.0 gateway-ip

        (配置默认路由,保证数据包正常选路路由,这里gateway通过isp下发配置)


4、配置pat端口多路复用地址转换:

pat和动态nat的区别:都是动态地址转换,配置上基本一样

   pat启用voerload地址复用选项,而动态nat没有,但可以通过此选项变换成pat

   pat一般用于只有一个或可分配合法ip比较少的情况下用一个合法ip完成地址转换效果

   动态nat虽然可以动态转换并可循环使用合法ip,但依然是一对一地址转换

   pat是通过允许对tcp/udp连接会话端口进行地址转换,成为端口多路复用!!!

配置如下(直接举例):

router(config)#int f0/0

router(config-if)#ip add 10.0.0.1 255.255.255.0  (设置外部端口ip)

router(config-if)#int f1/0

router(config-if)#ip add 192.168.1.1 255.255.255.0 (设置内部端口ip)

router(config)#access-list 1 permit 192.168.1.0 0.0.0.255   (定义acl)

router(config)#ip nat pool onlyone 10.0.0.10 10.0.0.10 prefix-length 24  (定义合法地址池)

        (这里start-ip/end-ip一样则表示只有一个合法ip可使用,动态nat中同理)

        (值得注意:这里只有一个合法ip不能配成外部端口ip地址,如果只有一个外部端口合法ip可以使用,请详细看5配置,复用路由器外部接口地址转换)

router(config)#ip nat in so list 1 pool onlyone overload  (配置端口多路复用地址转换)

router(config)#int f0/0

router(config-if)#ip nat outside

router(config-if)#int f1/0

router(config-if)#ip nat inside (在内部和外部端口启用nat)

router(config)#ip route 0.0.0.0 0.0.0.0 gateway-ip

        (配置默认路由,保证数据包正常选路路由,这里gateway通过isp下发配置)


5、复用路由器外部接口地址转换(pat):

(使用于:公司内部只有一个合法ip,则必须用于外部端口,这种情况下应配置如下:)

router(config)#int f0/0

router(config-if)#ip add 10.0.0.1 255.255.255.0  (设置外部端口ip)

router(config-if)#int f1/0

router(config-if)#ip add 192.168.1.1 255.255.255.0 (设置内部端口ip)

router(config)#access-list 1 permit 192.168.1.0 0.0.0.255   (定义acl)

        (由于地址转换是直接应用外部接口地址,所以此处不必定义合法地址池!!!)

router(config)#ip nat in so list 1 int f0/0 voerload  (配置复用路由器外部端口地址转换)

router(config)#int f0/0

router(config-if)#ip nat outside

router(config-if)#int f1/0

router(config-if)#ip nat inside (在内部和外部端口启用nat)

router(config)#ip route 0.0.0.0 0.0.0.0 gateway-ip

        (配置默认路由,保证数据包正常选路路由,这里gateway通过isp下发配置)


6、验证nat配置及相关优化:

router#sh run(这里是可以看到nat配置信息及端口启用nat情况)

router#sh ip nat translations 【verbose】 (查看nat的转换条目,verbose可查看详细条目)

router#sh ip nat statistics  (产看nat的统计信息)

router(config)#ip nat translation {dns-timeout | icmp-timeout | tcp-timeout | udp-timeout | finrst-timeout | syn-timeout } { seconds | never}

        (此配置为用户修改超时的默认值,可针对不同的协议进行配置!)

        (如ip nat translation icmp-timeout 120 表示icmp协议转换nat超时为120s)


(当设备中存在大量的nat转换条目事,会占用大量的内存和cpu资源,可以使用以下配置优化 :)

        router#clear ip nat translation *  (清空所有动态地址转换条目,*表示任意值)

        router#clear ip nat translation inside local-ip global-ip 

        router#clear ip nat translation outside local-ip global-ip

                (清空包含一个内部地址转换/外部地址转换的简单条目,一般用来清空静态nat使用)


(常见nat故障处理简单思路:)

(一般两种原因:配置错误或是没有正确理解nat的工作方式!)

        1、是否设置了acl访问控制阻塞了内部地址转换,或是没有配置允许acl通过地址转换的流量

        2、定义nat的acl是是否遗漏需要允许地址转换的ip地址条目

        3、如果是配置的pat,是否遗漏了voerload关键命令,从而没有启用端口多路复用地址转换

        4、是否正确使用nat命令,启动nat配置inside和outside接口错误,形成不对称路由或是直接错误

        5、nat地址池和静态nat表项中是否有重复使用的合法ip,否则会导致nat间断性失败!


(以上如有故障,还可以通过:debug ip nat 来动态跟踪nat地址转换操作!!!)


 (以上为cisco-router的地址转换全部基本配置,到此完毕!下期小猪将给大家整理 Cisco-sw-router-acl访问控制列表策略基础配置,敬请关注!)