核心网络技巧:一键学会如何使用NAT实现端口映射

数据来源

1、ipv4地址严重不够用了

        X.X.X.X X 0-255     A、B、C类可以使用    D组播     E科研

2、IP地址分为公网IP和私网IP

  • 公网IP只能在公网上使用
  • 私网IP只能在内网中使用
  • 公网上不允许出现私有IP地址
  • 私网IP可以重复在内网使用

        1)私有地址范围

                10.0.0.0/8(10开头的)

                172.16.0.0/16 - 172.31.0.0/16(172.16开头的一直到172.31开头的)

                192.168.0.0/16(192.168开头的)

        2)公有地址范围

                A、B、C三类广播地址中除了私有地址其他的都是公有地址 

国际标准组织ISO定义地址分类:五大类(是以IP地址的第一位进行区分的)

  • A类:1-126       默认子网掩码: 255.0.0.0
  • B类:128-191   默认子网掩码:255.255.0.0 
  • C类:192-223   默认子网掩码:255.255.255.0 
  • D类:224-239   组播地址  
  • E类:240-254   科研使用   (国家用的)
  • 127 开头的已经被当做回环地址 比如:127.0.0.1 (本机地址)
  •  255 开头的被当做子网掩码

3、NAT主要实现公私有|P地址的转换,一般是路由器或者防火墙上来完成,不建议在三层交换机上配置

4、NAT有3大类

        1)静态NAT(1对1映射)

        适合部署内网服务器,外网访问内网的服务器

        2)动态NAT(淘汰了)

        3)PAT(端口地址转换,多对一)

                PAT也称为端口复用技术,内网的PC用同一个公网ip访问互联网,互联网回包给内网通过端口号区分具体PC(端口号是路由器随机更改的)

                端口号:0-65535 

路由器的工作原理 :

        数据帧内网到外网一个帧从内网到达路由器内网端口之后,路由器会判断帧头的目标MAC地址是不是自己,是解封装(拿掉帧头) 然后数据包进入路由器内部开始路由,路由完成之后这个包会被路由到出接口,如果这个接口是外网接口就会检查NAT地址表准备做NAT地址转换,这个转换会对包的源IP进行动态地址转换,然后再发出去。

        数据帧外网到内网一个帧从外网到达路由器的外网端口之后,还是判断目标MAC地址让后解封装,检查NAT地址表,准备对目标IP地址进行地址转换(转换成对应内网地址)转换完成之后路由数据到对应的接口。

        注意:无论是内网到外网还是外网到内网最后的地址转换都是在外网的端口上完成的

 5、NAT命令(路由器是先路由数据,发现出接口设置了NAT才会做NAT转换)

        1)定义内网端口

                conf  t            # 进入全局配置模式

                int f0/0          # 进入需要配置的端口

                ip nat inside    # 定义层内网端口

                exit                 # 退到上一级

        2)定义外网端口

                conf  t

                int f0/1

                ip nat outside   # 定义层外网端口

                exit

         3)配置PAT(内到外上网使用)

                定义内部地址池

                conf  t

                acc 1 permit 192.168.0.0  0.0.255.255   # 将 192.168开头的ip地址加入,1号地址池内,一般要加入公司所有员工ip,不然是不会被转换成公网ip那就不能上网,0.0.255.255 是反子网掩码,0.0.255.255的作用是只检查前面两位IP,也就是只检查192.168.后面的忽略,只要这两位匹配上了就可以认定该IP属于这个地址池

                做PAT动态映射(映射到外网端口)

                ip  nat   inside   source  list  int  f0/1 overload   # 源ip地址如果在地址池1中,就允许使用f0/1接口上的公网ip地址做替换,然后在做端口转换

                exit                 # 退到上一级

        4)配置静态端口转换(外到内,一般用来部署内网服务器

                ip nat inside source static tcp 192.168.1.3 80  100.1.1.2 80  # 将192.168.1.3的tcp服务的80端口映射到100.1.1.2的80端口上,也就是说如果外网的人访问 100.1.1.2的80端口,就相当于访问192.168.1.3的80端口,如果想把多个服务器部署到同一公网IP上就改一下后面的端口号就好如: ip nat inside source static tcp 192.168.1.66 80  100.1.1.2 81,缺点是以后别人访问192.168.1.66 80,要输入100.1.1.2:81,80端口是默认端口是可以不写的

                exit                 # 退到上一级 

        5)查看/删除NAT表

                sh ip nat translations  # 查看 NAT 表,如果不是特点权模式前面要加do  sh ip nat translations 

                clear ip nat translation   * # 清空 NAT 表 *代表所有,该命令的意思是清除所有的地址转换。这时你再查询地址转换表是空的了。

  此时你可以在全局配置模式下通过no命令来清除掉你想要清除的NAT转换命令了。比如:

        (config)# no ip nat inside source list 1 

6、实验 

模拟现实中的内外网

        1)首先给所有PC、服务器、路由器端口配置IP地址并开启端口

假设:100.1.1.1是公司买的公网IP

        配置路由器的命令:

                en                                                                                          # 进入特权模式

                conf t                                                                                     # 进入全局配置模式

                int  Fa0/x                                                                                # 进入需要配置的端口

                ip add ip地址 子网掩码(/24就是3个255,255.255.255.0) # 配置IP

                no shut                                                                                    # 开启端口

                exit                                                                                          # 退到上一级

                ip route 0.0.0.0  0.0.0.0 下一跳IP                                           # 配置默认路由

               ip route 目标网段 子网掩码 下一跳IP                                     # 配置静态路由

 注意:配置完成后,现在的内外网是无法通信的,因为外网的包发个内网的设备,内网的包出不去,因为私有的IP无法在公网中生存

         2)配置第一个路由器让内网可以访问外网(俗称:上网)

                定义内网端口

                        en                     # 进入特权模式

                        conf t                # 进入全局配置模式

                        int fa0/0           # 进入需要设置的端口

                        ip nat inside    # 将端口定义为内网端口

                        exit

                定义外网端口

                        int fa0/1            # 进入需要设置的端口

                        ip nat outside  # 将端口定义为外网端口

                        exit                   # 退到上一级

                定义内部地址池

                        acc 1 permit any   # 将所有的ip地址都加入1号地址池内

                        exit                          # 退到上一级

                做PAT动态映射

                        conf  t

                        ip  nat   inside   source  list  int  fa0/1 overload   # 源ip地址如果在地址池1中,就允许使用f0/1接口上的公网ip地址做替换,然后在做端口转换

                 测试:使用内网PC使用命令:ping 目标ip

 注意不上网对应的ip记录一会就会消失

 注意:现在只是让内网可以上网,但是外网的设备是无法访问内网的服务

         3)给内网ip做映射,映射到公司买的公网ip:100.1.1.2 (这个ip不用配到端口上)

        配置静态端口转换(外到内,一般用来部署内网服务器 )

                conf  t

                ip nat inside source static tcp 192.168.1.222 80  100.1.1.2 80  # 将192.168.1.222的tcp服务的80端口映射到100.1.1.2的80端口上,也就是说如果外网的人访问 100.1.1.2的80端口,就相当于访问192.168.1.222的80端口

        如果需要部署两个或更多内网服务器可以部署在同一公网ip,更改命令的端口号就行如:ip nat inside source static tcp 192.168.1.223 80  100.1.1.2 81  或部署在多个公网ip上,区别:同一个公网IP部署了多个服务器,那除了80端口的服务器,其他服务器访问时需要加端口号如:100.1.1.2:81

然后给ip为192.168.1.222的服务器部署一下网页,测试一下

简单的HTML

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>三角制作</title>
    <style>
        .box1 {
            width: 0;
            height: 0;
            border-top: 100px solid pink;
            border-right: 100px solid red;
            border-bottom: 100px solid blue;
            border-left: 100px solid green;
        }

        .box2 {
            width: 0;
            height: 0;
            line-height: 0;
            font-size: 0;
            /*                  透明色 */
            border: 50px solid transparent;
            border-left-color: pink;
            margin: 100px auto;
        }

        .jido {
            position: relative;
            width: 120px;
            height: 249px;
            background-color: pink;
        }

        .jido span {
            position: absolute;
            top: -10px;
            right: 15px;
            width: 0;
            height: 0;
            /* 为了照顾兼容性 */
            line-height: 0;
            font-size: 0;
            /*                  透明色 */
            border: 5px solid transparent;
            border-bottom-color: red;
        }
    </style>
</head>

<body>
    <div class="box1"></div>
    <div class="box2"></div>
    <div class="jido">
        <span></span>
    </div>
</body>

</html>

 将上面的HTML的代码替换掉原来的代码

 使用外网的PC,在浏览器输入公司买的公网ip:100.1.1.2 测试访问内网服务器

  • 4
    点赞
  • 31
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

狗蛋的博客之旅

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值