首页 > 其他分享 >nat是干什么的,为什么要有nat?以及谈谈ovs里使用ct实现nat功能

nat是干什么的,为什么要有nat?以及谈谈ovs里使用ct实现nat功能

时间:2023-01-12 00:56:03浏览次数:45  
标签:ovs 映射 ip 私网 ipv4 nat 公网 ct

博客竟然不显示更新的时间,只有个发布时间。看起来像2个月没更新一样,其实更新了几行呢。好几个东西想理一下,本来想和周记放一起了,但放一起就没有主题了。

当然一搜也有一些很好的博客,更详细:https://blog.csdn.net/gui951753/article/details/79593307 ,https://www.zhihu.com/question/31332694

我是想用自己的话去说一下,简单明了总结一下,并且还会说一下ovs怎么实现nat。

 

NAT

  在说之前要明了两个事情:

  1. 计算机上的技术,几乎都是为了解决出现的问题产生的,这是任何知识需要明白的根源。
  2. 自己的网络ip是私网ip,只能在小的局域网(Local Area Network ,简称 LAN)通信,想要在我们说的互联网(WAN)上冲浪,需要公网ip,也就是IANA(互联网数字分配机构)分配的ipv4地址。

  用一句话说nat,那就是因为ipv4的地址不够用,没办法每个人都用公网ip上网,nat可以让多个地址映射成一个地址,就是把多个私网ip映射成一个公网ip。这样ipv4就又能用起来了!

    

 

 

 

 

 

  直接说三种nat:

  1. 静态nat:一对一,把一个私网ip映射成一个公网ip,这样做主要为了隐藏自己的真实ip,需要自己配置路由器。

      

  2. 动态nat:多私网ip对多公网ip,有个公网ip池子,给每个局域网内的主机分配一个私网ip,然后动态映射。比如有一台主机没了, 那就又可以空出来一个公网ip,多了一台主机,就会从公网ip池子里拿出来一个ip,动态添加一条映射, 无需自己配置路由。

 

      

 

 

   3.NAPT( Network Address Port Translation )实际常用到的,可以真正节省公网ip的:这个也是动态的。前两个会把私网的ip映射成公网的ip,但这个会根据私网的(ip1, port1),映射成一个公网(ip1,port1)。当子网ip从一个port往外发包,到路由器会做个nat,找第一个可用的公网ip,再找到这个公网ip的第一个可以用的port,然后改成公网ip,port,并且会在路由器的nat表里生成记录,当收到包时候就可以反向nat,改成子网ip,port,这样就实现了通信。这样相当于可以把公网ip的资源用光,每个ip有64K+个端口可以用,(一共65535,除去前1024个不能用的)。

       

 

 

 

  到处都是nat,你在电脑命令行上输入ipconfig看到的命令和你在百度搜索ip查询显示你的ip不是一个ip,这就是运营商给你做了nat。早期可能有些人的路由器都有一个公网ipv4,但是后来ipv4的地址一般都是分给机构、公司、政府等。现在个人使用的网络一般都是这些公司提供的服务,你ipconfig看到的地址,只是运营商在这个子网分给你的一个地址,上网的时候,运营商会给你做nat的。

 

 

OVS的CT实现NAT

也有一个文章:https://blog.csdn.net/ambzheng/article/details/123438943

这里只是非常简单提一下,ovs作为一个虚拟交换机,可以自己定义网络包如何转发,那么也就可以做nat。OVS-CT里面记录了一个连接的状态,可以根据其中的信息做nat,比如知道书记包是来自于哪一个连接的方向决定做snat(把私网变成公网,就是往外发包)还是dnat(公网变成私网,就是收包)。

      

 

标签:ovs,映射,ip,私网,ipv4,nat,公网,ct
From: https://www.cnblogs.com/philo-zhou/p/17042691.html

相关文章

  • C++ STL的简单应用(vector容器专题)
    #include<iostream>#include<string>#include<stdlib.h>#include<vector>//#include<algorithm>usingnamespacestd;//vector容器的简单应用voiddemo1(){......
  • es7 依赖注入(Dependency Injection, DI)
    ES7中的依赖注入是一种技术,用于解决模块之间的耦合性问题。它允许我们将模块之间的依赖关系抽象化,从而使它们更容易重构,测试和更新。它也可以帮助我们更好地管理应用程序......
  • React核心概念与JSX
    React概况React是一个只用来写HTML的UI页面的JS库,在MVC设计模式中它只相当于View,故:它并不是一个框架(MVC架构角色设计)。React组件内数据改动会自动更新到屏幕上。React项......
  • spring boot——请求与参数校验——response重定向——response.sendRedirect("/test1
               代码:packageorg.example.controller;importorg.springframework.web.bind.annotation.RequestMapping;importorg.springframe......
  • class(类)中object是什么意思
    python的class(类)中的object是什么意思?写object和不写object有什么区别?示例代码classTest:name="libai"classTest1(object):name='libai'if__......
  • vulnhub靶场之FUNBOX: UNDER CONSTRUCTION!
    准备:攻击机:虚拟机kali、本机win10。靶机:Funbox:UnderConstruction!,下载地址:https://download.vulnhub.com/funbox/Funbox10.ova,下载后直接vbox打开即可。知识点:osComm......
  • SYUCT acm第八次限时训练题解
    SYUCTacm第八次限时训练题解MakeitBeautiful题目大意code#include<bits/stdc++.h>usingnamespacestd;constintN=100;inta[N];intb[N];voidsolve()......
  • 《Spring in action 4》(二)装配Bean
    装配Bean莫道君行早更有早行人文章目录​​装配Bean​​​​Spring装配Bean的三种方式​​​​XML显示配置​​​​Java显示配置​​​​自动发现和装配​​​​属性注入​......
  • java高级--反射(reflect)
    1.获取Class对象的几种方式/***获取Class对象的三种方式*1Object——>getClass();*2任何数据类型(包括基本数据类型)都有一个“静态”的class属性*3通过Class类......
  • An Introduction to JavaScript
    AnIntroductiontoJavaScriptAnIntroductiontoJavaScriptLet’sseewhat’ssospecialaboutJavaScript,whatwecanachievewithit,andwhatothertechn......