采用最新的OpenWrt稳定版,在里面添加下面几个需求。
整个任务很简单就是在linux下建立几个tcp服务,接收客户连接同时自身还要连接服务器。
需求一:参数设置:
路由器标识采用MAC地址,其他标识等多个参数
是否开启串口数据转发服务,可以设置多个转发IP端口(支持内网IP和外网IP)
是否开启内网IP转发服务,可以设置多个转发IP端口(支持内网IP和外网IP)
可以配置wifi 3G 有线 同时存在时优先通过哪种连接外网
需求二:串口数据转发服务:
路由器上电后,检测到开启串口转发服务后,主动与多个转发IP建立tcp长连接,建立连接后先发送路由器标识登录上转发IP, 并在某个指定的端口建立tcpserver服务端,等待LAN的IP终端连接,路由器把从串口来的数据都转发到外网服务器和已经建立连接的LAN口IP终端去,同时把从外网服务器和LAN口已经建立连接的IP终端而来的数据也转发到串口去。
需求三:路由器内网指定IP转发服务:
路由器上电后,检测到开启内网IP转发服务后,建立tcpserver服务端A,并主动与多个转发IP建立tcp长连接,建立连接后先发送路由器标识登录上转发IP;路由器同时在某个指定的端口建立tcpserver服务端B,等待LAN的IP终端连接,路由器把从内网IP来的数据都转发到外网服务器(多个转发IP)和已经建立连接的LAN口IP终端去,同时把从外网服务器和LAN口已经建立连接的IP终端而来的数据也转发到内网IP去。
注意:仅仅指内网ip发送到路由器某个端口的数据,转发给设定好的特定几个IP地址,并不是该IP发送到外网的所有数据都转发,虽然经过路由器但不进行转发。
需求四:防止路由器死机的情况需要路由器输出一个IO平时正常的时候这个IO输出高电平或低电平有规律的变化,我在外部检测这个IO的高低电平变化,不变后就给断电重启,具体用哪个引脚现在还不确定,待定。
注意:
串口转发 和 内网IP数据转发 有时候需要同时存在进行,两者针对的外网服务器不是同一个。
所有建立的tcp连接都需要建立心跳包,
登录包里包括路由器标识和其他标识参数,