Ubuntu下安装frp实现内网穿透

frp 是一个可用于内网穿透的高性能的反向代理应用,支持 tcp, udp, http, https 协议。


1.frp源码地址:https://github.com/fatedier/frp

2.frp中文文档:https://github.com/fatedier/frp/blob/master/README_zh.md

一、服务器安装

1.go语言环境安装

  登陆网址https://golang.org下载源码

  wgethttps://storage.googleapis.com/golang/go1.8.3.linux-amd64.tar.gz

a.解压缩文件:

  tar -C /usr/local -xzf /go1.8.3.linux-amd64.tar.

b.在文件~/.profile添加环境变量

  export PATH=$PATH:/usr/local/go/bin

  export GOROOT=/usr/local/go

  export GOBIN=$GOROOT/bin

  export PATH=$PATH:$GOBIN

  export GOPATH=$HOME/gopath (可选设置)

  更新环境变量:source /etc/profile

c.检查go是否安装完成 :go version 有显示版本就是安装完成

2.下载frp源码

git clone https://github.com/fatedier/frp.git $GOPATH/src/github.com/fatedier/frp

a.进入源码根目录,执行make命令开始编译

如果系统报错如下:


则执行sudo apt-get install make make-guile -y  安装make make-guile

编译完成后,bin目录下是编译好的可执行文件,conf目录下是示例配置文件。

1.将 ./bin/frps 和 ./conf/frps.ini 拷贝至服务器任意目录。

2.将 ./bin/frpc 和 ./conf/frpc.ini 拷贝至客户端任意目录。

3.根据要实现的功能修改两边的配置文件。

4.在服务器B执行nohup ./frps &或者nohup ./frps -c ./frps.ini &。

5.在服务器A执行nohup ./frpc &或者nohup ./frpc -c ./frpc.ini &。

6.通过ssh -oPort=6000 {user}@x.x.x.x测试是否能够成功连接服务器A({user}替换为服务器A上存在的真实用户),或通过浏览器访问自定义域名验证 http 服务是否转发成功。

以下转自官网配置

tcp 端口转发

转发 tcp 端口需要按照需求修改 frps 和 frpc 的配置文件。

配置文件

frps.ini

[common]bind_addr= 0.0.0.0#用于接收 frpc 连接的端口bind_port= 7000log_file= ./frps.loglog_level= info#ssh 为代理的自定义名称,可以有多个,不能重复,和frpc中名称对应[ssh]auth_token= 123bind_addr= 0.0.0.0#最后将通过此端口访问后端服务listen_port= 6000

frpc.ini

[common]#frps 所在服务器绑定的IP地址server_addr= x.x.x.xserver_port= 7000log_file= ./frpc.loglog_level= info#用于身份验证auth_token= 123#ssh 需要和 frps.ini 中配置一致[ssh]#需要转发的本地端口local_port= 22#启用加密,frpc与frps之间通信加密,默认为 falseuse_encryption= true

http 端口转发,自定义域名绑定

如果只需要一对一的转发,例如服务器B80端口转发服务器A8000端口,则只需要配置tcp 端口转发即可,如果需要使服务器B80端口可以转发至多个web服务端口,则需要指定代理的类型为 http,并且在 frps 的配置文件中配置用于提供 http 转发服务的端口。

按照如下的内容修改配置文件后,需要将自定义域名的A 记录解析到 [server_addr],如果 [server_addr] 是域名也可以将自定义域名的CNAME 记录解析到 [server_addr]。

之后就可以通过自定义域名访问到本地的多个 web 服务。

配置文件

frps.ini

[common]bind_addr= 0.0.0.0bind_port= 7000#如果需要支持http类型的代理则需要指定一个端口vhost_http_port= 80log_file= ./frps.loglog_level= info[web01]#type 默认为 tcp,这里需要特别指定为 httptype= httpauth_token= 123#自定义域名绑定,如果需要同时绑定多个以英文逗号分隔custom_domains= web01.yourdomain.com[web02]type= httpauth_token= 123custom_domains= web02.yourdomain.com

frpc.ini

[common]server_addr= x.x.x.xserver_port= 7000log_file= ./frpc.loglog_level= infoauth_token= 123#自定义域名在 frps.ini 中配置,方便做统一管理[web01]type= httplocal_ip= 127.0.0.1local_port= 8000#可选是否加密use_encryption= true[web02]type= httplocal_ip= 127.0.0.1local_port= 8001









推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 89,010评论 13 123
  • 群晖NAS+frp发挥更大作用Posted by SunnyRx on October 21, 2016原文地址:...
    热心人士阅读 106,998评论 21 92
  • 有时需要把内网部署的站点映射到外网,让其别人也能访问到,例如做微信相关开发时需要把内网映射到外网,让微信服务器能访...
    我是非鱼阅读 6,354评论 0 2
  • 我的博客:https://blog.thuol.com 说明 参考网络上其他人文章。将他人技术文章亲自测试并总结补...
    00天火00阅读 31,276评论 0 12
  • 天空像是幅水墨画,灰色浅一横深一横地被抹在她的心上,远方,翻着鱼肚白,细雨化珠,印入眼帘,挂在了睫毛弯弯,散发动人...
    击空留影阅读 33评论 1 0