frp内网穿透

之前ddns-go + ipv6方案失效了,买了台阿里云服务器做内网穿透,上个周末折腾了 1 天没成功,昨晚+今天上午搞成功了,😆 开心~

前言

前提条件:一台有公网 IP 的服务器

输入uname -u查询当前系统架构,然后到frp下载对应的安装包

操作系统 系统架构 安装包类型 分工
苹果芯片 Mac arm64 arm64 frpc(客户端:要穿透的内网机器)
Alibaba Cloud Linux3 x86_64 amd64 frps(服务端)

安装包清单如下:

  • frps
  • frps.toml
  • frpc
  • frpc.toml
  • LICENSE

.toml是配置文件

安装与配置

服务端

完整的 frps 配置可以参考官方

# frps.toml
bindPort = 7000 # 客户端连接的端口
log.to = "/var/log/frps.log" # 日志路径

使用sftp工具,将frps文件上传到usr/local/bin目录下,将frps.toml文件上传到/opt目录下

客户端

完整的 frpc 配置可以参考官方

我 Mac 上使用 homebrew 包管理工具brew install frpc安装 frpc,安装路径是/opt/homebrew/Cellar

homebrew 安装的 frpc.toml 路径在/opt/homebrew/etc/frp

# frpc.toml
serverAddr = "47.255.255.198" # 阿里云服务器IP
serverPort = 7000 # 服务端连接的端口

[[proxies]]
name = "aimee" # 代理名称
type = "tcp" # 转发类型
localIP = "127.0.0.1" # 本地ip
localPort = 5001 # 本地端口
remotePort = 5000 # 远程端口

需要到阿里云 ECS 服务器上的安全组开通70005000端口

启动

服务端

单次手动启动

usr/local/bin/frps -c /opt/frps.toml

服务启动项

nano /etc/systemd/system/frps.service

nano 是 Linux 上轻量级文本编辑器,输入命令后,会进入编辑状态,粘贴以下内容,然后按 Ctrl + X 退出,按 Y 确认保存,按 Enter 保存文件

如果提示-bash: nano: command not found则用yum install nano安装下

[Unit]
Description=FRP Server
After=network.target

[Service]
ExecStart=/usr/local/bin/frps -c /opt/frps.toml
Restart=always
User=root
Group=root

[Install]
WantedBy=multi-user.target
# 重新加载systemd配置
systemctl daemon-reload
# 启动服务
systemctl start frps
# 开机自启动
systemctl enable frps
# 检查是否成功
systemctl status frps

客户端

# 启动
brew services start frpc
# 检查是否成功
brew services

日志路径会存储在/opt/homebrew/var/log路径下

测试

在浏览器中输入http://121.255.255.198:5000访问内网的 web 服务


参考资料

  • http 转发要求customDomains必填,没有域名怎么办? 答案
  • 怎么穿透多个 http 端口? 答案

更新日志

  • 20240727:初稿