AI摘要

本文介绍了如何使用FRP(Fast Reverse Proxy)搭建内网穿透方案,实现从家中安全访问公司内网服务,告别VPN的繁琐配置。文章详细列出了搭建方案所需的准备清单,包括云服务器、公司内网服务器/电脑、家用电脑和需要访问的公司服务。接着,文章分步骤介绍了如何在云服务器上部署frp服务端,包括SSH登录、安装frp、配置frps、创建systemd服务、启动服务、配置防火墙和验证服务端。然后,文章指导如何在公司内网部署frp客户端,包括下载frp客户端、配置frp客户端、启动客户端和验证连接。通过这些步骤,用户可以突破内网限制,随时随地访问公司资源,无需复杂VPN配置,支持多种协议,实现安全稳定的远程办公。

目录

🎯 目标

本章将使用FRP(Fast Reverse Proxy)搭建内网穿透方案,实现从家中安全访问公司内网服务,告别VPN的繁琐配置,让远程办公像在公司一样便捷。

核心价值:

  • ✅ 突破内网限制,随时随地访问公司资源
  • ✅ 无需复杂VPN,一次配置长期使用
  • ✅ 支持多种协议,覆盖常见开发场景
  • ✅ 安全稳定,企业级解决方案

    📋 准备清单

  • [ ] 云服务器(1核2G,公网IP)
  • [ ] 公司内网一台服务器/电脑(能访问外网)
  • [ ] 家用电脑(Windows/Mac)
  • [ ] 需要访问的公司服务(MySQL/Redis/Nacos等)

步骤一:云服务器部署 frp 服务端

1.1 SSH 登录云服务器

ssh root@你的云服务器IP

1.2 安装 frp

# 创建目录
mkdir -p /opt/frp && cd /opt/frp

# 下载(检查最新版本:https://github.com/fatedier/frp/releases)
wget https://github.com/fatedier/frp/releases/download/v0.65.0/frp_0.65.0_linux_amd64.tar.gz

# 解压
tar -zxvf frp_0.65.0_linux_amd64.tar.gz
cd frp_0.65.0_linux_amd64

# 复制服务端文件
cp frps /usr/local/bin/
chmod +x /usr/local/bin/frps

# 创建配置目录
mkdir -p /etc/frp /var/log/frp

1.3 配置 frps

vim /etc/frp/frps.toml

粘贴以下内容(⚠️ 修改 token):

# frp 服务端配置
bindPort = 7000
auth.token = "your_complex_token_here_12345678"  # ⚠️ 改成强密码

# Web 管理界面
webServer.addr = "0.0.0.0"
webServer.port = 7500
webServer.user = "admin"
webServer.password = "admin_password_123"  # ⚠️ 改成强密码

# 日志
log.to = "/var/log/frp/frps.log"
log.level = "info"
log.maxDays = 7

# 性能优化
transport.maxPoolCount = 5
transport.tcpMux = true

1.4 创建 systemd 服务

cat > /etc/systemd/system/frps.service <<'EOF'
[Unit]
Description=frp server
After=network.target
Wants=network.target

[Service]
Type=simple
ExecStart=/usr/local/bin/frps -c /etc/frp/frps.toml
Restart=on-failure
RestartSec=5s
User=root

[Install]
WantedBy=multi-user.target
EOF

1.5 启动服务

# 重载 systemd
systemctl daemon-reload

# 启动 frps
systemctl start frps
systemctl enable frps

# 检查状态
systemctl status frps

# 查看日志
tail -f /var/log/frp/frps.log
```

预期输出:
```
● frps.service - frp server
   Active: active (running)
   ...

1.6 配置防火墙

# 如果使用 firewalld
firewall-cmd --permanent --add-port=7000/tcp    # frp 通信端口
firewall-cmd --permanent --add-port=7500/tcp    # Web 管理端口
firewall-cmd --permanent --add-port=7001-7010/tcp  # 服务映射端口
firewall-cmd --reload

# 如果使用 ufw
ufw allow 7000/tcp
ufw allow 7500/tcp
ufw allow 7001:7010/tcp

# 如果使用 iptables
iptables -A INPUT -p tcp --dport 7000 -j ACCEPT
iptables -A INPUT -p tcp --dport 7500 -j ACCEPT
iptables -A INPUT -p tcp --dport 7001:7010 -j ACCEPT
service iptables save

⚠️ 重要:还需要在云服务器控制台的安全组中开放这些端口!

阿里云:控制台 → ECS → 安全组 → 配置规则 → 添加 腾讯云:控制台 → 云服务器 → 安全组 → 入站规则 → 添加

1.7 验证服务端

# 检查端口监听
netstat -tlnp | grep frps
# 或
ss -tlnp | grep frps

# 预期输出:
# tcp  0.0.0.0:7000  LISTEN  xxx/frps
# tcp  0.0.0.0:7500  LISTEN  xxx/frps

# 访问 Web 管理界面
curl http://127.0.0.1:7500

浏览器访问:http://你的云服务器IP:7500

  • 用户名:admin
  • 密码:admin_password_123

步骤二:公司内网部署 frp 客户端

2.1 下载 frp 客户端

在公司内网服务器/电脑上操作:

Linux:

cd /opt
wget https://github.com/fatedier/frp/releases/download/v0.65.0/frp_0.65.0_linux_amd64.tar.gz
tar -zxvf frp_0.65.0_linux_amd64.tar.gz
cd frp_0.65.0_linux_amd64
cp frpc /usr/local/bin/
chmod +x /usr/local/bin/frpc
mkdir -p /etc/frp

Windows:

  1. 下载:
    https://github.com/fatedier/frp/releases/download/v0.65.0/frp_0.65.0_windows_amd64.zip
  2. 解压到 C:\frp\

2.2 配置 frp 客户端

Linux:

vim /etc/frp/frpc.toml

Windows: 创建 C:\frp\frpc.toml

粘贴以下内容(修改你的实际信息):

# frp 客户端配置
serverAddr = "你的云服务器IP"  # ⚠️ 改成你的云服务器公网IP
serverPort = 7000
auth.token = "your_secure_token_12345"  # ⚠️ 与服务端一致

# 日志
log.to = "/var/log/frp/frpc.log"  # Windows: C:\frp\frpc.log
log.level = "info"

# ===== 服务映射配置 =====

# MySQL 映射
[[proxies]]
name = "mysql"
type = "tcp"
localIP = "192.168.1.100"    # ⚠️ 改成你公司 MySQL 的内网IP
localPort = 3306
remotePort = 7001            # 云服务器上的端口

# Redis 映射
[[proxies]]
name = "redis"
type = "tcp"
localIP = "192.168.1.101"    # ⚠️ 改成你公司 Redis 的内网IP
localPort = 6379
remotePort = 7002

# Nacos 映射
[[proxies]]
name = "nacos"
type = "tcp"
localIP = "192.168.1.102"    # ⚠️ 改成你公司 Nacos 的内网IP
localPort = 8848
remotePort = 7003

# Jenkins 映射(可选)
[[proxies]]
name = "jenkins"
type = "tcp"
localIP = "192.168.1.103"
localPort = 8080
remotePort = 7004

# 如果本机就是服务器,localIP 可以填 127.0.0.1

2.3 启动客户端

Linux (systemd):

# 创建服务
cat > /etc/systemd/system/frpc.service <<'EOF'
[Unit]
Description=frp client
After=network.target

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

[Install]
WantedBy=multi-user.target
EOF

systemctl daemon-reload
systemctl start frpc
systemctl enable frpc
systemctl status frpc

Windows:

# 以管理员身份运行 PowerShell
cd C:\frp
.\frpc.exe -c frpc.toml

# 或者注册为 Windows 服务(使用 NSSM 工具)

2.4 验证连接

在云服务器上检查:

# 查看端口是否监听
netstat -tlnp | grep -E '7001|7002|7003'

# 预期输出:
# tcp  0.0.0.0:7001  0.0.0.0:*  LISTEN  xxx/frps
# tcp  0.0.0.0:7002  0.0.0.0:*  LISTEN  xxx/frps
# tcp  0.0.0.0:7003  0.0.0.0:*  LISTEN  xxx/frps

# 测试连接 MySQL(如果映射了)
telnet 127.0.0.1 7001
# 或
mysql -h 127.0.0.1 -P 7001 -u root -p

查看 frp Web 管理界面: 访问 http://你的云服务器IP:7500,应该能看到客户端已连接,以及映射的服务列表。

标签: FRP, 内网穿透, 远程办公, 端口转发, 云服务器

添加新评论