首页
Files
Self Notes
About
Contact
Search
1
深入浅出了解llm模型微调(持续更新中)
13 阅读
2
vue3 快速上手
10 阅读
3
折腾了下ghost,最后还是放弃了
9 阅读
4
人生的十字路口,该如何抉择?
7 阅读
5
关于d2l 栏目的说明
5 阅读
AI
日常
旅行
d2l
IT
理论与思考
登录
Search
timelocked447
累计撰写
8
篇文章
累计收到
3
条评论
首页
栏目
AI
日常
旅行
d2l
IT
理论与思考
页面
Files
Self Notes
About
Contact
搜索到
1
篇与
的结果
2025-12-31
frp内网穿透体验
1.背景我有许多内网穿透的场景,大多数都使用zerotier或者tailscale等虚拟局域网(vpn设备)来进行穿透,有好处也有坏处,好处是所有的设备都在一个局域网中,坏处是要手动nginx的stream映射到公网中,而且当所处网络环境不好或者网络十分不稳定等情况,虚拟局域网的方案大概率没法快速打通直连,而且会发生丢包等一系列难以使用的情况。基于以上种种情况,frp出现了,frp 非常适合对外暴露内网的远程22端口。2.什么是frp?以及frp的原理FRP 是一个基于 TCP 的“反向代理 / 端口转发工具”,用于把内网服务稳定地暴露到公网。原理图如下:[ 内网机器 A ] --(frpc)--> [ 公网服务器 ] <--(访问)-- [ 外部机器 B ]可以看到frp的通信顺序,由内网机器主动访问公网服务器,然后将服务暴露在公网服务器的某一个端口中,这样就可以绕过内网机器的服务被nat挡住的困境。frp的核心思想,既然外部访问无法主动找到我的内网服务,那么我的内网服务就全部使用出的方案,主动和具有公网的机器进行沟通,就像是一只苍蝇一直和公网机器说:有服务通过你请求我吗?平常公网机器的回答都是否,但是一旦真的有请求,那么就会回答是然后回复请求内容给内网机器。在这过程中,内网机器就像是金枪鱼,必须一直不停的游动(和公网机器进行沟通),不能停下。为什么内网机器必须不停的主动询问公网机器呢?原因就是nat的规则,nat普遍只接受自己发送的请求的回包,一旦停止访问,公网机器转发外部服务的回包就不能进来了。所以frp的可靠性很高,毕竟所有机器对一台公网服务器的访问能力都不会太差的。3.具体如何使用frp?本节按照真实部署顺序说明 FRP 的使用方式,从环境准备到系统服务化,适合长期运行。3.1 FRP 是什么(一句话定位)FRP 是一个基于 TCP 的反向代理工具,用来把内网服务稳定暴露到公网。核心思想只有一句话:外部不能“入”,那就全部改成“内网主动出”。3.2 整体架构说明FRP 至少需要两台机器:[ 内网机器 ] ── frpc ──▶ [ 公网 VPS ] ── frps ──▶ 外部访问者角色说明:frps(服务端)部署在有公网 IP 的 VPS负责对外监听端口frpc(客户端)部署在内网环境(家里 / 公司)主动与 frps 建立长连接3.3 下载与安装 FRP(两端一致)以 Linux amd64 为例:wget https://github.com/fatedier/frp/releases/download/v0.52.3/frp_0.52.3_linux_amd64.tar.gz tar -zxvf frp_0.52.3_linux_amd64.tar.gz解压后目录结构如下:frps frpc frps.toml frpc.toml⚠️ 注意事项:frps 与 frpc 版本必须完全一致建议统一放在固定目录(如 /opt/frp_xxx)3.4 服务端配置(VPS:frps)3.4.1 编辑frps.tomlbindPort = 7000 auth.method = "token" auth.token = "替换为你自己的强随机字符串"参数说明:bindPortfrpc 连接入口端口(不是业务端口)auth.token防止未授权客户端接入3.4.2 手动启动测试./frps -c frps.toml出现以下日志即表示启动成功:frps started successfully3.4.3 放行防火墙与安全组端口(必须)VPS 本机防火墙(如 ufw):sudo ufw allow 7000/tcp sudo ufw allow 11808/tcp # 示例业务端口云厂商安全组:入方向放行 TCP 7000入方向放行 TCP 11808(或你实际使用的端口)3.5 客户端配置(内网:frpc)3.5.1 编辑frpc.tomlserverAddr = "VPS公网IP" serverPort = 7000 auth.method = "token" auth.token = "与frps保持一致" [[proxies]] name = "ssh-home" type = "tcp" localIP = "127.0.0.1" localPort = 22 remotePort = 11808含义说明:VPS:11808 → 内网机器:223.5.2 手动启动测试./frpc -c frpc.toml成功标志:login to server success start proxy success3.5.3 外部连通性验证在任意公网机器上执行:ssh 用户名@VPS公网IP -p 11808能够登录内网机器即表示穿透成功。3.6 将 frpc 设置为系统服务(开机自启)生产环境禁止使用 nohup 启动3.6.1 创建 systemd 服务文件(内网机器)sudo nano /etc/systemd/system/frpc.service内容如下:[Unit] Description=FRP Client Service After=network.target Wants=network.target [Service] Type=simple User=你的用户名 WorkingDirectory=/opt/frp_0.52.3_linux_amd64 ExecStart=/opt/frp_0.52.3_linux_amd64/frpc -c /opt/frp_0.52.3_linux_amd64/frpc.toml Restart=always RestartSec=5 LimitNOFILE=1048576 KillSignal=SIGTERM TimeoutStopSec=10 [Install] WantedBy=multi-user.target3.6.2 启用并启动服务sudo systemctl daemon-reload sudo systemctl enable frpc sudo systemctl start frpc检查状态:systemctl status frpc3.7 将 frps 设置为系统服务(VPS)3.7.1 创建 systemd 服务文件sudo nano /etc/systemd/system/frps.service[Unit] Description=FRP Server Service After=network.target Wants=network.target [Service] Type=simple User=root WorkingDirectory=/root/frp_0.52.3_linux_amd64 ExecStart=/root/frp_0.52.3_linux_amd64/frps -c /root/frp_0.52.3_linux_amd64/frps.toml Restart=always RestartSec=5 LimitNOFILE=1048576 KillSignal=SIGTERM TimeoutStopSec=10 [Install] WantedBy=multi-user.target3.7.2 启用并启动服务sudo systemctl daemon-reload sudo systemctl enable frps sudo systemctl start frps3.8 最终验收流程(必须完成)VPS 侧:ss -lntp | grep 7000 ss -lntp | grep 11808内网机器:systemctl status frpc重启测试:sudo reboot重启后确认:systemctl status frps systemctl status frpc3.9 常见问题汇总(踩坑记录)域名解析错误 → frps 日志无任何连接token 不一致 → EOF / session shutdownnohup 与 systemd 同时运行 → proxy already exists云安全组未放行业务端口使用 IPv6 但未放行 IPv6 防火墙规则
2025年12月31日
2 阅读
0 评论
0 点赞