CentOS 7.6 内网穿透服务lanproxy部署

在很多场景下内网穿透都是我们常常遇到的需求,之前也用过花生壳、ngrok、FRP 等等一些工具,但是由于限速、收费、安全各方面因素只好放弃了。

近期无意间看到 「传送门:lanproxy」 这款开源工具,正好刚免费购置了一台华为云主机服务器,正好可以实现内网穿透。

一、概述

1、什么是内网穿透服务

内网穿透,即NAT穿透,网络连接时术语,计算机是局域网内时,外网与内网的计算机节点需要连接通信,有时就会出现不支持内网穿透。

2、什么是lanproxy

lanproxy 是一个将局域网个人电脑、服务器代理到公网的内网穿透工具,目前仅支持 tcp 流量发,可支持任何 tcp 上层协议(访问内网网站、本地支付接口调试、ssh 访问、远程桌面…)。目前市面上提供类似服务的有花生壳、TeamView、GoToMyCloud 等等,但要使用第三方的公网服务器就必须为第三方付费,并且这些服务都有各种各样的限制,此外,由于数据包会流经第三方,因此对数据安全也是一大隐患。https://lanproxy.io2c.com

3、内网穿透原理

内网穿透的原理如下图所示:

CentOS 7.6 内网穿透服务lanproxy部署_局域网

  1. 用户访问我们的服务器,这个服务器是有公网IP的,所以用户可以无压力访问
  2. 服务器与本地电脑保持长链接,当有请求的时候,服务器将请求转发到我们的本地电脑
  3. 本地电脑将响应回复给服务器
  4. 服务器将响应回复给用户

二、开始部署

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 ~]

2、安装
[root@internet-yanmb ~]

3、启动doker、nginx
[root@internet-yanmb ~]
[root@internet-yanmb ~]

2.2 通过 Docker,启动 lanproxy 服务

[root@internet-yanmb ~]

CentOS 7.6 内网穿透服务lanproxy部署_java_02

2.3 输入你的公网服务器 IP:8090

默认 密码 admin/admin

CentOS 7.6 内网穿透服务lanproxy部署_nginx_03

2.4 Nginx 反向代理配置域名 (可选)

在上一步,我们通过 docker 启动了一个 lanproxy 环境,但是只能通过IP地址来访问,配置Nginx反向代理只是起到域名访问功能。

vim /etc/nginx/conf.d/lanproxy.didi.cn.conf

server {
listen 80;

server_name lanproxy.didi.com;
charset utf-8;
location / {
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header Host $http_host;

proxy_pass http://127.0.0.1:8090;
client_max_body_size 35m;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}
}

配置内网服务代理

vim etc/nginx/conf.d/kodcloud.didi.cn.conf

server {
listen 80;

server_name kodcloud.didi.cn;
charset utf-8;
location / {
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header Host $http_host;

proxy_pass http://127.0.0.1:9000;
client_max_body_size 35m;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}
}

127.0.0.1:port 这些端口都可以使用

CentOS 7.6 内网穿透服务lanproxy部署_maven_04

重启Nginx

systemctl restart nginx

2.5 继续配置 lanproxy 后台服务

配置一个客户端

CentOS 7.6 内网穿透服务lanproxy部署_nginx_05

添加配置

CentOS 7.6 内网穿透服务lanproxy部署_java_06

3、内网PC配置(Java 客户端)

3.1 安装jdk1.8环境


https://www.oracle.com/java/technologies/javase/javase-jdk8-downloads.html

tar -zxvf jdk-8u281-linux-x64.tar.gz -C /usr/local/


vim /etc/profile
export JAVA_HOME=/usr/local/jdk1.8.0_281/
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
export PATH=${JAVA_HOME}/bin:$PATH


source /etc/profile


java -version


update-alternatives --install /usr/bin/java java /usr/local/jdk1.8.0_181/java 300
update-alternatives --install /usr/bin/javac javac /usr/local/jdk1.8.0_181/bin/javac 300

3.2 安装maven 环境

http://maven.apache.org/download.cgi 下载maven。


wget https://mirrors.bfsu.edu.cn/apache/maven/maven-3/3.6.3/binaries/apache-maven-3.6.3-bin.tar.gz


mkdir /opt/maven
tar zxvf apache-maven-3.6.0-bin.tar.gz -C /opt/maven


vim /etc/profile
export M2_HOME=/opt/maven/apache-maven-3.6.3
export CLASSPATH=$CLASSPATH:$M2_HOME/lib
export PATH=$PATH:$M2_HOME/bin


source /etc/profile


mvn -v



<localRepository>maven/reposity</localRepository>
----------------------------------------------------
<mirror>
<id>alimaven</id>
<name>aliyun maven</name>
<url>http://maven.aliyun.com/nexus/content/groups/public/</url>
<mirrorOf>central</mirrorOf>
</mirror>
----------------------------------------------------
vim /opt/maven/apache-maven-3.6.3/conf/settings.xml

在这里插入代码片CentOS 7.6 内网穿透服务lanproxy部署_maven_07

CentOS 7.6 内网穿透服务lanproxy部署_nginx_08

验证内网服务真实有效

CentOS 7.6 内网穿透服务lanproxy部署_java_09

3.3 运行 lanproxy client 服务


mkdir /appstorage/ && cd /appstorage
git clone https://github.com/ffay/lanproxy.git lanproxy

cd lanproxy
mvn package

打包完成之后,客户端文件会出现在 distribution/proxy-client-0.1 目录下,打开之后有是个文件夹:bin、conf、lib和log,配置信息在 conf/config.properties 文件内,根据前面服务端的配置信息修改一下。

vim distribution/proxy-client-0.1/conf/config.properties


client.key=ca670d0e95fb4ad68626d174ed357efe


ssl.enable=false
ssl.jksPath=test.jks
ssl.keyStorePassword=123456


server.host=123.60.x.x



server.port=4900

客户端启动

cd distribution/proxy-client-0.1/conf
bash bin/startup.sh


echo "/usr/bin/bash bin/startup.sh" >> /etc/rc.local
chmod a+x /etc/rc.d/rc.local

4、客户端测试访问

本地host解析 kodcloud.didi.cn

CentOS 7.6 内网穿透服务lanproxy部署_maven_10

成功

也可以通过IP地址访问

公网IP:9000

CentOS 7.6 内网穿透服务lanproxy部署_maven_11

5、内网穿透PC的22端口

5.1 进入jupyter 添加代理规则,访问公网IP:端口

CentOS 7.6 内网穿透服务lanproxy部署_java_12

5.2 验证

CentOS 7.6 内网穿透服务lanproxy部署_局域网_13

原文链接:https://blog.51cto.com/u_14842009/5146039

© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享