当前位置:   article > 正文

使用腾讯云轻量应用服务器搭建Frp内网穿透到OpenWrt_腾讯云内网穿透

腾讯云内网穿透

请在此添加图片描述

本文我想和大家聊聊 Frp 在 OpenWrt 系统中的应用。我在家里的open wrt上部署了很多服务和脚本,但是由于ipv4地址资源紧张,家庭宽带获取ipv4公网地址难度大、代价高,我的家宽也没有公网ip,只能在家庭局域网中访问这些服务,这里我们就需要使用内网穿透工具让这些服务在外网也可以访问到,目前的内网穿透应用中有两个比较常用,一个是Frp,另一个是Ngrok,OpenWrt系统对这两个应用的支持都不错,这次我们选择使用Frp搭建。

准备

关于Frp,其工作原理我们可以简单的理解为:让内网路由器与拥有公网地址的服务器通过某个端口建立联系,然后你只要远程访问服务器,它就会自动去访问内网路由器中指定的服务,从外部看来就好像将内网穿透了一样。

云服务器

首先你需要有一个拥有公网ip地址的服务端,我手里正好有两台空闲的腾讯云轻量应用服务器,轻量云服务器的特性相比普通云服务器更加简单易用且更贴近应用,以套餐形式整体售卖基础云资源并提供高带宽流量包,对于frp这种不需要长时间高负载和大量流量的应用再合适不过,不是云服务器用不起,而是轻量更有性价比。我选择使用国内广州的这台服务器,这样能保证Frp服务的运行和网络更加稳定。

没有云服务器的朋友也可以看看腾讯云:https://curl.qcloud.com/AaSzuNFu

请在此添加图片描述

域名

如果你想通过域名访问frp面板和内网的服务,那么你需要注册一个域名,并且将它们解析到你服务器的公网ip,一个域名对应一个服务。如果你想通过80/443端口进行访问,那么你还需要将域名进行备案。

  • frp.404.cafe:用做主域名,访问frp服务端面板。
  • openwrt.frp.404.cafe:用于访问openwrt管理面板。
  • alist.frp.404.cafe:用于访问部署在内网的alist管理面板。
  • gitlab.frp.404.cafe:用于在外网环境下访问内网代码仓库。
  • jenkins.frp.404.cafe:用于在外网环境下访问内网jenkins。

请在此添加图片描述

安装

Frp分为服务端和客户端,服务器端名为frps,客户端名为frpc,安装时务必注意区分。同时Frp支持windows和linux的服务器系统,我们首先将Frp服务端安装在云服务器上,并且将Frp客户端安装在路由器上,最后设置好相应的配置文件即可。

安装Frp服务端

前往frp项目中的发行安装包地址,寻找适合自己的安装包。如x86平台64位的linux机器,应该使用名为 frp_x.xx.x_linux_amd64.tar.gz 的安装包(x.xx.x为版本号)。选中安装包名称,右键复制链接地址,我是arm64v8的平台,所以选择frp_0.52.3_darwin_arm64.tar.gz

登陆服务器执行下列命令,执行下列命令,为Frp程序新建一个目录并且进入到该目录。

mkdir /etc/frps

cd /etc/frps
  • 1
  • 2
  • 3

将安装包下载到服务器中。

wget https://github.com/fatedier/frp/releases/download/v0.52.3/frp_0.52.3_darwin_arm64.tar.gz
  • 1

执行下列命令,解压安装包。

tar -zxvf frp_0.52.3_darwin_arm64.tar.gz
  • 1

重命名文件夹。

mv frp_0.52.3_darwin_arm64/* /etc/frps/
  • 1

注册系统服务

新建Frps服务文件。

vim /usr/lib/systemd/system/frps.service
  • 1

按键盘 i 键,进入编辑状态,粘贴如下代码,然后按 ESC 按键,输入:wq 回车后保存并退出。

[Unit]
Description=The nginx HTTP and reverse proxy server
After=network.target remote-fs.target nss-lookup.target
 
[Service]
Type=simple
ExecStart=/etc/frps/frps -c /etc/frps/frps.ini
KillSignal=SIGQUIT
TimeoutStopSec=5
KillMode=process
PrivateTmp=true
StandardOutput=syslog
StandardError=inherit
 
[Install]
WantedBy=multi-user.target
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16

重载配置文件

systemctl daemon-reload
  • 1

常用命令

// 启动服务
systemctl start frps

// 停止服务
systemctl stop frps

// 重启服务
systemctl restart frps

// 查看服务状态
systemctl status frps

// 添加开机自启
systemctl enable frps

// 取消开机自启
systemctl disable frps
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17

配置Frps

打开配置文件

vim /etc/frps/frps.ini

[common]
bind_port = 7000
dashboard_port = 7500
token = your_token
dashboard_user = your_username
dashboard_pwd = your_password
vhost_http_port = 8000            
vhost_https_port = 8001
subdomain_host = frp.404.cafe
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

【说明】

  • bind_port:提供服务的端口。后续Frpc客户端将绑定服务器的该端口,完成与服务器的通信。
  • vhost_http_port:HTTP端口,可通过客户端绑定的域名(域名需解析至服务器的IP),加上此端口来访问对应的内网HTTP服务。
  • vhost_https_port:HTTPS端口,可通过客户端绑定的域名,加上此端口来访问对应的内网HTTPS服务。
  • token:默认使用Token认证口令,客户端需使用该口令才能与服务器建立通信。
  • dashboard_port:监控Web面板端口。
  • dashboard_user:监控Web面板用户名。
  • dashboard_pwd:监控Web面板密码。
  • subdomain_host:绑定访问frp服务的域名,之后在 frpc 的 http、https 类型的代理中可以不配置 custom_domains,而是配置一个 subdomain 参数。只需要将 *.{subdomain_host} 解析到 frps 所在服务器。之后用户可以通过 subdomain 自行指定自己的 web 服务所需要使用的二级域名,通过 {subdomain}.{subdomain_host} 来访问自己的 web 服务。

注意不要使用像 10080、10443 这种高位端口,容易出现被浏览器屏蔽的情况。

请在此添加图片描述

更多配置参数:服务端frps.ini各配置参数详解

安装Frp客户端

登录OpenWrt管理后台,由于客户端存在多种不同的版本,这里只简单介绍常见的安装方式。

开箱即用

某些固件内已经编译好了frpc和frps,我们直接启用服务并进行配置就可以了。

手动安装

流程同安装frp服务端,只是把frps换成frpc。

自动安装

进入系统-软件包-查找可用软件包。点击 Update lists 更新软件列表后,搜索 frpc,点击安装按钮,将自动安装该软件和依赖。

请在此添加图片描述

配置Frpc

基本设置

安装完毕后刷新浏览器,进入:服务-frp内网穿透。在 “基本设置” 选项卡中,设置服务器地址、端口、令牌及其他可选项。

请在此添加图片描述

服务器:填写安装有Frps的服务器ip地址或者域名。

端口:填写Frps配置文件 bind_port 选项设置的端口,本文的示例配置文件对应的此处为7000。

令牌:填写Frps配置文件 token 选项设置的令牌。

运行用户:填写Frps配置文件 token 选项设置的 dashboard_user。

HTTP 穿透服务端口:填写Frps配置文件 token 选项设置的 vhost_http_port。

HTTPS 穿透服务端口:填写Frps配置文件 token 选项设置的 vhost_https_port。

高级设置

也可在服务器的高级设置里配置监控面板,查看是否有客户端建立了连接。

请在此添加图片描述

http/https的80/443端口是支持复用的,一个域名可以分别配置http和https两条穿透记录,此后无法复用。如果各用户都穿透了内网的网站到这台服务器的80/443端口,当服务器收到80/443端口的网站访问请求时,frp服务器端会根据访问的域名来识别具体访问哪位用户的内网网站,所以配置http/https的穿透时,域名是不可复用的。

配置完毕后,点击页面右下角的【保存并应用】按钮。并前往【系统-启动项】中重启frpc服务。至此,Frp服务器和客户端搭建完毕,可在OpenWrt内的Frp客户端页面,查看frp客户端是否在运行状态。

添加服务

OpenWrt

端口绑定默认7000,直接使用就可以了,我们这里主要是使用http服务,所以填写服务端对应的http绑定端口就可以了,允许和服务端设置成相同的端口。

请在此添加图片描述

基本设置

  • Frp类型:由于openwrt是通过web端进行管理,所以选择http。
  • 域名类型:根据自己情况选择,可以设置成ip或者域名,如果选择自定义域名则不能是属于主域名(subdomain_host) 的子域名或者泛域名,如果选择子域名必须是服务端主域名下的子域名,这里只需要填写前缀就可以了,比如我用二级域名 frp.404.cafe 作为主域名,我想通过三级域名 alist.frp.404.cafe 来访问内网alist服务,那我只需要填写【alist】就可以了,这里alist.frp.相对frp.就是第二级域名。
  • 内网主机地址:内网服务的ip地址。
  • 内网主机端口:内网服务的端口号。
  • 服务备注名:唯一服务名。

高级设置

密码保护:使用http basic认证为服务添加一层安全保障。

请在此添加图片描述

请在此添加图片描述

访问

服务端面板

通过域名+端口的形式访问frp服务端面板。

请在此添加图片描述

请在此添加图片描述

内网服务

通过域名+端口的形式访问内网服务。这里我通过 openwrt.frp.404.cafe 域名在公司成功访问了只能在家庭内网访问的openwrt管理面板。

请在此添加图片描述

至此,我们已经成功达到了内网穿透的效果。同理,你也可以在Frpc中设置SSH、FTP等其它服务,然后通过远程访问它们。

最后

本文对Frp的设置部分只采用了最低可用的方式,实际上Frp的配置项非常复杂,甚至可以一个Frps带多个Fprc,大家有兴趣可以自行研究。

声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:【wpsshop博客】
推荐阅读
相关标签
  

闽ICP备14008679号