使用Lanproxy搭建搭建内网穿透平台

一、背景

在很多场景下内网穿透都是我们常常遇到的需求,例如微信公众号、小程序、微信支付开发,之前也用过花生壳、Sunny-Ngrok 、NATAPP等等一些工具,但是由于限速、收费各方面因素只好自己搭建一个。

二、概述

2.1、什么是内网穿透

内网穿透,也即 NAT 穿透,进行 NAT 穿透是为了使具有某一个特定源 IP 地址和源端口号的数据包不被 NAT 设备屏蔽而正确路由到内网主机。下面就相互通信的主机在网络中与 NAT 设备的相对位置介绍内网穿透方法。

UDP 内网穿透的实质是利用路由器上的NAT 系统。NAT 是一种将私有(保留)地址转化为合法IP地址的转换技术,它被广泛应用于各种类型 Internet 接入方式和各种类型的网络中。NAT可以完成重用地址,并且对于内部的网络结构可以实现对外隐蔽。

2.2、什么是Lanproxy

Lanproxy是一个将局域网个人电脑、服务器代理到公网的内网穿透工具,目前仅支持tcp流量转发,可支持任何tcp上层协议(ssh访问、web服务器访问、远程桌面…)。

目前市面上提供类似服务的有花生壳、TeamView、GoToMyCloud等等,但天下没有免费的午餐,要使用第三方的公网服务器就必须为第三方付费,并且这些服务器都有各种各样的限制,此外,由于数据包会流经第三方,因此对数据安全也是一大隐患。

作者gitee地址:https://gitee.com/fengfei/lanproxy

作者github地址:https://github.com/ffay/lanproxy

三、安装服务端

3.1、下载

下载服务端:https://file.nioee.com/d/2e81550ebdbd416c933f
选择 proxy-server-0.1.zip,下载到本地
在这里插入图片描述
将下载好的文件上传到服务器/opt/home/下

# 切换到/opt/home/下
cd /opt/home

# 解压
unzip -o proxy-server-0.1.zip

# 更改配置文件 进入proxy-server-0.1/conf目录下
 cd proxy-server-0.1/conf/

3.2、修改配置文件

server.bind=0.0.0.0
# 服务端接口 客户端连接使用
server.port=4900

server.ssl.enable=true
server.ssl.bind=0.0.0.0
server.ssl.port=4993
server.ssl.jksPath=test.jks
server.ssl.keyStorePassword=123456
server.ssl.keyManagerPassword=123456
server.ssl.needsClientAuth=false

config.server.bind=0.0.0.0
# 服务端后台管理端口
config.server.port=8090
# 用户名
config.admin.username=admin
# 密码
config.admin.password=admin

PS:记得防火墙放行端口

3.3、启动服务端

启动服务端需要java运行环境,没有的需要安装jdk

jdk安装教程:https://blog.csdn.net/qq_37242720/article/details/114064706

切换到/opt/home/proxy-server-0.1/bin目录下

cd /opt/home/proxy-server-0.1/bin

启动

sh startup.sh

在这里插入图片描述
提示如上,说明启动成功
启动服务端需要java运行环境,没有的需要自行安装一下!

3.4、添加客户端

通过 IP:8090(如果更改了端口,就用自定义的端口),访问后台,进行登陆
在这里插入图片描述
添加客户端
在这里插入图片描述
查看客户端的状态
在这里插入图片描述
给客户端添加配置
在这里插入图片描述
配置添加好的客户端
在这里插入图片描述
PS:记得防火墙放行端口

四、安装客户端

4.1、下载客户端

下载地址:https://file.nioee.com/d/2e81550ebdbd416c933f/
在这里插入图片描述

4.2、配置客户端

将下载好的压缩包解压,进入conf目录下,修改config.properties文件

# 这个key就是服务端中 客户端密钥
client.key=b1fab227c2db4eaf846aa16********
ssl.enable=false
ssl.jksPath=test.jks
ssl.keyStorePassword=123456

# 服务端的地址,也可以是域名
server.host=47.93.**.**

# 服务端的端口,参考服务端配置
#default ssl port is 4993
server.port=4900

4.3、启动客户端

进入bin目录,因为我的客户端是windows,所以直接双击startup.bat即可

弹出的窗口没有提示

4.4、测试客户端

这个时候进入服务端,就可经看到客户端在线
在这里插入图片描述
通过SpringBoot项目测试
1、添加一个SpringBoot项目
2、更改端口为9090

server:
  port: 9090

3、编写Controller

@RestController
public class HelloControlelr {
    
    

    @RequestMapping("/hello")
    public String hello(){
    
    
        System.out.println("hello world");
        return "hello world";
    }
}

4、浏览器测试
输入:http://IP:9999/hello
在这里插入图片描述
端口9999是服务端配置好的公网接口,具体根据自己的配置设置

到了这里,我们的代理就成功!

五、注意

如果客户端显示不在线需要检查以下几点

  • 服务端与客户端的连接端口是否开放或占用(默认的是4900)
  • 关于端口如何开放具体查看:Linux操作系统的使用-防火墙命令
  • 一些服务器还需要在控制台配置安全组
  • 客户端配置文件的秘钥是否正确
  • 客户端配置文件中的服务端IP是否正常

猜你喜欢

转载自blog.csdn.net/qq_37242720/article/details/118763634