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

相关推荐
YongCheng_Liang3 分钟前
从零开始:Nginx 服务器安装、配置与实战使用完全指南
运维·服务器·nginx
闲人编程5 分钟前
TCP/UDP网络编程实战
服务器·网络·tcp/ip·udp·客户端·codecapsule
linux修理工8 分钟前
vagrant ansible 配置
linux·运维·服务器·数据库·centos
忆林5208 分钟前
关于微服务多链路调用405(客户端通过nginx请求后端A,A通过调用B的nginx请求B的后端)
服务器·nginx·微服务
RisunJan20 分钟前
Linux命令-free命令(查看系统内存(RAM)和交换空间(Swap)使用情况)
linux·运维·服务器
linux修理工22 分钟前
vagrant file 设置固定IP并允许密码登录
java·linux·服务器
似水流年 光阴已逝28 分钟前
拒绝“失联”:Linux 云服务器无法登录的全链路排查手册
linux·运维·服务器
脏脏a1 小时前
【Linux】进程优先级:谁先 “上车” 谁说了算?
linux·运维·服务器
_星辰大海乀9 小时前
IP 协议
服务器·网络·tcp/ip·nat·子网掩码·ip协议
屿行屿行9 小时前
【Linux】Socket编程(基于实际工程分析)
linux·服务器·网络