NGROK安装【搬瓦工服务器】【群晖客户端】

《NGROK安装【搬瓦工服务器】【群晖客户端】》

 

物料需求:

软件:

  • 67.0.0
  • WinSCP

服务器:

搬瓦工VPS【服务器系统版本centos6  x86

客户端:

黑群晖【系统X64】

  • 文件需求

ngrok.cfg

ngrok14.sh【安装go1.4.2需要】

ngrok.sh

资料整理来源:

#原创新人#搭建ngrok服务器实现内网穿透—黑群晖教程

https://post.smzdm.com/p/588765/

DSM6.2修改ROOT密码并获得权限

https://vipiu.net/archives/2019/04/04/1401.html

linux Vi操作和使用方法详解

https://blog.csdn.net/xie_xiansheng/article/details/78413306

Centos7搭建Ngrok

https://blog.csdn.net/u010887744/article/details/53957683

Linux查询进程和结束进程

https://www.cnblogs.com/liutao1122/p/8268932.html

 

 

步骤:

  • WinSCP上传sh   ngrok14.sh 到服务器root文件夹
  • PUTTY连线服务器 root登入   使用putty运行脚本安装

2-1提升sh脚本权限:chmod +x ngrok14.sh

2-2运行脚本:sh ./ngrok14.sh

选择安装依赖

2-3运行脚本:sh ./ngrok14.sh

选择安装git

2-4运行脚本:sh ./ngrok14.sh

选择安装go【此次安装的go1.4.2】

2-5 WinSCP连线服务器,把安装好的go【/usr/local/go】备份一个到root下面【root/go1.4.2/】

2-6 提升sh脚本权限:chmod +x ngrok.sh

2-7 运行脚本:sh ./ngrok.sh

选择安装go【此次安装的是go1.9.2】

2-8 WinSCP连线服务器,把安装好的go【/usr/local/go】备份一个到root下面【root/go-go1.9.2/】

3、NGROK安装

3-1返回git的上层目录:cd /usr/local/

3-2  git clone https://github.com/inconshreveable/ngrok.git

#不是所有者使用HTTPS方式或者SSH方式

如果报错: git clone: fatal: Unable to find remote helper for ‘https’

由于 Git configure 配置时没有设定 –with-curl –with-expat 造成

CentOS使用yum安装curl开发相关库后重新配置编译git即可:

命令:yum install libcurl-devel 随后cd到git目录make && make install等等..

3-3  生成自签名证书,

在生成证书时需要一个解析到服务器上的主域名,以”www.hdtvmv.com”为例:

cd ngrok

NGROK_DOMAIN=”www.hdtvmv.com”

openssl genrsa -out rootCA.key 2048

openssl req -x509 -new -nodes -key rootCA.key -subj “/CN=$NGROK_DOMAIN” -days 5000 -out rootCA.pem

openssl genrsa -out device.key 2048

openssl req -new -key device.key -subj “/CN=$NGROK_DOMAIN” -out device.csr

openssl x509 -req -in device.csr -CA rootCA.pem -CAkey rootCA.key -CAcreateserial -out device.crt -days 5000

 

将新生成的证书,替换掉assets/client/tls下的证书

cp rootCA.pem assets/client/tls/ngrokroot.crt

cp device.crt assets/server/tls/snakeoil.crt

cp device.key assets/server/tls/snakeoil.key

 

3-4编译ngrok服务端:

cd到ngrok目录

//指定环境变量位64位linux版本

GOOS=linux GOARCH=amd64 #如果是32位系统,这里GOARCH=386

make release-server

 

如果报错:-bash: make: command not found

因为安装系统的时候使用的是最小化mini安装,系统没有安装make、vim等常用命令,

直接yum安装即可:yum -y install gcc automake autoconf libtool make

编译会很慢(依赖git),耐心等待

这里会等很久:GOOS=”” GOARCH=”” go get github.com/jteeuwen/go-bindata/go-bindata

提速方案:翻墙or更改hosts(vim /etc/hosts,maybe需要reboot)

如果报错:fatal: unable to access ‘https://github.com/alecthomas/log4go/’

或其他下载失败,多半是由于GFW,重来一次获取就OK了。

正常情况下,在ngrok/bin/下会有ngrokd文件,这就是我们的服务端了。

 

3-5 编译客户端(go >= 1.6)

cd到ngrok目录

(1)若是客户端使用与服务器相同系统可直接使用 make release-client指令。

(2)若是不同系统,则需要通过go中的make.bash手工编译出跨编译工具。

在$GOROOT/src目录下找到make.bash文件,通过设置GOOS和GOARCH来完成生成跨编译工具:

#linux

make release-client

#windows

GOOS=windows GOARCH=amd64 make release-client

#mac

GOOS=darwin GOARCH=amd64 make release-client

编译客户端ngrok(不同系统不同的命令如下)

32位linux客户端: GOOS=linux GOARCH=386 make release-client

64位linux客户端: GOOS=linux GOARCH=amd64 make release-client

32位windows客户端: GOOS=windows GOARCH=386 make release-client

64位windows客户端: GOOS=windows GOARCH=amd64 make release-client

32位mac平台客户端:GOOS=darwin GOARCH=386 make release-client

64位mac平台客户端:GOOS=darwin GOARCH=amd64 make release-client

ARM平台linux客户端: GOOS=linux GOARCH=arm make release-client

我这里是32位linux和64位linux客户端编译

GOOS=linux GOARCH=amd64 make release-client

正常情况下,在cd usr/local/ngrok/bin/linux_amd64/下,有刚生成的ngrok,下载备用。

 

3-6服务器启动80,443,服务器默认需要修改为8888,8889【改成你喜欢的也可以】不然要做web网站的话可能没有80端口了

/usr/local/ngrok/bin/ngrokd -domain=”www.hdtvmv.com” -tlsCrt=”/usr/local/ngrok/device.crt” -tlsKey=”/usr/local/ngrok/device.key” -httpAddr=”:8888″ -httpsAddr=”:8889″ -tunnelAddr=”:4443″

测试下服务端是否正常运行

以上服务端和客户端都编译好可以正常运行了,需要服务端开机启动的

vi /etc/rc

末尾exit前新建一行添加

/usr/local/ngrok/bin/ngrokd -domain=”www.hdtvmv.com” -tlsCrt=”/usr/local/ngrok/device.crt” -tlsKey=”/usr/local/ngrok/device.key” -httpAddr=”:8888″ -httpsAddr=”:8889″ -tunnelAddr=”:4443″

reboot后查看进程是否启动成功

3-7客户端调试

客户端需要两个文件,一个是刚刚在vps编译并下载到本地的客户端程序,另一个是ngrok.cfg配置文件(附件带),配置文件的作用是指定穿透什么端口

1、使用root用户登录群晖6.1(不会的自行百度。。我懒 )

2、新建一个ngrok的文件夹:mkdir ngrok

3、使用winscp把本地的ngrok和ngrok.cfg拉到刚刚新建的文件夹中

4、ngrok.cfg文件的配置说明,自行根据需求修改

 

涂抹处需要填你解析的域名,端口号为默认的4443

我这里穿透了两个端口“nas”和“rtnas”分别是群晖的5000和中继路由(192.168.7.2)的80端口

remote_port为远程端口,即服务器端口

tcp:5000为使用tcp协议,不填IP即为本地nas端口50000

远程访问时,输入你的域名:端口号即可

当然可以用http协议,但是我的域名没有备案,打不开。。。

ps:编写这个cfg文件不可用tab键!不可用tab键!不可用tab键!只能用空格!!!

5、提升ngrok文件夹的权限:chmod 777 -R ngrok

6、开始测试运行

/root/ngrok/ngrok -config /root/ngrok/ngrok.cfg start nas rtnas

ps:这里命令行最后的nas和rtnas和配置文件相同,代表你启动哪些端口

如无意外,显示online即成功

测试下“域名:7777”,顺便测试速度,成功!

 

7、最后需要客户端开机启动

vi /etc/rc

末尾exit前新建一行添加

/root/ngrok/ngrok -config /root/ngrok/ngrok.cfg start nas rtnas

 

终~

以上,感谢 sunny大神 的一键脚本

所有附件链接

https://pan.baidu.com/share/init?surl=pLjuNOn

密码: sffp

 

 

 

 

 

PS:

域名申请自己百度

域名A记录到服务器IP就好。

贴一张我自己的截图

【图片上不来,就不贴了】

 

附录

ngrok14.sh

#!/bin/bash
# -*- coding: UTF-8 -*-
#############################################
#作者网名:Sunny                         #
#作者博客:www.sunnyos.com                    #
#作者QQ:327388905                           #
#作者QQ群:57914191                           #
#作者微博:http://weibo.com/2442303192        #
#############################################
# 获取当前脚本执行路径
SELFPATH=$(cd “$(dirname “$0″)”; pwd)
GOOS=`go env | grep GOOS | awk -F\” ‘{print $2}’`
GOARCH=`go env | grep GOARCH | awk -F\” ‘{print $2}’`
echo ‘请输入一个域名’
read DOMAIN
install_yilai(){
yum -y install zlib-devel openssl-devel perl hg cpio expat-devel gettext-devel curl curl-devel perl-ExtUtils-MakeMaker hg wget gcc gcc-c++ unzip
}

# 安装git
install_git(){
unstall_git
if [ ! -f $SELFPATH/git-2.6.0.tar.gz ];then
wget https://www.kernel.org/pub/software/scm/git/git-2.6.0.tar.gz
fi
tar zxvf git-2.6.0.tar.gz
cd git-2.6.0
./configure –prefix=/usr/local/git
make
make install
ln -s /usr/local/git/bin/* /usr/bin/
rm -rf $SELFPATH/git-2.6.0
}

# 卸载git
unstall_git(){
rm -rf /usr/local/git
rm -rf /usr/local/git/bin/git
rm -rf /usr/local/git/bin/git-cvsserver
rm -rf /usr/local/git/bin/gitk
rm -rf /usr/local/git/bin/git-receive-pack
rm -rf /usr/local/git/bin/git-shell
rm -rf /usr/local/git/bin/git-upload-archive
rm -rf /usr/local/git/bin/git-upload-pack
}

# 安装go
install_go(){
cd $SELFPATH
uninstall_go
# 动态链接库,用于下面的判断条件生效
ldconfig
# 判断操作系统位数下载不同的安装包
if [ $(getconf WORD_BIT) = ’32’ ] && [ $(getconf LONG_BIT) = ’64’ ];then
# 判断文件是否已经存在
if [ ! -f $SELFPATH/go1.4.2.linux-386.tar.gz ];then
wget https://dl.google.com/go/go1.4.2.linux-386.tar.gz –no-check-certificate
fi
tar zxvf go1.4.2.linux-386.tar.gz
else
if [ ! -f $SELFPATH/go1.4.2.linux-386.tar.gz ];then
wget https://dl.google.com/go/go1.4.2.linux-386.tar.gz –no-check-certificate
fi
tar zxvf go1.4.2.linux-386.tar.gz
fi
mv go /usr/local/
ln -s /usr/local/go/bin/* /usr/bin/
}

# 卸载go

uninstall_go(){
rm -rf /usr/local/go
rm -rf /usr/bin/go
rm -rf /usr/bin/godoc
rm -rf /usr/bin/gofmt
}

# 安装ngrok
install_ngrok(){
uninstall_ngrok
cd /usr/local
if [ ! -f /usr/local/ngrok.zip ];then
cd /usr/local/
wget http://www.sunnyos.com/ngrok.zip
fi
unzip ngrok.zip
export GOPATH=/usr/local/ngrok/
export NGROK_DOMAIN=$DOMAIN
cd ngrok
openssl genrsa -out rootCA.key 2048
openssl req -x509 -new -nodes -key rootCA.key -subj “/CN=$NGROK_DOMAIN” -days 5000 -out rootCA.pem
openssl genrsa -out server.key 2048
openssl req -new -key server.key -subj “/CN=$NGROK_DOMAIN” -out server.csr
openssl x509 -req -in server.csr -CA rootCA.pem -CAkey rootCA.key -CAcreateserial -out server.crt -days 5000
cp rootCA.pem assets/client/tls/ngrokroot.crt
cp server.crt assets/server/tls/snakeoil.crt
cp server.key assets/server/tls/snakeoil.key
# 替换下载源地址
sed -i ‘s#code.google.com/p/log4go#github.com/keepeye/log4go#’ /usr/local/ngrok/src/ngrok/log/logger.go
cd /usr/local/go/src
GOOS=$GOOS GOARCH=$GOARCH ./make.bash
cd /usr/local/ngrok
GOOS=$GOOS GOARCH=$GOARCH make release-server
/usr/local/ngrok/bin/ngrokd -domain=$NGROK_DOMAIN -httpAddr=”:80″
}

# 卸载ngrok
uninstall_ngrok(){
rm -rf /usr/local/ngrok
}

# 编译客户端
compile_client(){
cd /usr/local/go/src
GOOS=$1 GOARCH=$2 ./make.bash
cd /usr/local/ngrok/
GOOS=$1 GOARCH=$2 make release-client
}

# 生成客户端
client(){
echo “1、Linux 32位”
echo “2、Linux 64位”
echo “3、Windows 32位”
echo “4、Windows 64位”
echo “5、Mac OS 32位”
echo “6、Mac OS 64位”
echo “7、Linux ARM”

read num
case “$num” in
[1] )
compile_client linux 386
;;
[2] )
compile_client linux amd64
;;
[3] )
compile_client windows 386
;;
[4] )
compile_client windows amd64
;;
[5] )
compile_client darwin 386
;;
[6] )
compile_client darwin amd64
;;
[7] )
compile_client linux arm
;;
*) echo “选择错误,退出”;;
esac

}

echo “请输入下面数字进行选择”
echo “#############################################”
echo “#作者网名:Sunny”
echo “#作者博客:www.sunnyos.com”
echo “#作者QQ:327388905”
echo “#作者QQ群:57914191”
echo “#作者微博:http://weibo.com/2442303192”
echo “#############################################”
echo “————————“
echo “1、全新安装”
echo “2、安装依赖”
echo “3、安装git”
echo “4、安装go环境”
echo “5、安装ngrok”
echo “6、生成客户端”
echo “7、卸载”
echo “8、启动服务”
echo “9、查看配置文件”
echo “————————“
read num
case “$num” in
[1] )
install_yilai
install_git
install_go
install_ngrok
;;
[2] )
install_yilai
;;
[3] )
install_git
;;
[4] )
install_go
;;
[5] )
install_ngrok
;;
[6] )
client
;;
[7] )
unstall_git
uninstall_go
uninstall_ngrok
;;
[8] )
echo “输入启动域名”
read domain
echo “启动端口”
read port
/usr/local/ngrok/bin/ngrokd -domain=$domain -httpAddr=”:$port”
;;
[9] )
echo “输入启动域名”
read domain
echo server_addr: ‘”‘$domain:4443′”‘
echo “trust_host_root_certs: false”

;;
*) echo “”;;
esac

 

 

 

 

 

 

ngrok.sh的内容跟ngrok14.sh只是修改了一下go的版本和下载地址而已,用以下代码替换相应内容即可

 

# 安装go
install_go(){
cd $SELFPATH
uninstall_go
# 动态链接库,用于下面的判断条件生效
ldconfig
# 判断操作系统位数下载不同的安装包
if [ $(getconf WORD_BIT) = ’32’ ] && [ $(getconf LONG_BIT) = ’64’ ];then
# 判断文件是否已经存在
if [ ! -f $SELFPATH/go1.9.2.linux-386.tar.gz ];then
wget https://dl.google.com/go/go1.9.2.linux-386.tar.gz –no-check-certificate
fi
tar zxvf go1.9.2.linux-386.tar.gz
else
if [ ! -f $SELFPATH/go1.9.2.linux-386.tar.gz ];then
wget https://dl.google.com/go/go1.9.2.linux-386.tar.gz –no-check-certificate
fi
tar zxvf go1.9.2.linux-386.tar.gz
fi
mv go /usr/local/
ln -s /usr/local/go/bin/* /usr/bin/
}

 

 

ngrok.cfg

server_addr: “www.hdtvmv.com:4443”
trust_host_root_certs: false
tunnels:
nas:
remote_port: 7777
proto:
tcp: 5000
rtnas:
remote_port: 6666
proto:
tcp: 192.168.7.2:80

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

点赞
  1. jerry说道:

    前阵子搬瓦工IP被qiang了。mark一下以下几个方案和建议 :twisted:
    搬瓦工vps的IP被封(3) V2Ray+mKCP部署及V2RayN客户端配置使用教程
    https://eveaz.com/1078.html
    搬瓦工vps的IP被封(4) Cloudflare+V2Ray+Caddy+WebSocket+TLS :arrow: :arrow: :arrow:
    https://eveaz.com/1094.html
    搬瓦工VPS /Vtrul国外VPS安装V2Ray 一键搭建命令和优化详细图文教程
    https://www.wervps.com/we/2358.html
    搬瓦工网址 :lol: :lol: :lol: :lol:
    https://www.bwh88.net/
    V2RayN简单使用教程 :lol:
    https://blog.sharkyzh.cn/post/50d46b4d.html
    最简单的搬瓦工搭配v 2 ray
    https://www.jianshu.com/p/6d7ac1f84836

发表评论

电子邮件地址不会被公开。 必填项已用*标注