什么是NAT? 为什么需要NAT? 下面我们就详细的了解一下。

为什么需要nat 以为我们的IPv4 地址有限 不可能全世界的人没人分一个也没关系,如果够全世界每人一个 我们就不需要nat了你只要知道我的ip就可以找到我了。 正式给予这种ipv4的局限性,为了节省公网ip 就必须有一种个丝网和公网转换的方式,这种方式就是NAT. 因此大家也就明白了ipv6 为什么可以不走nat 而直接走 route 的原因了吧。 因为他的IP地址够用。 这个在做ipv6的router是就可以在kernel 中不开启ipv6的nat。

ok 清楚了什么是nat 和nat的用途,下来我们了解一下 nat 的类型:

1. 对称行(Symmetric nat)

2. 锥形nat(cone nat)

什么是对称型nat 呢? 就是内网同一ip 和端口发往 不同外网的ipx + port x 时 在route 端(nat)都会映射成ipnat + 不同的端口。 形如下:

内网A + port(2000) ---> nat (5000) ---> 外网 C + port (4000)

内网A + port(2000) ---> nat (5001)---> 外网 D + port (4000)

内网A + port(2000) ---> nat(5002) ---> 外网 C + port (4001)

内网A + port(2000) ---> nat(5003) ---> 外网 D + port (4001)

内网B + port(2000) ---> nat (5004)---> 外网 C + port (4000)

什么时锥形呢? 就是内网同一ip 和端口发往不同的外网的ipx+ port x 时都会在 route端(nat) 都会映射成相同的ip + 相同的端口。形如下:

内网A + port(2000) ---> nat (5000) ---> 外网 C + port (4000)

内网A + port(2000) ---> nat (5000)---> 外网 D + port (4000)

内网A + port(2000) ---> nat(5000) ---> 外网 C + port (4001)

内网A + port(2000) ---> nat(5000) ---> 外网 D + port (4001)

内网B + port(2000) ---> nat (5001)---> 外网 C + port (4000)

但是cone nat 有分为:

1. full cone nat

2. restricted cone nat

3. port restricted cone nat

我们详细的了解一下各cone nat 的不同:

1. full nat 就是 只要是有内网的ip +port 向外网 ipx + portx 发送了包,在nat 上开了映射 natport,之后不管是哪个外网ip 和那个外网的port 只要向 nat port 发包 内网 ip 就会在 port 上收到包。

如下图有下面的映射关系:

内网A + 2000 ---> NAT (5000) ---> 外网 B + 6000

内网A + 2000 ---> NAT (5000) ---> 外网 B + 7000

内网A + 2000 ---> NAT (5000) ---> 外网 C + 6000

当内网A + 2000 ---> NAT (5000) ---> 外网 B + 6000 发包后,无论 B+6000 --> NAT (5000) 还是 B+7000 --> NAT(5000) 还是 C + 6000 -->NAT(5000) 内网A 都可以收到packets,也就是讲full cone nat 不论是那个外网ip 或那个外网的port 只要你向NAT 的 5000 发包 我内网的 A 就可以在 2000口收到包,当然忽视掉firewall 在这里的作用。

2.  restricted cone nat 就是ip restricted cone nat 因为内网的收包现在在 发往外网的ip那里, 就是只有在内网向那个外玩的ip 发过报之后 她只能接受从那个外网ip 发来的包 外网的port 没有限制,只要你向nat 的映射port 发就可以了。

如图有如下nat映射关系:

内网A + 2000 ---> NAT (5000) ---> 外网 B + 6000

内网A + 2000 ---> NAT (5000) ---> 外网 B + 7000

内网A + 2000 ---> NAT (5000) ---> 外网 C + 6000

当内网A + 2000 ---> NAT (5000) ---> 外网 B + 6000 发包后,无论 B+6000 --> NAT (5000) 还是 B+7000 --> NAT(5000)内网A 都可以收到packets,但是C + 6000 -->NAT(5000) 也就是讲restricted  cone nat 不论是那个port 只要是我发送的目的ip + 任意port (必须有nat 映射关系)向NAT 的 5000 发包 我内网的 A 就可以在 2000口收到包,当然忽视掉firewall 在这里的作用。

3. port restricted cone nat 是更严格的 cone nat 他比restricted 更严格不仅要求 是ip 必须是内网通讯的dest ip 还要求port 是内网的通讯的port。向nat 的通讯port 发包 内网的 才能收到包。

如图有如下nat映射关系:

内网A + 2000 ---> NAT (5000) ---> 外网 B + 6000

内网A + 2000 ---> NAT (5000) ---> 外网 B + 7000

内网A + 2000 ---> NAT (5000) ---> 外网 C + 6000

当内网A + 2000 ---> NAT (5000) ---> 外网 B + 6000 发包后,只有 B+6000 --> NAT (5000)  发的包内网A 才可以收到packets,无论是B+7000 --> NAT(5000)还是C + 6000 -->NAT(5000) 向nat 法包内网都无法收到。 也就是讲port restricted  cone nat 是我发送的目的ip + 外网接受的port (必须有nat 映射关系)向NAT 的 5000 发包 我内网的 A 就可以在 2000口收到包,当然忽视掉firewall 在这里的作用。

Linux NAT 类型详解相关推荐

  1. 国内Linux认证类型详解

    国内Linux认证类型详解  提供多层次服务方案的拓林思 Linux认证介绍 作为Linux行业的佼佼者,拓林思推出的TLCE认证是世界上最具有权威性的Linux认证之一. TLCE认证简介 TLCE ...

  2. Linux文件类型详解

    在Linux中一切都是文件,但文件都得有类型.那如何查看文件是什么类型了?在Linux中可以使用以下命令 ls -l path 在显示文件的属性通常会以如下形式进行显示: drwxr-xr-x 第1个 ...

  3. Linux操作系统(详解及配置操作)

    Linux操作系统 重点:linux的安装 linux的常用指令 linux的网络配置 shell编程 难点:linux的磁盘分区 linux的shell编程 linux日志 1 linux基础篇 1 ...

  4. linux文件权限详解

    linux文件权限详解 一.文件和目录权限概述 在linux中的每一个文件或目录都包含有访问权限,这些访问权限决定了谁能访问和如何访问这些文件和目录. 通过设定权限可以从以下三种访问方式限制访问权限: ...

  5. linux uname 命令详解

    linux uname 命令详解 功能说明:显示系统信息. 语 法:uname [-amnrsv][--help][--version] 补充说明:uname可显示电脑以及操作系统的相关信息. 参 数 ...

  6. linux sort 命令详解(转 )

    linux sort 命令详解 sort是在Linux里非常常用的一个命令,管排序的,集中精力,五分钟搞定sort,现在开始! 1 sort的工作原理 sort将文件的每一行作为一个单位,相互比较,比 ...

  7. linux ifconfig 命令详解

    linux ifconfig 命令详解 功能说明:显示或设置网络设备. 语 法:ifconfig [网络设备][down up -allmulti -arp -promisc][add<地址&g ...

  8. Linux /dev目录详解和Linux系统各个目录的作用

    Linux /dev目录详解和Linux系统各个目录的作用 标签: linuxtcpfunctionclassfirefoxtimer 2012-01-11 23:08 45517人阅读 评论(2) ...

  9. linux系统安全详解

    linux系统安全详解 http://www.2cto.com/Article/201207/142181.html一,BIOS安全(硬件上的安全) 1,最基本最简单的安全配置,保障计算机硬件配置等不 ...

最新文章

  1. ValueError: urls must start with a leading slash
  2. 数据库持久层封装设计
  3. fabric 一个链码如何调用另一个链码
  4. matlab c++ 符号变量问题
  5. 初一七年级计算机信息全册教案,初一信息技术教案全一册
  6. python乐观锁和悲观锁
  7. 构建高性能ASP.NET站点 网站优化需要考虑的方面
  8. css高清动图,CSS3+PNG实现GIF动画效果
  9. java 最大子数组_[剑指offer题解][Java]连续子数组的最大和
  10. DJFP2FP2计算机电缆,ZR-DJFP2FP2-22 (ZR-DJFP2FP2-22计算机电缆)(百勤石油)
  11. 米斯特白帽培训讲义(v2)漏洞篇 提权
  12. ThinkPHP框架 _ 学习11
  13. iOS 代码命名规范 及Android 代码命名规范(1)iOS
  14. 浅谈新一代PGIS技术在智慧消防中的创新应用
  15. matplotlib 绘图可视化知识点整理
  16. 安装mysql提示:由于找不到 MSVCR100.dll
  17. Java讯序_java使用顺序表制作电子通讯录,实现添加,删除和排序的功能.
  18. 关于阿里云的一键部署工具【飞流】的使用(详细)
  19. PyCharm谷歌翻译插件Translation提示:更新 TKK 失败,请检查网络连接
  20. 机器视觉学习系列四:身份证识别

热门文章

  1. CCNP CISCO 路由器 BGP路由协议在GNS3player模拟器上的配置示例详解
  2. 我与Android有个约会
  3. CocosCreator物理小游戏实战-别离开碗(四)完结!
  4. EMDrive当然是不存在的
  5. Swing 各种组件组合大全
  6. 其实 家用计算机与普通计算机,拆解服务器,看看与普通计算机到底有什么区别?...
  7. Cobalt Strike 4.0渗透攻击工具
  8. 【PPT】Vue.js 团队成员蒋豪群:Vue 高效开发之路
  9. java 调和级数,Java实现蓝桥杯调和级数
  10. unity 接入shareSDK进行微信分享(记录)