Docker搭建FRP内网穿透服务(花生壳、Ngrok平替)

frp+scrcpy

内网穿透, 让局域网的服务在异地互联网状态依旧在线可用

frp,一个高性能的反向代理, 可以通过互联网(外网)访问内网(本地局域网)设备

灵活,TCP/IP底层逻辑应用广泛

2024.01 更新内容:如何家宽模式下使用(frp p2p模式 )
使用感受:P2P模式对于这种家宽自建的frp服务太实用

有什么用

映射出局域网,‘打洞‘,平替花生壳之类的功能

举例:远程scrcpy连接安卓设备的adb操作屏幕,说人话:远程控制机顶盒或电视等

1
2
3
4
5

1. frpc -c frpc.ini 

2. ssh 127.0.0.1 -p 22223

[概念]什么是FRP 内网穿透服务

https://github.com/fatedier/frp/blob/master/README_zh.md

1
2
3
为什么使用 frp ?
开发状态
完整文档已经迁移至 https://gofrp.org

实现方法

先自建一个frps服务器端(运行frps用的)<br/>然后自控端A,被控端B;内网穿透服务器<br/>https://zsxwz.com/2023/10/09/远程投屏控制安卓手机,不用-usb-不用-wifi-不用root/<br/>https://zsxwz.com/2023/10/03/frp-使用-p2p-模式,点对点穿透,节约服务器带宽/<br/>开启手机adb,然后用scrcpy

[done]TODO 自建docker的frps服务<br/>https://github.com/fatedier/frp<br/>方案就是开放特定的内网服务到外网直接访问(域名+端口),这个特定的内网服务是有控制功能的,比如路由的web页面,可ssh的端口,可以远程桌面的mstc等。<br/>这样打洞以后,在洞上面架设的是可以远程操作协助的APP(比如远程桌面,ssh等)<br/>从而实现远程协助的功能。

感觉frps,frpc才是王道,但愿受控端的操作会少一些,简单一下,步骤简易一些,通俗易懂一些。

docker-compose.yml

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
version: '3.3'
services:
     frps:
        image: snowdreamtech/frps:latest
        
        
        
        
        
        
        network_mode: host  
        volumes:
          - ./frps.ini:/etc/frp/frps.toml 
            
        container_name: frps
        restart: unless-stopped

FRP服务器配置文件 frps.ini

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
                                                                                                                       

bind_port=                                                                                                                 
kcp_bind_port =                                                                                                            
                                                                                                                               

                                                                                                                               
authentication_method = token                                                                                                  
token = @@@@@@@@@@                                                                                                                 
                                                                                                                               

custom_domains =                                                                                                 
log_level = trace                                                                                                              
                                                                                                                               
                                                                                                                               

dashboard_addr = .                                                                                                       
dashboard_port=                                                                                                            
dashboard_user= @@@@@@                                                                                                           
dashboard_pwd= @@@@@@

7000映射到外网了,在主路由上已配置。<br/>测试frpc 来链接。。。。

2023/12/01 08:35:34 [1;34m[I] [service.go:312] Dashboard listen on 0.0.0.0:9527[0m<br/>无法正常连接, 原来是 配置文件dashboard_port= 7500,然后docker映射出来9527即可。

docker重启日志中:<br/>2023/12/01 08:57:30 [1;34m[I] [service.go:533] [67b3d0c8dd4be924] client login info: ip [120.244.216.197:37895] version [0.52.3] hostname [] os [linux] arch mipsle type [http] error: subdomain is not supported because this feature is not enabled in server<br/>https://github.com/fatedier/frp

FRPS 服务端如何反代?

修改了上面的配置:

network_mode: host

开启防火墙6002

太赞了,https://@@@@.carlzeng.top:@@@@/Advanced_Extensions_script.asp

比Zerotier强太多了!!!

K2P UI中的文本框编辑在Zerotier中无法使用,在frpc后反代以后都正常了!

https://@@@@.carlzeng.top:@@@@/ 反代到debian的6002端口,协议选择http

客户端frpc配置

frpc可以运行与各个平台,比如:Windows电脑、苹果电脑、Linux、Unix等系统的电脑,安卓手机端,苹果手机端等等…

设置应用2

FRP客户端配置文件 frpc.ini

1
2
3
4
5
6
7
8
9
10
11
12
13
14
 
server_addr = frp.@@@. 
server_port = 

type = tcp
local_port = 
remote_port = 

type = tcp
local_ip = .
local_port = 
remote_port =

设置到K2P里面去

[done]TODO:

开启debian防火墙的6003-6004,

NPM反代6003

设置应用3

去应用的docker中(比如独角数卡)加入frpc,然后反代出来

wget https://mirror.ghproxy.com/https://github.com/fatedier/frp/releases/download/v0.52.3/frp_0.52.3_linux_amd64.tar.gz

tar -xf frp_0.52.3_linux_amd64.tar.gz -C /usr/local/bin

1
./frpc -c frpc.ini

客户端 frpc.ini

1
2
3
4
5
6
7
8
9
10
                                                                                                                     
server_addr = .                                                                                                  
server_port =                                                                                                            
token = @@@@@                                                                                                               
                                                                                                                             
                                                                                                                
remote_port =                                                                                                            
type = tcp                                                                                                                   
local_port =                                                                                                             
subdomain = buy

发现仍然无法解决,页面的操作携带端口的需求

设置应用4

远程控制adb,安卓设备远程控制

在路由器上,给192.168.123.189这个设备的5555端口映射出来

1
2
3
4
5
6
7
8
9
10
11
12
13
14
....

remote_port = 
type = tcp
local_ip = .
local_port = 
subdomain = ssh_zl

remote_port = 
type = tcp
local_ip = .
local_port = 
subdomain = ssh_zl

<hr/>

如何家宽模式下使用(frp p2p模式 )

使用frp的p2p模式,点对点穿透,绝大多数数据无需经过服务端,加速了穿透访问

第三方接入FRP服务器,映射出特定的端口到本地:

服务器frps的配置,和上面一样无需做任何修改,只要是配置被控端和主控端的两个frpc配置文件:

2、被控端B配置文件 frpc.ini

1
2
3
4
5
6
7
8
9

server_addr = 服务端ip地址
server_port = 
token = xxx
 
type = stcp
sk = password
local_ip = . 
local_port =

3、主控端A 配置文件 frpc.ini

1
2
3
4
5
6
7
8
9
10
11
12
13

server_addr = 服务端ip地址
server_port = 
token = xxx

type = stcp 
role = visitor  
server_name = p2p_sj_adb  
sk = password  
bind_addr = .
bind_port =

免费的FRP服务资源

如果暂时没有自建的条件,可以直接使用网络上开放免费的FRP服务,比如:

  1. https://frp.104300.xyz/

  2. https://freefrp.net/

    1. 说明文档很赞; https://freefrp.net/docs

优点:所见即所得,马上就用

缺点:速度慢,适合用来学习测试

设置和应用太灵活了,以至于很难理解和变通到家宽部署的情况。

关键词:docker frps 反向代理

灵感来源/感谢列表

家里没有公网IP?FRP+NPM+VPS = 随时随地用域名访问家里的任何设备!内网穿透,从未如此简单!

Docker 部署 Nginx、frp 实现内网穿透

使用docker-compose来构筑NGINX、frp的HTTP内网穿透

用FPC实现HTTPS内网穿透

Frp内网穿透——frpc客户端使用(2)

<br/>

<br/>


标签: none

添加新评论 »