【技术方案分享】一文搞定内网穿透(1)
编辑
36
2025-02-13
大家好!今天我们来聊聊内网穿透。如果你有一台自己的服务器,并且想通过它来访问家里的设备(比如 NAS 或者软路由),那这篇文章就是为你准备的。如果你没有服务器,可能这篇文章就不太适合你啦,可以看看其他更简单的方案哦~
整体架构
方案部署
服务器端
首先,我们需要在服务器上安装 Frp 服务端 。别担心,安装过程很简单,跟着下面的步骤走就行。
1. 安装 Frp 服务端
我们可以用 Docker 来快速部署 Frp 服务端。下面是 docker-compose.yml
的配置:
version: "3.5"
services:
frp:
image: snowdreamtech/frps
ports:
- '7000:7000' # Frp 服务端端口
- '7500:7500' # Frp 管理界面端口
- '443:443' # HTTPS 端口
- '80:80' # HTTP 端口
volumes:
- ./frps.toml:/etc/frp/frps.toml # 配置文件挂载
restart: always
container_name: frp
2. 配置 Frp 服务端
接下来,我们需要配置 Frp 服务端。创建一个 frps.toml
文件,内容如下:
bindAddr = "0.0.0.0"
bindPort = 7000
vhostHTTPPort = 80
vhostHTTPSPort = 443
subdomainHost = "yourdomain.com" # 这里换成你的域名
webServer.addr = "0.0.0.0"
webServer.port = 7500
webServer.user = "admin" # 管理界面用户名
webServer.password = "admin" # 管理界面密码
auth.method = "token"
auth.token = "123456" # 这里换成复杂度高的 token
maxPortsPerClient = 100 # 每个客户端允许的端口数量
客户端
Frp 客户端可以部署在 NAS 或者软路由上。下面我们分别来看看怎么操作。
1. Docker 部署
如果你用的是 Docker,可以用下面的配置:
version: "3.5"
services:
frp:
image: snowdreamtech/frpc
volumes:
- ./frpc.toml:/etc/frp/frpc.toml # 配置文件挂载
- /opt/docker/certd/tmp:/tmp # 证书目录映射
restart: always
container_name: frpc
network_mode: host
command:
- -c
- /etc/frp/frpc.toml
2. 软路由部署
如果你用的是软路由(比如 ImmortalWrt),可以通过以下命令安装 Frp 客户端:
opkg install frpc
opkg install luci-app-frpc
opkg install luci-i18n-frpc-zh-cn
3. 配置 Frp 客户端
Frp 客户端的配置文件 frpc.toml
如下:
serverAddr = "xxx.xxx.xxx.xxx" # 你的服务器 IP 地址
serverPort = 7000
auth.method = "token"
auth.token = "123456" # 和服务端的 token 保持一致
[[proxies]]
name = "blog"
type = "https"
subdomain = "blog"
[proxies.plugin]
type = "https2http"
localAddr = "127.0.0.1:28090"
crtPath = "/tmp/cert.pem" # HTTPS 证书路径
keyPath = "/tmp/cert.key" # HTTPS 私钥路径
hostHeaderRewrite = "127.0.0.1"
requestHeaders.set.x-from-where = "frp"
证书配置
为了让 HTTPS 正常工作,我们需要配置证书。这里推荐使用 Certd 来自动化管理证书。按照官方文档部署即可,非常简单。
- 首先,确保
/tmp
目录被映射出来。 - 然后,按照 Certd 的官方文档添加证书申请任务。
- 最后,添加一步“主机-复制到本机阶段”,把证书复制到本地。
参考资料
- 0
- 0
-
分享