基于FRP+阿里云轻量服务器实现内网穿透

第一步:在阿里云服务器上配置Frp服务端

1. 安装Frp服务端

  1. 下载Frp

    • 首先,在阿里云服务器上下载Frp。进入Frp的GitHub releases页面,下载适合你的系统版本(通常选择Linux版本)。

    • 或者直接在阿里云服务器上执行以下命令来下载并解压:

      bash
      复制代码
      wget https://github.com/fatedier/frp/releases/download/v0.39.1/frp_0.39.1_linux_amd64.tar.gz tar -zxvf frp_0.39.1_linux_amd64.tar.gz cd frp_0.39.1_linux_amd64

      注意!服务端是frps! 注意!服务端是frps! 注意!服务端是frps!

  2. 配置Frp服务端

    • 编辑frps.ini配置文件:

      text
      复制代码
      [common] # Frp服务端的监听端口 bind_port = 7000 # Frp控制面板端口 dashboard_port = 7500 # 控制面板用户名 dashboard_user = admin # 控制面板密码 dashboard_pwd = password # 自己定义 token = ########
    • bind_port 是客户端连接到Frp服务器所需的端口,dashboard_port是Frp的控制面板端口,可以在浏览器中访问查看连接状态。

    • 注释必须换行写,不然会有异常导致启动失败

  3. 启动Frp服务端

    • 在当前目录中运行以下命令启动Frp服务端:
      bash
      复制代码
      ./frps -c frps.ini

使用 nohup 后台运行

使用 nohup 可以使程序在后台运行,即使关闭终端会话,程序也不会被终止。

bash
复制代码
nohup ./frps -c frps.ini > frps.log 2>&1 &
  • nohup:保持程序在后台运行。
  • > frps.log 2>&1:将输出日志写入 frps.log 文件。
  • &:让程序在后台运行。

查看日志:如果需要查看运行日志,可以查看 frps.log 文件:

bash
复制代码
tail -f frps.log
  1. 设置阿里云安全组
    • 登录到阿里云控制台,进入 安全组 设置,添加入站规则以开放以下端口:
      • 7000:用于Frp客户端连接
      • 7500:用于访问Frp控制面板(可选,建议用于管理查看连接情况)
      • 9090:Frp客户端隧道连接的远程端口(或自行选择的端口)

轻量级服务器只需要打开防火墙即可

第二步:在内网Ubuntu机器上配置Frp客户端

1. 下载和安装Frp客户端

在内网的Ubuntu机器上,下载并解压与服务器相同版本的Frp客户端:

bash
复制代码
wget https://github.com/fatedier/frp/releases/download/v0.39.1/frp_0.39.1_linux_amd64.tar.gz tar -zxvf frp_0.39.1_linux_amd64.tar.gz cd frp_0.39.1_linux_amd64

注意!客户端是frpc! 注意!客户端是frpc! 注意!客户端是frpc!

2. 配置Frp客户端

  1. 编辑客户端配置文件frpc.ini

    • 在客户端目录中创建并编辑frpc.ini,按以下配置:
      text
      复制代码
      [common] # 你的阿里云服务器公网IP server_addr = 阿里云服务器IP # 与服务端一致的连接端口 server_port = 7000 [web] type = tcp # 本地内网应用端口(如Web服务) local_port = 8080 # 公网访问端口(设置为之前在阿里云开放的端 remote_port = 9090
    • local_port是需要暴露的本地服务端口,例如内网的Web服务使用8080端口。
    • remote_port则是阿里云服务器上的公网端口,访问该端口将会自动转发到内网机器上的local_port
    • 注释必须换行写,不然会有异常导致启动失败
  2. 启动Frp客户端

    • 在内网Ubuntu机器上启动Frp客户端,执行:
      bash
      复制代码
      ./frpc -c frpc.ini
    • 启动后,Frp会将阿里云服务器的9090端口流量转发到内网Ubuntu机器上的8080端口。

第三步:测试和验证

  1. 访问内网服务
    • 在外网环境下,通过访问 http://阿里云服务器IP:9090 测试连接。如果配置无误,应该可以正常访问内网Ubuntu机器的8080端口服务。
  2. 查看Frp控制面板(可选)
    • 在浏览器中访问 http://阿里云服务器IP:7500,使用之前设置的用户名和密码登录,可以查看Frp客户端连接状态和流量情况。

第四步:设置Frp自启动(可选)

为方便起见,可以在内网Ubuntu机器上设置Frp客户端开机自启动。

  1. 创建Systemd服务: 在/etc/systemd/system/目录下创建frpc.service文件:

    bash
    复制代码
    sudo vim /etc/systemd/system/frpc.service
  2. 添加以下内容

    text
    复制代码
    [Unit] Description=Frp Client Service After=network.target [Service] Type=simple # 启动前等待15秒 ExecStartPre=/bin/sleep 15  ExecStart=/path/to/frpc -c /path/to/frpc.ini Restart=on-failure RestartSec=10 [Install] WantedBy=multi-user.target

    /path/to/frpc/path/to/frpc.ini替换为Frp客户端程序和配置文件的实际路径。

  3. 启动并启用服务

    bash
    复制代码
    sudo systemctl daemon-reload sudo systemctl start frpc sudo systemctl enable frpc

可能遇到的问题

  1. 端口未开放:确保阿里云安全组配置中已开放所需端口。
  2. 防火墙问题:检查Ubuntu内网机器上的防火墙规则,确保8080端口开放。
  3. Frp版本不兼容:确保客户端和服务端Frp版本一致。
  4. 客户端端(frpc)启动异常:服务端(frps)必须先开启,客户端(frpc)再开启!

多个端口映射的配置

以下是一个示例,展示如何配置多个不同的端口映射:

text
复制代码
[common] server_addr = 阿里云服务器IP # 你的阿里云服务器公网IP server_port = 7000 # 与服务端一致的连接端口 # 第一个端口映射(如Web服务) [web] type = tcp local_port = 8080 # 本地Web服务端口 remote_port = 9090 # 公网访问端口 # 第二个端口映射(如SSH服务) [ssh] type = tcp local_port = 22 # 本地SSH服务端口 remote_port = 9022 # 公网访问端口 # 第三个端口映射(如数据库服务) [database] type = tcp local_port = 3306 # 本地数据库服务端口 remote_port = 9033 # 公网访问端口 # 添加更多的端口映射 # [服务名称] # type = tcp # local_port = 本地服务端口 # remote_port = 公网访问端口

配置说明

  • 每个映射块(如 [web][ssh] 等)使用不同的名称。名称是唯一的,可以根据具体服务自定义。
  • type 指定传输类型,tcp 用于普通 TCP 连接,http 或 https 可用于 HTTP/HTTPS 代理服务。
  • local_port 是内网中实际服务的端口,比如本地的 Web 服务可能运行在 8080 端口,而 SSH 服务运行在 22端口。
  • remote_port 是对应的公网端口。要在阿里云服务器上开放这些端口,以便外网可以访问。

重启 Frp 客户端

保存配置文件后,启动 Frp 客户端,多个端口映射将自动生效:

bash
复制代码
sudo systemctl restart frpc.service
  • 该命令需要设置好开机自启步骤,才能生效

测试访问

  • 通过 http://阿里云服务器IP:9090 访问本地的 8080 端口服务。
  • 通过 ssh 用户名@阿里云服务器IP -p 9022 访问内网机器的 SSH 服务(端口 22)。
  • 通过 阿里云服务器IP:9033 访问内网机器的数据库服务(端口 3306)。

总结

通过上述配置,你的阿里云服务器和内网机器通过Frp连接,成功实现了内网穿透。使用http://阿里云服务器IP:9090即可访问内网机器上8080端口的服务。

在 frpc.ini 配置文件中,你可以通过添加多个配置块实现多个端口的映射。每个映射可以定义一个 [代理名称]块,其中指定 local_port(内网端口)和 remote_port(映射到公网的端口)。

0个评论
点击登录,快来和大家讨论吧~
表情
图片
暂无评论
Sion
下载 APP