这是我参与8月更文挑战的第2天,活动详情查看:8月更文挑战
啥是内网穿透
百度百科
内网穿透,也即 NAT 穿透,进行 NAT 穿透是为了使具有某一个特定源 IP 地址和源端口号的数据包不被 NAT 设备屏蔽而正确路由到内网主机。
大白话
就是把原本访问不了内网网络通过某种方式让外网能够访问到 比如说你的手机
你的手机能上网吧,手机访问百度也能查到ip地址吧,但是外网却不能访问你手机的网络
现在我通过内网穿透就可以做到
分析
网上有很多原理图,但是说实话鄙人天资愚钝没咋看懂,在网上疯狂百度和个人的验证之后,得出如下简图
其实很简单
想让我们内网的服务能被外网访问到,只需要一个能被公网访问的服务器就行
- 内网服务器和外网的服务器建立tcp通讯
- 用户想访问内网服务器时候,需要先请求外网服务器,外网服务器再将请求的数据原样推送给内网的服务器
- 同理当内网服务器要将数据推送给用户,也是原路返回,先给外网服务器,然后外网服务器在将数据给用户
验证
验证过程其实也非常简单,只需要验证下 内网服务器是不是和外网建立了tcp链接就知道了
这里我用的是natapp这个工具是基于 ngrok的
启动之后如图所示
此时需要知道上文说的外网服务器地址,通过 ping
iup4ue.natappfree.cc 就知道了
这时候打开
wireshark 抓包
ip.dst 是本地内网ip
ip.src 是外网服务器地址
这时候只需要在页面随便访问下
http://iup4ue.natappfree.cc/asdasdasdas
此时看 wireshark 应该有如下记录
在那一行右键 follow->http stream
可以看下如下
这样就证明了,数据是通过tcp通道传输的