我将做几篇关于NAT(网络地址转换)的文章,讨论它们的分类以及如何在Linux机器上创建一个NAT。这篇文章将介绍NAT的类型。

  一般来说,NAT是用来允许私人IP与互联网对话的。它也有一定的安全性,因为外人不能直接访问NAT内的机器(好吧,至少不容易)

一般来说,有4种NAT。让我们逐一了解它们。

  • 全锥式NAT(Full cone NAT):这也被称为一对一NAT。它基本上是简单的端口转发,其中有一个从客户ip:port到NAT的ip:port的静态绑定,任何来自互联网的人都可以写到NAT的ip:port,它将被转发给客户。这种NAT的使用频率很低。
  • (地址)受限制的锥形NAT((Address) Restricted cone NAT):在这种情况下,客户端只能接收来自它之前已经发送过数据包的主机的数据包。例如,如果上图中的客户端向地址为8.8.8.8的服务器发送数据包,那么只要源IP(8.8.8.8)保持不变,NAT将接受来自服务器任何端口的回复。
  • 端口限制的锥形NAT(Port Restricted cone NAT):在这种情况下,客户端只能接收来自它之前已经发送过数据包的主机的数据包,只要它们来自同一个服务器端口。例如,如果上图中的客户端向地址为8.8.8.8、端口为5555的服务器发送了一个数据包,那么NAT将只接受来自服务器5555端口的回复。这种NAT比地址限制型NAT更受限制。
  • 对称NAT(Symmetric NAT):一般来说,上述所有的NAT类型都保留端口。例如,如果客户从192.168.0.2:54321向8.8.8.8:80发送一个数据包,那么NAT通常会将192.168.0.2:54321映射到1.2.3.4:54321,保留端口号。但在对称NAT中,每个新连接都会选择一个随机端口。这使得端口预测非常困难,像UDP打洞这样的技术在这种情况下是失败的。

你怎么知道你在哪种NAT中?我已经写了一套脚本来确定这一点。

在一个可公开访问的服务器上运行server.py,在NAT内的客户端上运行client.py。确保UDP被允许进入公共服务器的5005端口(或者你可以在代码中改变端口)。

如果你发现脚本中有任何错误,请在评论中或Github上告诉我。

Types of NAT and How to determine the NAT Type(NAT的类型和如何确定NAT类型)相关推荐

  1. P2P内网穿透之Nat类型介绍及Nat类型检测16种NAT组合穿透操作指南整理

    目录 根据RFC 3489规定 Nat共分以下类型: 第一部分: NAT类型介绍 Full Cone NAT: Restricted Cone NAT: Port Restricted Cone NA ...

  2. iptables nat实验_【零基础学云计算】LVS负载均衡群集之NAT模式搭建 (实践篇)...

    实验原理图 实验环境 LVS调度器作为web服务器池的网关 LVS服务器配置两块网卡分别连接内外网 使用轮询(rr)调度算法 LVS负载调度器网段规划 内网33网关:192.168.144.1 外网3 ...

  3. Linux怎么检测nat类型,STUN(RFC3489)的NAT类型检测方法

    在现实Internet网络环境中,大多数计算机主机都位于防火墙或NAT之后,只有少部分主机能够直接接入Internet.很多时候,我们希望网络中的两台主机能够直接进行通信(即所谓的P2P通信),而不需 ...

  4. 虚拟机linux连不上网NAT,xshell连不上虚拟机linux的解决办法(用的默认NAT模式)...

    Android程序设计-简单手机通讯录 在微信中,手机QQ中你会发现软件读取手机通讯录这个功能,这个功能使得软件更好的与手机联系人绑定,从而达到分享,拨打电话,读取用户信息等操作.下面我们将通过一个d ...

  5. redux引用多个中间件_如何轻松创建您的第一个Redux中间件

    redux引用多个中间件 by Gabriele Cimato 加布里埃莱·西马托(Gabriele Cimato) 如何轻松创建您的第一个Redux中间件 (How to create your f ...

  6. Network Address Translation 网络地址转换

    NAT (Network AddressTranslation) NAT的本意是通过利用较少的公有IP地址来表示大量私有IP地址的方式来降低IP地址空间的耗用速度. NAT术语: CiscoNAT设备 ...

  7. 虚拟机nginx 服务器无法访问,VMware虚拟机上配置nginx后,本机无法访问问题(转载)...

    转自:http://www.server110.com/nginx/201407/10794.html 把nginx装在CentOS上,用本机访问虚拟机的时候却出现了不能访问的问题,查了资料以后,原来 ...

  8. OVS CT连接追踪实现NAT

    OVS CT连接跟踪(connection tracking) CT对于OVS来说就像一个第三方的模块,复用了内核的conntrack模块,内核跟踪一台机器的所有连接状态和会话,对流经这台机器的每一个 ...

  9. NAT类型、探测及穿透

    NAT总结比较全面参考:第五期(NAT专题)-新华三集团-H3C 1.NAT类型 1.1 NAT类型及分布统计 基本NAT,只做内网IP与公网IP的替换,网络层以上的部分不替换,即端口不变. 静态地址 ...

最新文章

  1. 动态规划——洛谷_P1057传球游戏
  2. SSH远程管理(用户登录控制及密码验证)
  3. 程序怎么才能把自己的删除掉?
  4. 20行python代码的入门级小游戏-用Python设计一个经典小游戏
  5. 《Selenium2自动化测试实战基于Python语言》读书笔记
  6. C语言 数组传递与值传递讲解
  7. 【数据结构与算法】之深入解析“石子游戏II”的求解思路与算法示例
  8. performance 查看页面性能
  9. 使用directX 7结合C#进行2D游戏编程
  10. Command(命令)--对象行为型模式
  11. puppet puppet模块、file模块
  12. linux内核学习笔记【一】临时内核页表 Provisional kernel Page Tables
  13. Java中Switch-Case用法小结
  14. boj 1348 网络流,从来没有一个网络流能让我如此泪流满面,这样的建图方式,仰慕dalong
  15. r7000屏幕亮度linux,联想legion R7000笔记本linux使用体验
  16. Mysql插入JSON串会被去一层转义
  17. 【自媒体营销神器】一键自动下载短视频并分发至长视频平台脚本开源展示
  18. [OpenCV实战]39 在OpenCV中使用ArUco标记的增强现实
  19. 【解题总结】SEERC 2019(Codeforces Gym 102392)
  20. java斗地主程序制作过程

热门文章

  1. 1月8日火箭vs凯尔特人
  2. JQuary属性操作
  3. WTH数(hrbustOJ月赛题目)
  4. Unity 打包EasyAR错误 Auto Graphics API
  5. word输入希腊字母
  6. 数据挖掘数据集下载资源
  7. Java压缩png图片文件大小,效果跟Tinypng压缩效果大致一样
  8. 在 Mac 上使用 Siri的方法
  9. imx6 yocto Wayland-Weston AGL image
  10. 常见编码方式(码表)