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

相关推荐
the_nov21 分钟前
19.TCP相关实验
linux·服务器·网络·c++·tcp/ip
Y淑滢潇潇1 小时前
RHCSA Linux 系统创建文件
linux·运维·服务器
XYN611 小时前
【嵌入式学习3】基于python的tcp客户端、服务器
服务器·开发语言·网络·笔记·python·学习·tcp/ip
the_nov2 小时前
20.IP协议
linux·服务器·网络·c++·tcp/ip
源代码•宸3 小时前
Visual Studio Code SSH 连接超时对策( keep SSH alive)
运维·服务器·ide·经验分享·vscode·ssh
zyx没烦恼3 小时前
Linux 下 日志系统搭建全攻略
linux·服务器·开发语言·c++
大橘4 小时前
centos8上实现lvs集群负载均衡dr模式
服务器·负载均衡·lvs
码上飞扬4 小时前
深入探索 Linux Top 命令:15 个实用示例
linux·运维·服务器
灰色人生qwer4 小时前
内网服务器centos7安装jdk17
java·运维·服务器
念心科道尊4 小时前
【Csharp】Winform客户端与服务器,局域网加密字符串与文件通信
运维·服务器·c#