frp内网穿透
1、介绍
FRP内网穿透,特点是简单易用。
原理:
在“公网服务器”,搭建一个frps服务。然后,在具体的需要内网穿透的设备上,安装frpc客户端软件。
frps服务,相当于桥梁,让安装了frpc的设备,可以通过公网服务器,进行转发。
2、FRP服务端
(1)安装
推荐使用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、手动安装
手动把加载项文件,放到homeassistant的addons目录下。
然后加载项右上角,点击“检查更新”
刷新几次后,即可看到加载项
配置加载项
注意:
tunnel_type选择TCP,http_domain这个参数不相干,可以无视!!
frp_server,填写自己的frps服务器
localhost,默认就是homeassistant(默认DNS),也可以自己设置别的
local_port 默认8123,不需要改
tcp_remote_port,FRP代理的远程访问端口
启动加载项,查看日志
这个日志,说明成功了远程代理!