frp 内网穿透:让云服务器成为内网服务器的“摆渡人”

1. 介绍

对于开发者而言,云服务已成为不可或缺的基础设施工具。然而,市面上配置稍高的云服务器往往价格不菲,成为许多开发团队或个人项目的成本瓶颈。下面推荐一种高效且经济的解决方案:通过轻量级反向代理工具 FRP(Fast Reverse Proxy) ,将公网云服务器与内网设备无缝连接。这一方案能够突破传统云服务的限制,还可以扩展云服务器下设备的数量,并且还可以将不必要的服务器不用暴露在公网上极大的增加了安全性。

项目下载:github.com/fatedier/fr...

2. 服务端配置

2.1 安装和配置项目

  1. 服务器上下载项目
bash 复制代码
# 选择对应的系统版本将项目下载到代码中
wget https://github.com/fatedier/frp/releases/download/v0.61.2/frp_0.61.2_linux_amd64.tar.gz 
  1. 解压压缩包并更改文件夹名字
bash 复制代码
# 解压项目
tar -zxvf frp_0.61.2_linux_amd64.tar.gz

# 重命名为frp
mv frp_0.61.2_linux_amd64 frp

# 项目中对应的文件:
# frpc           客户端可执行文件
# frpc.toml      客户端配置文件
# frps           服务端可执行文件  
# frps.toml      服务端配置文件

服务端的配置文件修改和启动就对应 frps.toml , frps 两个文件

3.编辑配置文件

toml 复制代码
bindPort = 7000            # 客户端连接的端口
auth.method = "token"      # 认证方式
auth.token = "your_password"  # 客户端需使用相同的token

# 可选:Web管理界面(按需开启)
webServer.addr = "0.0.0.0"
webServer.port = 7500
webServer.user = "admin"
webServer.password = "admin"

4.测试启动服务

bash 复制代码
# 添加执行权限
chmod +x frps
./frps -c frps.toml

2.2 设置为系统后台启动(Linux)

将刚刚下载的frp文件转移至/usr/local/frp/

  1. 创建systemd服务文件
bash 复制代码
sudo vim /etc/systemd/system/frps.service

将配置文件内容粘贴进去

ini 复制代码
[Unit]
Description=FRP Server (frps)
After=network.target

[Service]
Type=simple
User=root  # 如果 frps 需要高权限(如绑定低端口),否则改为你的用户名
WorkingDirectory=/usr/local/frp
ExecStart=/usr/local/frp/frps -c /usr/local/frp/frps.toml
Restart=on-failure  # 崩溃时自动重启
RestartSec=5s
StandardOutput=syslog
StandardError=syslog

[Install]
WantedBy=multi-user.target
  1. 设置权限并启动服务
bash 复制代码
# 确保 frps 可执行
sudo chmod +x /usr/local/frp/frps

# 重新加载 systemd 配置
sudo systemctl daemon-reload

# 启动 frps
sudo systemctl start frps

# 检查状态(看到 "active (running)" 即成功)
sudo systemctl status frps

# 设置开机自启
sudo systemctl enable frps
  1. 验证服务
    a.查看实时日志:

    bash 复制代码
    journalctl -u frps -f

    b.测试端口

    bash 复制代码
    curl http://127.0.0.1:7500  # 测试 Dashboard
    telnet 127.0.0.1 7000       # 测试客户端连接端口

2.客户端配置

2.1 安装和配置项目

  1. 项目的安装方式和服务端是一样的
    客户端的启动和配置文件修改对应:frpc,frpc.toml

2.修改配置文件 通过编辑sudo vim /usr/local/frp/frpc.toml 编辑frpc.toml

toml 复制代码
serverAddr = "0.0.0.0"  # 你的FRP服务器IP
serverPort = 7000

auth.method = "token"
auth.token = "xxxxxxxxxxxxxx"  # 与服务器一致的token

[[proxies]]
name = "ssh-tunnel"
type = "tcp"
localIP = "127.0.0.1"
localPort = 22
remotePort = 6000  # 服务器端监听的端口
  1. 测试运行
bash 复制代码
cd /usr/local/frp
sudo ./frpc -c frpc.toml

2.2 设置服务器后台自启

  1. 创建systemd 服务文件
shell 复制代码
sudo vim /etc/systemd/system/frpc.service
  1. 服务器文件内容
ini 复制代码
[Unit]
Description=FRP Client Daemon
After=network.target
Wants=network.target

[Service]
Type=simple
ExecStart=/usr/local/frp/frpc -c /usr/local/frp/frpc.toml
Restart=on-failure
RestartSec=5s
User=nobody
WorkingDirectory=/usr/local/frp

[Install]
WantedBy=multi-user.target
  1. 启用服务
shell 复制代码
# 重新加载 systemd
sudo systemctl daemon-reload

# 设置开机启动
sudo systemctl enable frpc

# 立即启动服务
sudo systemctl start frpc

# 检查状态
sudo systemctl status frpc

3. 结尾

通过以上配置可以实现通过云服务器实现从公网上访问到内网的服务器,后续可以根据自己的需求,部署Gitlab,jenkinbs,nginx等服务,并且可以只将需要向外暴露的服务端端口使用反向代理,不需要暴露的服务就在内网访问控制,可以确保数据和服务端安全

相关推荐
知白守黑2673 分钟前
访问控制、用户认证、https
linux·服务器·前端
阿巴~阿巴~13 分钟前
MySQL索引特性(重点)
服务器·数据库·sql·mysql·ubuntu
一张假钞23 分钟前
Mac OS远程执行Shell命令技巧
linux·运维·服务器
z_y_j22997043838 分钟前
服务器中更新前端项目
服务器·前端
weixin_443290691 小时前
【云服务器相关】云服务器与P2P
运维·服务器·云计算·p2p
牛奶咖啡131 小时前
解决keepalived的主备服务器都持有VIP——出现脑裂现象
linux·运维·服务器·vrrp·脑裂·keepalived主备·高可用主备都持有vip
weixin_423196172 小时前
使用vscode的ssh功能连接远程服务器卡在Setting up SSH Host IP: Downloading VS Code Server的解决方案
服务器·vscode·ssh
☆璇2 小时前
【Linux】库的链接与加载
linux·运维·服务器
半夏知半秋2 小时前
基于skynet框架业务中的gateway实现分析
服务器·开发语言·后端·学习·gateway
问道飞鱼4 小时前
【服务器知识】HTTP 请求头信息及其用途详细说明
运维·服务器·nginx·http·http头信息