项目简介
本项目是基于ESP-IDF框架开发的固件,把ESP32作为同一网络中的端口转发器。因部分本地路由器支持的端口转发规则有限,此项目应运而生。它可接收特定端口的流量,并将其转发到本地网络的其他IP上。该项目基于martin - ger的ESP32 NAT Router代码开发,修改了lwip库以支持同一网络的端口转发,还具备OTA固件更新等功能。
项目的主要特性和功能
- 端口转发功能:最多可设置32条端口转发规则,支持TCP和UDP协议,能按规则将同一网络的传入数据包转发到其他设备。
- 网络拓展与隔离:可作为现有WiFi网络的简单范围扩展器,也能为访客或物联网设备设置有不同SSID和密码的额外WiFi网络。
- 高带宽:测试中,使用
IPv4
和TCP
协议,能实现超15mbps的带宽。 - 多种配置方式:支持通过简单的Web界面或串行控制台配置,如设置WiFi网络、端口映射规则等;还能通过命令行接口进行更细致的操作,如管理NVS存储、设置睡眠模式等。
- OTA固件更新:支持通过Web进行OTA固件更新,无需物理连接到ESP32。
- LED状态指示:可通过板载LED的状态和闪烁次数判断ESP32与上游AP的连接状态以及连接到ESP32的设备数量。
安装使用步骤
前提条件
用户已下载本项目的源码文件。
步骤
- 构建并烧录固件
- 下载并设置ESP-IDF。
- 在项目目录中运行
make menuconfig
(或idf.py menuconfig
用于cmake),确保以下选项被启用:- *Component config -> LWIP > [x] Enable copy between Layer2 and Layer3 packets。
- *Component config -> LWIP > [x] Enable IP forwarding。
- *Component config -> LWIP > [x] Enable NAT (new/experimental)。
- 构建项目并将其烧录到ESP32:
esptool.py --chip esp32 --port /dev/ttyUSB0 \ --baud 115200 --before default_reset --after hard_reset write_flash \ -z --flash_mode dio --flash_freq 40m --flash_size detect \ 0x1000 build/bootloader/bootloader.bin \ 0x10000 build/esp32_nat_router.bin \ 0x8000 build/partitions_example.bin
- 也可使用 Espressif's Flash Download Tools ,并按相应参数配置。
- 首次启动与配置
- 首次启动后,ESP32将提供一个开放的AP,SSID为“ESP32_NAT_Router”。
- 可通过以下两种方式配置:
- Web界面:将PC或智能手机连接到该WiFi SSID,在浏览器中访问“http://192.168.4.1” ,先配置“STA Settings”(上行WiFi网络),点击“Connect” ,ESP32重启并连接到WiFi路由器;之后重新连接并刷新页面,配置“Soft AP Settings” ,点击“Set” ,ESP32再次重启,即可开始通过新配置的Soft AP转发流量。
- 串行控制台:使用串行控制台(如Putty或GtkTerm,波特率115200bps),通过“set_sta”和“set_ap”命令配置WiFi设置,使用“show”命令显示当前配置,NVS命名空间为“esp32_nat” 。
- 配置端口转发规则:连接到ESP32的静态IP,使用浏览器或命令行(
portmap [add|del] [TCP|UDP] <ext_portno> <int_ip> <int_portno>
)配置端口转发规则。 - OTA固件更新:若需更新固件,可通过Web界面上传固件文件(.bin)进行OTA更新。
下载地址
点击下载 【提取码: 4003】【解压密码: www.makuang.net】