开始前
先说下实现思路:我们使用socket 建立 nat server与nat client的长连接,nat server跑在有公网地址的机器上,nat client跑在需要暴露服务内网机器上,最终将内网服务暴露出去。
概念
外部的请求访问 <--> nat server <-socket-> nat client <--> 内网服务
socket: socket就是五元组,包含以下内容1)协议;2)本地地址; 3)外部地址; 4)状态;5)PID。(这里关注本地和外部地址中的 host
以及 监听端口
)
nat_server_host: 需要是个公网地址,比如10.10.2.2。
nat_server_port: 需要外部可以访问的端口,用于 NAT Client进行socket连接。
remote_port: 指由NAT Client向NAT Server发起注册请求时的端口,需要在NAT Server上暴露的端口,后续用户通过访问这个端口,穿透到内网的服务。
local_port: 指和NAT Client同机器,本地提供服务的端口。
实现和效果
操作步骤
需求:假设 需要将 自己设备上(只有内网