天天看点

Frp内网穿透搭建,家庭主机对外提供接口,支持ssh访问

Frp内网穿透搭建,家庭主机对外提供接口,支持ssh访问

1.使用场景:

需求1.家中服务器 ubuntu 主机,跑接口服务,需要对外暴漏,
需求2.同时需要在外网ssh远程

​ 关键词:

frp内网穿透

斐讯K3C 使用frp服务

ubuntu开启sshservice

​ 以下是记录:

2.所需工具:

1.公网VPS一台

​ 搭建frp服务,这里使用TX云为例,需要配置安全组打开指定端口

​ 可以使用Xshell正常登录

​ [申请,注册VPS,不在本文讨论范围,请自行搜索]

2.路由器

​ 支持Frp设置,这里使用斐讯K3C为例,使用openwrt也可以

​ 注意,frp版本要和服务器一致]

​ 如果使用主机设备当作Frp客户端,大致方式一致,可以参考官方文档,或者搜搜

3.本地Ubuntu 主机

​ 家中Ubuntu 主机,部署接口服务,支持外网访问,同时支持外网ssh到主机 ,后面需要装sshserver

4.其他

​ Xshell 工具,免费授权下载地址

3.部署步骤

1.VPS 安装 Frp 服务

​ Xshell登录vps,查看vps架构,一般是x86_64 ,输入

arch

查看

root@VM-16-5-ubuntu:~/frp/frp_0.21.0# arch

x86_64

打开 frp 首页,右侧选择 Releases 66 ,或者直接打开下载地址 ,

Frp内网穿透搭建,家庭主机对外提供接口,支持ssh访问

选择适合的平台,一般是 frp_0.38.0_linux_amd64.tar.gz ,

注意,这里的版本是

0.38.0

,后续路由器版本不一致,无法识别,需要降级

下载后,上传到 vps,解压 ,

使用Xshell,新建项目目录,cd 到项目目录,直接把 下载文件到xshell窗口,等待上传完毕

配置

frps.ini

文件,可以使用 宝塔或者vim ,注意这个文件,后面客户端配置需要和它保持一致

配置参数:基本都在注释里了

[common]

frps绑定端口 (必选)

bind_port = 7000

认证密码,客户端须与服务器一致

token = 123456

仪表盘端口,只有设置了才能使用仪表盘(即后台)

dashboard_port = 7500

仪表盘访问的用户名密码,如果不设置,则默认都是 admin

dashboard_user = admin

dashboard_pwd = admin

最后,重要一步,启动frp服务

frpc -c ./frpc.ini

看到

start proxy success

表示成功

这样启动服务,窗口关闭就会停止,可以使用后台启动

sudo nohup /root/frp/frp_0.21.0/frps -c /root/frp/frp_0.21.0/frps.ini &
           

如果提示 没有nohup,请安装

2.路由器配置Frp客户端映射

frp服务端配置完毕,可以尝试打开面板,查看是否可以正常登录,用户名密码 admin 刚才配置的

frp面板地址:vps地址:7500

这里的7500,是在上面配置的,可以修改

注意:如果打不开?,请检查vps安全策略,需要放行端口号,打开

防火墙

-

添加规则

-添加 7500 和 7000 端口

Frp内网穿透搭建,家庭主机对外提供接口,支持ssh访问

配置完毕效果

Frp内网穿透搭建,家庭主机对外提供接口,支持ssh访问

接下来配置客户端

我使用的路由器frp插件,直接在路由器配置,如果使用frp客户端,配置方式差不多,请参照官方文档

路由器配置,打开路由器后台,找到frp服务,复制粘贴以下配置

frp客户端配置:

server_addr = xxx.xxx.xxx.xxx

server_port = 7000

[web]

type = tcp

local_ip = 192.168.2.157

local_port = 8080

remote_port = 8080

[ssh]

local_port = 22

remote_port = 6022

参数解释

server_addr = xxx.xxx.xxx.xxx 服务器地址,就是你vps地址

server_port = 7000 服务器端口号,保持和vps 刚才配置的frps.ini一致

token = 123456 服务密码,保持和vps刚才配置的frps.ini一致

[web] 这就是名字,在面板显示,以视区分,看下图面板名字

type = tcp 连接方式,一般就选tcp,其他我也不会

local_ip = 192.168.2.157 这里是本地主机地址,例如就是我ubuntu主机地址,设备自己可以在wifi信息中查看

local_port = 8080 本地端口映射,意思就是,ubuntu主机暴漏的端口

remote_port = 8080 远端端口映射,意思就是,vps主机端口

[ssh] 备注名字

local_port和 remote_port 开始不好理解,这里解释下

我理解就是,假如本地主机ubuntu需要暴漏8080接口提供tomcat服务,在外网访问vps主机8080端口,vps会请求本地主机8080端口

当然,断后不一定是一样的,后面配置的 6022对应22端口就是例子

当ssh请求vps6022端口,可以请求到主机22端口[设置ssh默认端口]

简单画个图,希望能帮助理解

Frp内网穿透搭建,家庭主机对外提供接口,支持ssh访问

打开Frp面板查看frp服务端和客户端绑定状态

Frp内网穿透搭建,家庭主机对外提供接口,支持ssh访问

斐讯路由器- 功能设置-示例

Frp内网穿透搭建,家庭主机对外提供接口,支持ssh访问

顺利到这里,基本就配置成功了

3.测试

1.8080端口

​ 本地主机ubuntu,安装docker,开启tomcat服务,暴漏8080端口,

​ 先测试局域网可以正常访问,

​ 将电脑切换到手机热点,访问 vps:8080 ,可以正常访问到本地主机的tomcat页面,证明成功

2..远程shell到家中主机

​ 刚才已经将本地主机22端口暴漏

​ 需要访问家中主机,只需要xshell配置,服务器地址 : vps地址:6022

​ 用户名密码: ubuntu 用户账户和密码

​ 这里发现,连不上 。。。。

​ 因为,一般ubuntu主机只安装ssh客户端,不安装服务端

sudo apt install openssh-server
           

安装完成后,SSH服务将自动启动。要验证安装是否成功并且SSH服务正在运行,请键入以下命令,该命令将显示SSH服务器状

sudo systemctl status ssh
Frp内网穿透搭建,家庭主机对外提供接口,支持ssh访问

再次xshell远程主机,顺利的话,成功!

4.附录:

1.禁止服务器休眠

发现ubuntu会自动休眠

参考:服务器ubuntu 20.04关闭自动休眠模式

查看是否开启休眠模式

systemctl status sleep.target

yaron@yaron-T420s:~$ systemctl status sleep.target

返回结果

● sleep.target - Sleep

Loaded: loaded (/lib/systemd/system/sleep.target; static; vendor preset: enabled)

Active: inactive (dead)

Docs: man:systemd.special(7)

执行关闭休眠功能的命令,如下

yaron@yaron-T420s:~$ sudo systemctl mask sleep.target suspend.target hibernate.target hybrid-sleep.target

[sudo] yaron 的密码:

Created symlink /etc/systemd/system/sleep.target → /dev/null.

Created symlink /etc/systemd/system/suspend.target → /dev/null.

Created symlink /etc/systemd/system/hibernate.target → /dev/null.

Created symlink /etc/systemd/system/hybrid-sleep.target → /dev/null.

再次查看

● sleep.target

Loaded: masked (Reason: Unit sleep.target is masked.)

yaron@yaron-T420s:~$

2.服务后台运行

​ 开启定制任务或者后台运行

sudo nohup /root/frp/frp_0.21.0/frps -c /root/frp/frp_0.21.0/frps.ini &
3.xshell配置
Frp内网穿透搭建,家庭主机对外提供接口,支持ssh访问

感谢以下作者:

FRP内网穿透搭建与使用

Frps、nginx内网穿透安装与配置

Frp介绍 Frp官方文档 下载地址

Tcping下载地址 带端口Ping测试

在Ubuntu上启用SSH

编辑器支持markdown有点别扭,很多代码引用还要自己改? 用的Typora