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等服务,并且可以只将需要向外暴露的服务端端口使用反向代理,不需要暴露的服务就在内网访问控制,可以确保数据和服务端安全

相关推荐
IT大白鼠1 小时前
Linux账号和权限管理
linux·运维·服务器
hweiyu002 小时前
Linux命令:ip6tables
linux·运维·服务器
ITyunwei09872 小时前
灾难恢复与业务连续性:如何确保天灾人祸下,业务也能“屹立不倒”?
运维·服务器
爱喝水的鱼丶3 小时前
SAP-ABAP:新手入门篇——从0到1写出你的第一个ABAP Hello World程序并完成调试运行
运维·服务器·数据库·学习·sap·abap
学术小李3 小时前
VSCode上传文件到服务器
服务器·vscode·sftp·数据上传
Rust研习社4 小时前
Ubuntu 全面拥抱 Rust 后,我意识到 Rust 社区要变了
linux·服务器·开发语言·后端·ubuntu·rust
hahaha 1hhh4 小时前
用SSH 建立了一个本地端口转发隧道,用于安全地访问远程服务器上的服务,后台运行。autodl
服务器·安全·ssh
小肝一下6 小时前
3.linux——进程控制
linux·运维·服务器·进程控制
北山有鸟6 小时前
linux设备全解析
linux·运维·服务器
fpcc7 小时前
Linux命令——lsof分析说明
linux·服务器