在很多场景下内网穿透都是我们常常遇到的需求,之前也用过花生壳、ngrok、FRP 等等一些工具,但是由于限速、收费、安全各方面因素只好放弃了。
近期无意间看到 「传送门:lanproxy」 这款开源工具,正好刚免费购置了一台华为云主机服务器,正好可以实现内网穿透。
一、概述
1、什么是内网穿透服务
内网穿透,即NAT穿透,网络连接时术语,计算机是局域网内时,外网与内网的计算机节点需要连接通信,有时就会出现不支持内网穿透。
2、什么是lanproxy
lanproxy 是一个将局域网个人电脑、服务器代理到公网的内网穿透工具,目前仅支持 tcp 流量转发,可支持任何 tcp 上层协议(访问内网网站、本地支付接口调试、ssh 访问、远程桌面…)。目前市面上提供类似服务的有花生壳、TeamView、GoToMyCloud 等等,但要使用第三方的公网服务器就必须为第三方付费,并且这些服务都有各种各样的限制,此外,由于数据包会流经第三方,因此对数据安全也是一大隐患。https://lanproxy.io2c.com
3、内网穿透原理
内网穿透的原理如下图所示:
- 用户访问我们的服务器,这个服务器是有公网IP的,所以用户可以无压力访问
- 服务器与本地电脑保持长链接,当有请求的时候,服务器将请求转发到我们的本地电脑
- 本地电脑将响应回复给服务器
- 服务器将响应回复给用户
二、开始部署
1、准备环境
主机 | IP | 角色 | OS | 服务 |
---|---|---|---|---|
internet-yanmb | 外网IP | 云服务器 | centos 7.6 | docker(简化更多的配置,这里采用 docker 容器进行搭建); Nginx 环境 |
didi | 内网IP | 内网PC | centos 7.6 | Java JDK 1.8 Maven(包依赖管理工具) |
2、公网服务器配置(docker)
2.1 基础环境部署docker、nginx
1、安装依赖包
[root@internet-yanmb ~]# yum install -y yum-utils device-mapper-persistent-data lvm2
2、安装
[root@internet-yanmb ~]# yum install docker nginx
3、启动doker、nginx
[root@internet-yanmb ~]# systemctl start docker && systemctl enable docker
[root@internet-yanmb ~]# systemctl start nginx && systemctl enable nginx
2.2 通过 Docker,启动 lanproxy 服务
[root@internet-yanmb ~]# docker run -d --name lanproxy-server -p 8090:8090 -p 4900:4900 -p 4993:4993 -p