博客竟然不显示更新的时间,只有个发布时间。看起来像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(公网变成私网,就是收包)。