跳到主要内容

在OpenWrt上安装frp实现内网穿透

· 阅读需 3 分钟

使用OpenWrt路由器作为frp客户端

Windows 的杀毒软件会误报frp,所以我们可以使用OpenWrt路由器作为frp的客户端,这样就不会有杀毒软件的问题了。 OpenWrt是一个适用于嵌入式设备的Linux发行版,可以运行在路由器、网关、嵌入式设备等设备上。

为了便于部署,我们可以使用Docker容器来运行frp客户端,这样就不需要在路由器上安装额外的软件。

在OpenWrt扩展存储

OpenWrt默认情况下只有很少的存储空间,无法安装Docker。我们可以通过扩展存储来增加存储空间。这个存储空间就是TF卡上没有利用的空间。

  1. 先查看路由器的存储空间:系统->磁盘管理

alt text

  1. 找到有空间的磁盘,点击修改,创建新的分区

alt text

  1. 分区格式采用ext4,然后选择格式化

alt text

  1. 选择 系统->挂载点,添加新的挂载点

alt text

  1. 启用此挂载点,选对应的磁盘,作为docker分区使用,保存/应用

alt text

  1. 最后重启路由器

alt text

在OpenWrt上安装Docker

OpenWrt 的包管理器是 opkg,可以使用 opkg 安装 Docker。其功能类似于 Ubuntu 的 apt-get。

  1. 首先更新 opkg 的软件包列表,这个必须要做,否则无法找到 Docker 的软件包。
opkg update
  1. 安装 Docker
# 安装 Docker 客户端
opkg install docker
# 安装 Docker 管理界面
opkg install luci-app-dockerman
# 安装 Docker 服务
opkg install dockerd
# 安装 Docker Compose
opkg install docker-compose
  1. 启动 Docker 服务

从 OpenWrt 的 Web 界面启动 Docker 服务,或者使用命令行启动 Docker 服务。

/etc/init.d/dockerd start
  1. 创建frp客户端的配置文件

创建一个目录,比如 /opt/container/frp,然后在这个目录下创建一个 frpc.toml 文件,内容如下:

# frpc.toml
serverAddr = "new.baca.org.cn"
serverPort = 7000
auth.token = "eUH4K344Q7jY3Q8h1bRP3NkYBBVvHs7BmC5i5XA"

[[proxies]]
name = "office"
type = "xtcp"
localIP = "192.168.188.251"
secretKey="99ioHhY0oz7gqQ1isAq"
localPort = 3389

其中 localIP 和 localPort 是要映射的本地服务的地址和端口,这里是将本地的3389端口映射到互联网上。

  1. 编辑 docker compose 配置文件

创建一个目录,比如 /opt/container,然后在这个目录下创建一个 docker-compose.yml 文件,内容如下:

services:
frpc:
image: snowdreamtech/frpc
container_name: frpc
volumes:
- /opt/container/frp/frpc.toml:/etc/frp/frpc.toml
restart: always
network_mode: "host"
  1. 使用 docker-compose 启动 frp 客户端

在 /opt/container 目录下执行以下命令:

docker-compose up -d

这样就可以在 OpenWrt 路由器上运行 frp 客户端了,实现内网穿透。

总结

通过上面的步骤,我们可以使用 frp 实现内网穿透,将本地服务暴露到互联网上。通过在 OpenWrt 路由器上运行 frp 客户端,我们可以避免 Windows 杀毒软件的误报问题,同时也可以利用路由器的稳定性和网络性能,实现更好的内网穿透效果。