1、介绍

FRP内网穿透,特点是简单易用。

原理:

在“公网服务器”,搭建一个frps服务。然后,在具体的需要内网穿透的设备上,安装frpc客户端软件。

frps服务,相当于桥梁,让安装了frpc的设备,可以通过公网服务器,进行转发。

2、FRP服务端

(1)安装

frps.exe

推荐使用docker安装,比较简单

docker-cli命令:

docker run --restart=always --network host -d -v /etc/frp/frps.toml:/etc/frp/frps.toml --name frps snowdreamtech/frps

命令讲解:

-v /etc/frp/frps.toml:/etc/frp/frps.toml

这个代码,表示frps配置文件的存放位置。上面这个代码,意思就是把docker里的虚拟主机/etc/frp/frps.toml,映射到真实主机的/etc/frp/frps.toml文件。

安装后,服务器主机的/etc/frp里,就会出现frps.toml文件。

我们需要配置frps,就在这个文件里编辑就可以。

当然,如果想放到其他位置,可以自行在部署时候修改,例如放到/opt目录:

-v /opt/frps.toml:/etc/frp/frps.toml

(2)配置

通常,安装后,日志会报错,因为没有创建frps.toml文件。

我们需要停止一下docker服务

docker stop frps

然后,在/etc/frp目录下,创建frps.toml

nano /etc/frp/frps.taml

配置文件

下面这个是常用的frps.toml配置

[common]
bind_port = 7000

dashboard_addr = 0.0.0.0
dashboard_port = 7500
dashboard_user = admin
dashboard_pwd = admin123456

log_level = info
log_max_days = 3
subdomain_host = test.com

authentication_method = token
token = homeassistant1234

参数讲解:

[common]
frps绑定的端口,如果是购买的服务器,需要防火墙打开7000端口
bind_port = 7000


管理页面的参数

默认即可
dashboard_addr = 0.0.0.0

管理页面访问端口,需要防火墙打开
dashboard_port = 7500

登录账号
dashboard_user = admin

登录密码
dashboard_pwd = admin123456


这个是日志管理参数
log_level = info
log_max_days = 3


这个是域名绑定,如果你不想直接使用根IP,可以使用域名代理
subdomain_host = test.com


这个是frps服务的验证,使用的token验证。内网穿透的客户端,需要通过这个密码验证,才能运行
authentication_method = token
token = homeassistant1234

(3)启动

docker restart frps

查看日志

docker logs frps

如果日志不报错,就说明运行成功了。

查看控制台

网页访问 ip:7500,即可进入网页服务端

  • Proxies

这个目录下,可以看到所有的客户端链接

3、FRP客户端

(1)安装

客户端安装,和服务端比较类似

docker run --restart=always --network host -d -v /etc/frp/frpc.toml:/etc/frp/frpc.toml --name frpc snowdreamtech/frpc

(2)配置

客户端frpc.toml配置

[common]

server_addr = xx.xx.xx.xx
server_port = 7000
token = homeassistant1234

[ha-web]
type = tcp
local_ip = 127.0.0.1
local_port = 8123
remote_port = 8333

[node-web]
type = tcp
local_ip: 127.0.0.1
local_port = 1880
remote_port = 8399


[ssh-web]
type = tcp
local_ip: 127.0.0.1
local_port = 22
remote_port = 8354

参数讲解:

[common]
这部分是连接到frps服务器的配置
server_addr = xx.xx.xx.xx
server_port = 7000
token = homeassistant1234


下面是端口的转发,比如想转发homeassistant的8123端口,到服务器的8333端口
就在[ha-web]这个下面写
当然[ha-web]不是规定的名字,可以自由改动,但是名字不能重复!!!



下面代码里,我转发了3个内网服务的端口到服务器
当然,转发到服务器的端口,必须在防火墙里打开
并且服务器的每个端口,只能使用一次


[ha-web]
type = tcp
local_ip = 127.0.0.1
local_port = 8123
remote_port = 8333

[node-web]
type = tcp
local_ip: 127.0.0.1
local_port = 1880
remote_port = 8399

[ssh-web]
type = tcp
local_ip: 127.0.0.1
local_port = 22
remote_port = 8354

(3)启动

docker restart frpc

查看日志

docker log frpc

这个日志说明连接成功了,内网穿透完成,可以通过公网ip+转发端口,进行远程访问。

4、HA的FRP代理

homeassistant,有OS的系统(带加载项商店)。

HAOS,有个最大的特点,就是通过ingress,把所有插件的端口,都集中到了8123端口。

意思是,只需要转发8123端口,就可以访问所有加载项插件,比如nodered。

这是它的优点,但是鉴于国内对于docker的禁止,如果有版本更新的需求,实际上不推荐。

frpc加载项

tunnel2local是一个大佬开发的frpc加载项,可以轻松配置内网穿透。

安装方法

1、添加仓库

通过加载项,右上角仓库,添加新的repository

https://github.com/zhujisheng/hassio-addons

2、手动安装

tunnel2local(frp内网穿透).zip

手动把加载项文件,放到homeassistant的addons目录下。

然后加载项右上角,点击“检查更新”

刷新几次后,即可看到加载项

配置加载项

注意:

tunnel_type选择TCP,http_domain这个参数不相干,可以无视!!

frp_server,填写自己的frps服务器

localhost,默认就是homeassistant(默认DNS),也可以自己设置别的

local_port 默认8123,不需要改

tcp_remote_port,FRP代理的远程访问端口

启动加载项,查看日志

这个日志,说明成功了远程代理!