Skip to content

搭建内网穿透服务器 基于frp

仲灏2022-06-19约 1 分钟

<div style="display: none;" hidden="true" aria-hidden="true" data-nosnippet>Are you an LLM? You can read better optimized documentation at /pages/b387de.md for this page in Markdown format</div>

之前一直用的是三方穿透服务natapp免费穿透

https://natapp.cn/

缺点

  • 不定时强制更换域名/端口
  • 服务不稳定
  • 中转速度相当有限

就在想着用自己的公网服务器搭建 更为可控一个 很稳定 类似natapp的穿透服务

一下记录 基于frp与zerotier moon服务器 的使用

  • 一台公网服务器
  • docker

https://hub.docker.com/r/snowdreamtech/frpc

服务器搭建

自建内网穿透服务器

创建初始化文件, 文件位置: /izhaong/frp

ini
[common]
# 监听端口
bind_port = 7000
# 面板端口
dashboard_port = 7500
# 登录面板账号设置
dashboard_user = ******  
dashboard_pwd = ******
# 设置http及https协议下代理端口(非重要)
vhost_http_port = 7080
vhost_https_port = 7081


# 身份验证
token = 1234

docker 命令 创建frp容器

shell
#服务器镜像:snowdreamtech/frps
#重启:always
#网络模式:host
#文件映射:/izhaong/frp/frps.ini:/etc/frp/frps.ini   // 本地:容器位置

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

image-20220619113333032

因为是一个host模式, 现在是可以在在公网上访问端口了,注意你的服务器防火墙

客户端搭建

  • 在本级上开启一个8080的服务
  • 配置frpc.ini 文件
ini
[common]
# server_addr为FRPS服务器IP地址
server_addr = ** // 你线上服务器地址如:121.41.41.41
# server_port为服务端监听端口,bind_port
server_port = 7000
# 身份验证
token = 1234 // 跟上面一样

[web_dev_8080]
type = tcp
local_ip = 127.0.0.1 // docker可能会有网络隔离 可以填写ip地址:192.168.31.163
local_port = 8080
remote_port = 28080

# [ssh] 为服务名称,下方此处设置为,访问frp服务段的2288端口时,等同于通过中转服务器访问127.0.0.1的22端口。
# type 为连接的类型,此处为tcp
# local_ip 为中转客户端实际访问的IP 
# local_port 为目标端口
# remote_port 为远程端口

# 桌面连接
# [desk_6580]
# type = tcp
# local_ip = 192.168.1.229
# local_port = 6580
# remote_port = 16580

客户端容器

shell

docker run --restart=always --network host -d -v /Users/izhaong/izhaong/Docker_K8s/frp/frpc.ini:/etc/frp/frpc.ini --name frpc snowdreamtech/frpc

问题

shell
2022/06/19 06:00:09 [E] [proxy.go:796] [ac8fcbae50e11478] [web_server_8080] connect to local service [127.0.0.1:8080] error: dial tcp 127.0.0.1:8080: connect: connection refused

docker容器之间是互相隔离的,不能互相访问,解决掉就好了