12月18日更新 添加 frp 配置

前言

内网穿透,无需多言,用处多多。首先强力推荐一款Sunny大大搭建的ngrok服务好用的不行,而且有免费选项,感觉平时够用了。那么,为什么自己还要搭建一个呢?可能刚刚看过两眼的docker入门,想来尝试一下吧。恩,也可能是闲的吧┑( ̄Д  ̄)┍

ps: ngrok 2版本已商业化,开源的只到1.7版本,听说会有些性能问题。还有一款基于go的开源的内网穿透工具frp 在末尾添加了frp 的配置

搭建过程

至于玩法,1)可以将本地的server的端口代理到外网可访问,便于微信开发或者暴露内网的服务器等。2)可以代理ssh 连接,比如可以连接家里的树莓派。

ps:在使用docker-compose 集成Nginx反向代理时 发现暴露的端口有点多,况且nginx都是服务端的标配了,所以就去掉了。╮( ̄▽ ̄")╭

还是直接上实在的吧(以下命令基于Ubuntu):

准备

域名

域名可购买略

域名解析设置

服务器

所需软件安装

克隆源码

生成证书

编译生成服务端软件 和 客户端软件

容器化

生成镜像

利用docker-compose 集成Nginx反向代理

具体步骤

域名解析设置

假设你的域名为: yourset.com

假设你的ngrok服务二级访问域名为:ngrok.yourset.com

添加如下解析:ngrok.yourset.com --->A记录 your ip

*.ngrok.yourset.com --->CNAME 到 ngrok.yourset.com(可自由配置)

服务环境设置

基于 Ubuntu 16.04

安装git

$ sudo apt-get update

$ sudo apt-get install git

安装go lang

$ 下载go1.9.2.linux-amd64.tar.gz(注意对应自己的系统下载,具体请参考上方连接)

$ tar -C /usr/local -xzf go1.9.2.linux-amd64.tar.gz

$ vi /root/.bashrc 或者 /home/user/.zsh #根据你的用户选取

$ export PATH=$PATH:/usr/local/go/bin #添加环境变量

$ source /root/.bashrc #更新环境变量

克隆源码

$ cd /usr/local

$ git clone https://github.com/inconshreveable/ngrok.git

引入环境变量

$ export GOPATH=/usr/local/ngrok/ #目录位置

$ export NGROK_DOMAIN="ngrok.yourset.com" #你的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

客户端版本说明

Linux 平台 32 位系统:GOOS=linux GOARCH=386

Linux 平台 64 位系统:GOOS=linux GOARCH=amd64

Windows 平台 32 位系统:GOOS=windows GOARCH=386

Windows 平台 64 位系统:GOOS=windows GOARCH=amd64

MAC 平台 32 位系统:GOOS=darwin GOARCH=386

MAC 平台 64 位系统:GOOS=darwin GOARCH=amd64

ARM 平台:GOOS=linux GOARCH=arm

编译服务端的 ngrokd(客户端和服务端生成的文件均在/usr/local/ngrok/bin下)

$ GOOS=linux GOARCH=amd64 make release-server #根据平台选取

编译客户端 ngrok(可生成压缩包下载到本地然后放到网盘存起来?方便以后使用)

$ GOOS=darwin GOARCH=amd64 make release-client #mac 64

$ GOOS=windows GOARCH=amd64 make release-client #win64

$ GOOS=linux GOARCH=amd64 make release-client #linux64

$ GOOS=linux GOARCH=arm make release-client #arm平台如树莓派

开启服务端(设置端口是请注意端口是否打开,以及防火墙配置)

$ /usr/local/ngrok/bin/ngrokd -domain="ngrok.yourset.com" -httpAddr=":2443" -httpsAddr=":3443" -tunnelAddr=":4443"

参数说明:

-domain 访问ngrok是所设置的服务地址生成证书时那个

-httpAddr http协议端口 默认为80

-httpsAddr https协议端口 默认为443 (可配置https证书)

-tunnelAddr 通道端口 默认4443

启动客户端-使用命令行参数(以mac为例)

将客户端放到自己喜欢的位置并在当前目录下创建配置文件

$ vi ngrok.yml

写入如下内容

server_addr: "ngrok.yourset.com:4443"

trust_host_root_certs: false

启动客户端命令

$ ./ngrok -config=./ngrok.yml -proto=http -subdomain=test 8080 #启动http转发

$ ./ngrok -config=./ngrok.yml -proto=tpc 22 #启动tcp转发 本地22端口,远程随机暴露大端口

参数说明:

trust_host_root_certs #是否信任系统根证书,如果是带自签名证书编译的 ngrok 客户端,这个值应该设置为 false;如果使用 CA 证书,或者用户添加了根证书,这个值应该设置为 true

-proto #转发协议 不指定默认是 http+https

-subdomain #访问本地时的三级域名 不指定就会随机生成 tcp不支持此参数

8080 #本地服务的端口号

-config #指定配置位置,默认为$HOME/.ngrok2/ngrok.yml

启动客户端-使用配置文件

在ngrok中写入如下内容:

server_addr: "ngrok.yourset.com:4443"

trust_host_root_certs: false

tunnels:

web:

proto:

http: "3000"

web2:

proto:

http: "8080"

tcp:

proto:

tcp: "3022"

remote_port: 4444

tcp2:

proto:

tcp: "22"

remote_port: 4445

启动单个服务如

$ ./ngrok -config=./ngrok.yml start web #启动web服务 使用的前缀域名为web

$ ./ngrok -config=./ngrok.yml start tcp #启动tcp服务 使用远程端口3022

启动多个服务:

$ ./ngrok -config=./ngrok.yml start web tcp #同时启动两个服务

$ ./ngrok -config=./ngrok.yml start-all #启动所有服务

### docker 配置 和 Nginx配置

基本搭建到上面基本就能用了,但是对于暴露80端口的问题这时就需要使用Nginx做一个端口的反向代理。

而加入使用的vps更换了话,就要重新再来搭建一遍,想想用docker的话,那不就很方便吗。

此次更新去掉了docker的配置,当初,刚学会点docker 便为了docker而docker,并没有考虑是否合适当前的场景。ngrok 作为一个内网穿透的小工具,有时可能会时常更改配置等,所以作为本地的一个开机启动的小服务即可。

设置开机启动

vim /usr/lib/systemd/system/ngrok.service

## 输入:

[Unit]

Description=ngrok

After=network.target

[Service]

TimeoutStartSec=30

ExecStart=/usr/local/ngrok/bin/ngrokd -domain="ngrok.yourset.com" -httpAddr=":2443" -httpsAddr=":3443" -tunnelAddr=":4443"

ExecStop=/bin/kill $MAINPID

[Install]

WantedBy=multi-user.target

## 命令

$ sudo systemctl enable ngrok # 设置开机启动

$ sudo systemctl start ngrok # 开启ngrok

$ sudo systemctl status ngrok # 查看状态

$ sudo systemctl stop ngrok # 停止

frp 内网穿透配置

相对于 ngrok 另一款国内大牛做的 frp要显的更加轻量安全易配置些。

中文文档讲解的也是十分全面,以下是我的相关配置

服务器端:

将文件下载解压后的 frps 和 frps.ini 放到当前目录

编辑 frps.ini 文件

[common]

bind_addr = 0.0.0.0 (yourip)

bind_port = 7000 (frp通信端口)

dashboard_port = 8020 (web端查看端口 可省略)

vhost_http_port = 8021 (http 端口)

# dashboard user and pwd for basic auth protect, if not set, both default value is admin

dashboard_user = yourusername

dashboard_pwd = yourpass

privilege_token = yourtoken

配置开机启动:

[Unit]

Description=frps

After=network.target

[Service]

TimeoutStartSec=30

ExecStart=/home/user/tool/frps/frps -c /etc/frp/frps.ini

ExecStop=/bin/kill $MAINPID

[Install]

WantedBy=multi-user.target

$ sudo systemctl enable frps # 设置开机启动

$ sudo systemctl start frps # 开启ngrok

$ sudo systemctl status frps # 查看状态

$ sudo systemctl stop frps # 停止

同理设置客户端 添加自动启动即可通过域名或者ip 从外网访问或链接内网 frp 正处于开发阶段有很多实用的功能等大家去发现。

后记

对比frp ngrok 的搭建要繁琐不少,但 ngrok 在的优势在于 方便本地调试,因为在开启本地服务的同时,也会开启一个本地的webserver 来监听 请求的相应 如 get 和 post 的具体数据 以及服务端返回的数据。对于本地调试来说是十分方便的。而 frp 对于代理本地端的服务,ssh等还是十分出色的,比如我调试的时候使用ngrok,而家里用来折腾的树莓派 就使用了frp。最后祝大家愉快的玩耍~

ngrok配置信息_ngrok内网穿透服务器搭建及配置(附 frp 配置)相关推荐

  1. nps内网穿透服务器搭建教程(阿里云)-小宇特详解

    nps内网穿透服务器搭建教程(阿里云)-小宇特详解 前期准备 1.一台云服务器 2.配置安全组 3.在自己的电脑上安装nps 云服务器的话自己买,我这里使用的是阿里云 讲一下配置安全组 打开阿里云的官 ...

  2. nps内网穿透服务器搭建教程(ip显示阿里云的ip)-小宇特详解

    nps内网穿透服务器搭建教程(ip显示阿里云的ip)-小宇特详解 一共有两部分,一部分是windows安装,一部分是linux系统(使得ip显示自己的阿里云). 前期准备 1.一台云服务器 2.配置安 ...

  3. frp 内网穿透服务器搭建frps服务端和frpc客户端

    1 工具 一台具有公网ip的服务器 2 下载frp frp下载地址 打开上面的frp下载地址 公网服务器上 打开下载文件 frps是服务端,在公网服务器上部署 frpc是客户端,在需要内网穿透的电脑上 ...

  4. UBNT ER-X 路由器DDNS配置和frps内网穿透服务搭建

    本文基于UBNT EdgeRouter ER-X路由器,在不额外增加硬件的情况下,实现DDNS,搭建frps内网穿透服务. Teamviewer开始收费了,向日葵之类用起来又不顺手,试来试去还是Win ...

  5. frp内网穿透服务器搭建及免费frp服务器提供

    2019-06-22 服务器升级为0.27版本 2018-11-14 服务器升级为0.21版本,请升级官改固件并重新按下述配置,否则无法使用 ----------------------------- ...

  6. frps搭建内网穿透服务器(frp隧道)

    frps搭建自己的内网穿透服务器 开发过程中,很多时候我们需要用到内网穿透,将自己的服务器映射到外网,下面说一下怎么用frps搭建自己的内网穿透服务器 frps Github地址 GitHub - f ...

  7. frps搭建自己的内网穿透服务器

    开发过程中,很多时候我们需要用到内网穿透,将自己的服务器映射到外网,下面说一下怎么用frps搭建自己的内网穿透服务器 frps Github地址 里面有中文文档,大家可以参考 服务器搭建 服务器搭建 ...

  8. Frp 内网穿透服务器在渗透中的应用

    内容 实战-在内网发布服务使之可在公网访问 使用 frp 搭建内网穿透服务器 实战-kali 配置 MSF 接收来自公网的 shell 实战-跨网段获取内网 shell 实战-内网穿透-二级代理 实战 ...

  9. Centos使用lanproxy,搭建一个属于自己的内网穿透服务器(附转发失败解决方法),小白向

    目录 前言 准备工作 搭建与使用 1. 安装git工具 2. 安装java环境 3. 安装maven工具 4. 搭建Lanproxy 5. 启动内网穿透服务 6. 设置开机自启 转发失败解决方法 前言 ...

最新文章

  1. 【跃迁之路】【495天】程序员高效学习方法论探索系列(实验阶段252-2018.06.15)...
  2. ICAP: 互换客户端地址协议
  3. EBS查询当前LOV SQL
  4. gradle的基本设置
  5. 浅谈ASP.net中的DataSet对象
  6. d3力导向图增加节点_D3.js+Es6+webpack构建人物关系图(力导向图),动态更新数据,点击增加节点,拖拽增加连线......
  7. Matlab | Matlab从入门到放弃(4)——样本均值
  8. 论定期修改电脑密码的重要性
  9. 组策略链接顺序优先级
  10. python判断是否为完全数_Python识别完美数
  11. 关注 | 新冠病毒这次的突变毒株太可怕,与人受体亲和力提高了1000倍,传播提高70%!已经成为伦敦地区主要毒株...
  12. 《论文笔记》Multi-UAV Collaborative Monocular SLAM
  13. 【实习生笔试面试题】2013年搜狐SOHU实习生技术笔试题
  14. NSIS UI 美化类插件分享
  15. java中线程的优先级别
  16. [WebApi] 捣鼓一个资源管理器--服务器端分割压缩图片
  17. mysql SQL语句分析工具_MySQL 数据库中SQL语句执行分析优化工具Explain使用说明 | IT工程师的生活足迹...
  18. 编译libpng和zlib
  19. python修改图片大小为30kb_python 批量修改图片大小
  20. Java做彩虹进度条,Android自定义控件-彩虹条进度条

热门文章

  1. R算数运算符:+、-、*、/、%%、%/%、^
  2. 快速修剪技巧_三角梅花后修剪有讲究,轻剪还是重剪?品种和养殖环境来决定...
  3. 生物信息学 生物科学、农学、林学、医学
  4. TensorFlow基础2(张量)
  5. Jupyter Notebook 使用流程
  6. javascript 自动按按钮
  7. python 获取程序运行时间
  8. 小人脸检测 - Finding Tiny Faces
  9. LeetCode 198. House Robber--动态规划--C++,Java,Python解法
  10. java 线程面试题_JAVA多线程面试题(一)