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

相关推荐
小小菜鸡ing4 小时前
pymysql
java·服务器·数据库
当归10247 小时前
SQL Server死锁排查实战指南
java·服务器·网络
qinyia7 小时前
用 Wisdom SSH 轻松实现服务器自动化任务调度
服务器·自动化·ssh
bug攻城狮7 小时前
彻底禁用 CentOS 7.9 中 vi/vim 的滴滴声
linux·运维·服务器·centos·vim
Sweety丶╮79410 小时前
【Ansible】实施 Ansible Playbook知识点
服务器·云原生·ansible
optiz11 小时前
细菌基因组genome二代测序数据分析
linux·运维·服务器
m0_6613162312 小时前
modbus_tcp和modbus_rtu对比&移植AT-socket,modbus_tcp&杂记
服务器·网络·tcp/ip
IT成长日记12 小时前
【Linux基础】Linux系统管理:GPT分区实践详细操作指南
linux·运维·服务器·gpt·parted·磁盘分区·fdisk
人工智能训练师12 小时前
在Ubuntu中如何使用PM2来运行一个编译好的Vue项目
linux·运维·服务器·vue.js·ubuntu·容器
程序媛Dev13 小时前
50.4k Star!我用这个神器,在五分钟内搭建了一个私有 Git 服务器!
运维·服务器·git