前言 这是在Rat大佬博客发现的一个软件挺不错的,就在这里转载过来了,它可以将局域网服务器代理到公网的内网穿透工具,支持转发基于TCP等协议的报文,之前服务端并未开源,由作者免费提供服务,现在服务端代码已经开源了,而且带Web管理面板,我们就可以拿来自建一个内网穿透服务器,使用效果还不错。
截图
安装服务端 Github地址: https://github.com/Wisdom-Projects/holer
支持系统: Windows
、Linux
系统,这里只说Linux
搭建,建议直接Debain
。
说明: 由于该面板使用的JAVA
,所以还是比较消耗内存的,如果内存太小,建议先加一点虚拟内存,可以使用Swap
一键脚本→传送门 。
1、安装JAVA
1 2 3 4 5 6 #CentOS系统 yum install java-1.8.0-openjdk -y #Debian/Ubuntu系统 apt update apt install default-jdk -y
2、安装Mysql
1 2 3 4 5 6 7 8 9 10 11 12 13 14 #CentOS 6系统 rpm -ivh http://repo.mysql.com/mysql-community-release-el6-5.noarch.rpm yum install mysql-community-server -y service mysqld start chkconfig mysqld on #CentOS 7系统 rpm -ivh http://repo.mysql.com/mysql-community-release-el7-5.noarch.rpm yum install mysql-community-server -y systemctl start mysqld systemctl enable mysqld #Debian/Ubuntu系统 apt install mysql-server -y
如果Debian
或Ubuntu
在安装期间有弹出窗口要你输入密码就设置一个,没有的话密码就是空格。
修改数据库密码:
1 2 3 4 5 6 7 8 9 #CentOS系统,第一行登录数据库的时候直接Enter跳过,第二行moerats为要修改的密码,自行修改 mysql -u root -p mysql> set password=password("moerats"); mysql> exit; #Debian、Ubuntu系统,第一行登录数据库的时候直接Enter跳过,第二行moerats为要修改的密码,自行修改 mysql -u root -p mysql> UPDATE mysql.user SET authentication_string=PASSWORD('moerats'), PLUGIN='mysql_native_password' WHERE USER='root'; mysql> exit;
最后修改过密码的还需要重启数据库:
1 2 3 4 5 #CentOS系统 service mysqld restart #Debian和Ubuntu系统 systemctl restart mysql
此时Mysql
算是安装完成了。
3、安装源码 安装unzip
:
1 2 3 4 5 #CentOS系统 yum install unzip -y #Debian和Ubuntu系统 apt install unzip -y
下载源码:
1 2 3 4 5 6 wget https://github.com/wisdom-projects/holer/releases/download/v1.1/holer-server-1.1.zip unzip holer-server-1.1.zip && rm -rf holer-server-1.1.zip #移动到opt目录,然后进入到源码文件夹 mv holer-server /opt/holer && cd $_ #修改配置文件 nano resources/application.yaml
关键配置如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 #运行端口 server: port: 600 #Mysql数据库用户名和密码 spring: datasource: username: root password: moerats #域名和nginx目录,可以直接全部删掉,用ip不需要,域名的话,有点不好用 holer domain: name: your-domain.com nginx: #home: /usr/local/nginx home: C:/nginx-1.14.2
修改后使用Ctrl+x
、y
保存退出,或者可以直接使用FTP
等工具直接编辑。
再修改管理员用户名和密码,使用命令:
1 nano resources/conf/holer-data.sql
admin
和admin123
为管理员用户名和密码,自行修改,修改完成后同样的使用Ctrl+x
、y
保存退出。
最后启动:
1 2 chmod +x holer ./holer start
如果想开机自启的话,这里可以建一个简单的systemd
配置文件,且不适用CentOS 6
,使用命令:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 #将以下代码一起复制到SSH运行 cat > /etc/systemd/system/holer.service <<EOF [Unit] Description=holer After=network.target [Service] Type=simple ExecStart=$(command -v java) -server -Xms256m -Xmx512m -jar holer-server-1.1.jar WorkingDirectory=/opt/holer Restart=on-failure [Install] WantedBy=multi-user.target EOF
然后启动并设置开机自启:
1 2 systemctl start holer systemctl enable holer
然后就可以使用ip:600
访问管理界面了,具体端口以你修改的为准。
然后CentOS系统建议关闭防火墙使用,或者打开部分端口也行,关闭命令:
1 2 3 4 5 6 7 #CentOS 6系统 service iptables stop chkconfig iptables off #CentOS 7系统 systemctl stop firewalld systemctl disable firewalld
像阿里云等服务器,还需要去安全组那里开发下端口端。
客户端使用 首先我们需要去用户列表新建一个用户,然后再去端口映射选择该用户,新建一个穿透规则,这里根据需求自行选择,然后设置好时长。
然后就可以直接在客户端使用了,一般客户端有JAVA
和GO
版,使用JAVA
的话,需要先安装JAVA
环境,所以这里直接选择GO
版本,简单粗暴。
首先根据直接的系统和架构下载指定的GO
版客户端,每个压缩包里都包含32
位和64
位,下载地址→传送门 。
这里拿我们常见的Linux
服务器架构来说,直接使用命令:
1 2 3 4 5 6 7 8 #下载并解压 wget https://github.com/wisdom-projects/holer/raw/master/Binary/Go/holer-linux-x86.tar.gz tar -zxvf holer-linux-x86.tar.gz #32位启动,分别为访问秘钥和服务端ip地址 nohup ./holer-linux-386 -k 7aa8d973bc8e40 -s ip地址 & #64位启动 nohup ./holer-linux-amd64 -k 7aa8d973bc8e40 -s ip地址 &
如果是Windows
系统,先把压缩包下载并解压到D
盘根目录,然后按住Win+R
,输入cmd
进入命令窗口,使用命令:
1 2 3 4 5 6 7 #进入到D盘根目录 cd D:\ #32位启动,分别为访问秘钥和服务端ip地址 .\holer-windows-386.exe -k 7aa8d973bc8e40 -s ip地址 #64位启动 .\holer-windows-amd64.exe -k 7aa8d973bc8e40 -s ip地址
到这里基本上就运行成功了。
域名反代 如果你想使用域名来配置服务器面板的话,就需要安装Web
服务器了,这里就直接使用Nginx
。
1、安装Nginx
1 2 3 4 5 6 7 8 9 10 11 12 13 14 #CentOS 6系统 rpm -ivh http://nginx.org/packages/centos/6/noarch/RPMS/nginx-release-centos-6-0.el6.ngx.noarch.rpm yum install nginx -y service nginx start chkconfig nginx on #CentOS 7系统 rpm -ivh http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm yum install nginx -y systemctl start nginx systemctl enable nginx #Debian/Ubuntu系统 apt install nginx -y
2、申请SSL证书
这里就使用简单粗暴的webroot
方式签发Let's Encrypt
证书,首先解析好域名并生效。
安装letsencrypt
:
1 2 3 4 5 #CentOS系统 yum install letsencrypt -y #Debian/Ubuntu系统 apt install letsencrypt -y
申请SSL
证书:
1 2 3 4 5 #CentOS系统 letsencrypt certonly --webroot -w /usr/share/nginx/html --domain www.quchao.net #Debian/Ubuntu系统 letsencrypt certonly --webroot -w /var/www/html --domain www.quchao.net
请替换成自己域名后运行,期间会要你输入邮箱和A
选项啥的,申请后证书文件在/etc/letsencrypt/live
。
3、新建conf文件
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 #将下面域名修改成自己的,然后证书路径也修改下,再一起复制进SSH客户端运行 cat > /etc/nginx/conf.d/holer.conf << 'EOF' server { listen 443; server_name www.quchao.net; ssl on; ssl_certificate /etc/letsencrypt/live/www.quchao.net/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/www.quchao.net/privkey.pem; ssl_session_timeout 5m; ssl_protocols TLSv1 TLSv1.1 TLSv1.2; ssl_prefer_server_ciphers on; ssl_ciphers "EECDH+CHACHA20:EECDH+CHACHA20-draft:EECDH+AES128:RSA+AES128:EECDH+AES256:RSA+AES256:EECDH+3DES:RSA+3DES:!MD5"; ssl_session_cache builtin:1000 shared:SSL:10m; charset utf-8; location /{ proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; client_max_body_size 1024m; client_body_buffer_size 128k; proxy_connect_timeout 90; proxy_send_timeout 90; proxy_read_timeout 90; proxy_buffer_size 4k; proxy_buffers 4 32k; proxy_busy_buffers_size 64k; proxy_temp_file_write_size 64k; proxy_pass http://127.0.0.1:600/; } error_page 500 502 503 504 /50x.html; location = /50x.html { root html; } } server { listen 80; server_name www.quchao.net; rewrite ^(.*) https://www.quchao.net$1 permanent; } EOF
重启Nginx
生效:
最后连接的时候,就可以填域名了。
最后要是觉得搭建服务器麻烦,或者不想搭建的,可以使用作者提供的免费服务,更多使用方法移至→传送门 。
本文为选摘文章,版权归 Rat’s 所有,转载请注明出处!