雪山深处

用 frp 来在 OpenWrt 下实现内网穿透

用 frp 来在 OpenWrt 下实现内网穿透

2020 年 07 月 19 日 • 4 分钟

Openwrt
技术

写在前面

最近从 PandoraBox 转到 OpenWrt 阵营,无奈原本的 phddns 无法使用了,今天摸索了下 frp,发现出乎意料的简单!frp 与普通内网穿透最大的不同是它需要一个有固定公网 IP 的主机或是云服务器(VPS),如果你恰好有那么一个正在挂着博客网站的云服务器,那么它就能派上用场!下面以 Windows Server 2016 来作服务端,以 OpenWrt 18.06.8 来作客户端进行演示。

准备步骤

  1. 下载 frp site preview image 作为服务端

    比如我的 VPS 的系统是 Windows、CPU 是 E5,那么我就要下载 windows_amd64。

  2. 解压

    解压后会发现里面主要分为 frps 和 frpc 两种,前者是给服务端后者是给客户端用的,由于我们只需要服务端所以把 frps 相关的发送给你的 VPS 就好,客户端我们使用下面的 openwrt-frp。

  3. 下载 openwrt-frp site preview image 作为客户端

    下载客户端端所需的程序,比如我的路由器的系统是 OpenWrt、CPU 是 MT7621,那么我就要下载 mipsel_24kc。

  4. 下载 luci-app-frpc site preview image 让我们可以在路由器管理页面操作 frpc

把路由器的 Web 管理页放到公网去

服务端配置

  1. 修改服务端的 frps.ini 文件,设置 http 访问端口为 8000:

    # frps.ini
    [common]
    bind_port = 7000
    vhost_http_port = 8000
  2. 在防火墙 里开放 7000 和 8000 端口,另外安全起见建议你在调试结束后修改默认的 7000 端口或添加客户端身份验证

  3. 启动 frps:

    ./frps -c ./frps.ini

出现 start frps success 即说明启动成功。

客户端配置

修改服务端配置

  • 服务端地址 → VPS 的 ip
  • 服务端端口 → 对应服务端配置中的 bind_port
  • 令牌 → 对应服务端配置中的 token
服务端配置

添加/修改规则

  • 修改 类型HTTP
  • 修改 自定义域名 为你想在浏览器访问的地址,我这里设为 router.talaxy.site
添加/修改规则

启动 openwrt-frpc

启动 openwrt-frpc

成果

当出现服务端出现 http proxy listen for host [router.talaxy.site] 时,说明服务端与客户端已成功建立连接,这之后就能通过访问 http://router.talaxy.site:8000 访问到内网中路由器的 Web 管理页了。

TopNep

让 frp 在后台运行

服务端

Windows: 只要不关掉控制台即可。

Linux: frp 解压后有一份 service 文件,可以添加至系统服务中。

客户端

完全不用其它操作,openwrt-frp 会做好他的工作。

最后

frp 能做的事有很多,你可以查看 这里 site preview image 学习更多操作,比如把内网的 ssh 放到公网上,或是用来给游戏服务器做内网穿透。

本文最后于2022 年 02 月 14 日更新,一些操作可能已经过时