前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >使用腾讯云轻量应用服务器搭建Frp内网穿透到OpenWrt

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

原创
作者头像
4O4
发布2024-01-21 20:26:13
2.5K0
发布2024-01-21 20:26:13

本文我想和大家聊聊 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程序新建一个目录并且进入到该目录。

代码语言:bash
复制
mkdir /etc/frps

cd /etc/frps

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

代码语言:bash
复制
wget https://github.com/fatedier/frp/releases/download/v0.52.3/frp_0.52.3_darwin_arm64.tar.gz

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

代码语言:bash
复制
tar -zxvf frp_0.52.3_darwin_arm64.tar.gz

重命名文件夹。

代码语言:bash
复制
mv frp_0.52.3_darwin_arm64/* /etc/frps/

注册系统服务

新建Frps服务文件。

代码语言:bash
复制
vim /usr/lib/systemd/system/frps.service

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

代码语言:bash
复制
[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

重载配置文件

代码语言:bash
复制
systemctl daemon-reload

常用命令

代码语言:bash
复制
// 启动服务
systemctl start frps

// 停止服务
systemctl stop frps

// 重启服务
systemctl restart frps

// 查看服务状态
systemctl status frps

// 添加开机自启
systemctl enable frps

// 取消开机自启
systemctl disable frps

配置Frps

打开配置文件

代码语言:bash
复制
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

【说明】

  • 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,大家有兴趣可以自行研究。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 准备
  • 云服务器
  • 域名
  • 安装
  • 安装Frp服务端
  • 注册系统服务
  • 配置Frps
  • 安装Frp客户端
    • 开箱即用
      • 手动安装
        • 自动安装
        • 配置Frpc
          • 基本设置
            • 高级设置
            • 添加服务
              • OpenWrt
                • 基本设置
                  • 高级设置
                  • 访问
                    • 服务端面板
                    • 内网服务
                    • 最后
                    相关产品与服务
                    轻量应用服务器
                    轻量应用服务器(TencentCloud Lighthouse)是新一代开箱即用、面向轻量应用场景的云服务器产品,助力中小企业和开发者便捷高效的在云端构建网站、Web应用、小程序/小游戏、游戏服、电商应用、云盘/图床和开发测试环境,相比普通云服务器更加简单易用且更贴近应用,以套餐形式整体售卖云资源并提供高带宽流量包,将热门软件打包实现一键构建应用,提供极简上云体验。
                    领券
                    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档