分类 路由器 下的文章

记录小米路由器刷 openWRT 并配置代理等操作

自从感觉到 chatGPT 基本能覆盖技术的方方面面, 就不太愿意写博客了. 但是记录一下路由器的设置和操作, 还是很有必要的, 主要方便自己以后重新设置方便.

一开始搬到这边后, 只有一个移动的光猫. 但是在另外一个房间, 总是信号不好. 于是买了一个华为的穿墙路由器, 通过网线连接到移动光猫. 过了半年, 感觉离路由器较远的一个房间还是信号不好, 小孩上网课会卡顿. 于是又买了一个小米的路由器, 改成小米路由器通过网线连移动光猫, 然后华为路由器通过桥接连小米路由器. 这样终于信号不错了. 再后来, 公司的 Proxy 不能用了, 即便在公司电脑上. 于是想在路由器上假设透明代理. 查了下, 发现小米路由器可以ssh, 于是折腾开始了.

给小米路由器装openWRT

有人做了全自动的破解安装ssh, 和安装 openWRT: https://github.com/openwrt-xiaomi/xmir-patcher. 一个 run.sh 或者 run.bat 完全搞定.

openWRT 的基本设置

修改网段

openWRT 的默认网段是 192.168.1.x. 移动路由器也是 192.168.1.x, 虽然一个是在lan, 一个是在wan口, 理论上没影响, 但还是把openWRT上的 192.168.1.x 改成了 192.168.31.x. 这也是小米最初的设置.

修改时区和NTP server

System -> System
时区 -> ntp.aliyun.com, ntp.tencent.com 等.

修改wifi通道

Network -> Wireless -> 选择 SSID -> Edit -> Operating frequency & Country Code

修改 DNS

安装完之后, 刷小红书视频有时候会卡住, 不知道为什么, 猜测可能是openWRT 的默认英文版本里面的 DNS 是国外的, 于是修改 DNS 配置. 在 /tmp/resolv.conf.d/resolv.conf.auto 里面添加国内的 DNS servers

公共 DNS 服务

服务商主要地址特点适合场景
阿里云 DNS223.5.5.5
223.6.6.6
速度快、稳定性好综合最佳
腾讯云 DNS119.29.29.29
182.254.116.116
响应快、干净无劫持日常使用
百度云 DNS180.76.76.76智能解析、抗污染技术用户
114 DNS114.114.114.114
114.114.115.115
老牌稳定、覆盖广基础使用

运营商 DNS

运营商DNS 地址特点
中国电信218.85.152.99
218.85.157.99
本地化最优
中国联通123.123.123.123
210.21.4.130
延迟最低
中国移动211.136.192.6
211.136.192.7
移动网络专用

恢复系统

很多时候, 发现安装某个软件之后, 网络就慢,或者有问题, 可以从头再来. System -> Backup / Flash Firmware -> Flash new firmware image. 这个image 可以从 https://openwrt.org/inbox/toh/xiaomi/ax3000t 安装部分(Installation) -> Firmware OpenWrt Upgrade URL 下载.

关于路由器固件 tomato, tomatoUSB, advanced tomato

tomato 是一个基于 Linux 的, 专门给使用Broadcom芯片的路由器用的系统.
2008年Teddy_Bear基于 tomato 发布了支持 USB 的 tomatoUSB, 并扩展了其他功能. 2011年, 他宣称不在维护.
最新的发布是 Tomato by Shibby, 由Shibby 发布.
Advanced tomato 是改进了 tomato 的 UI.

Tomato by Shibby: 关于 tomato 历史: http://tomato.groov.pl/?page_id=81
Tomato FAQ: http://www.polarcloud.com/tomatofaq
https://advancedtomato.com/

树莓派 raspberry 播放 路由器 上的电影

首先介绍一下情况:

  1. 路由器是基于openWRT的智能路由器;
  2. 路由器上面安装了 BT 客户端, 路由器一直开机, 且低功耗,使用BT下电影有优势;
  3. BT 客户端下的电影存放在路由器挂载的一个移动硬盘上面;
  4. 家里有另外一个树莓派, 它本身具有 HDMI 接口, 可以直接omxplayer播放电影

为什么不用路由器直接播放, 都是ARM的芯片?

  • 路由器的内存只有64M, 上面还跑其他服务, 没有 HDMI 接口,平时智能通过 samba 共享给其他设备.

详细步骤:

  1. 树莓派安装 sshfs
    sudo apt-get install sshfs
  2. 路由器安装 openssh-sftp-server
    ipkg install openssh-sftp-server
  3. 树莓派远程挂载路由器的资源
    mkdir /mnt/remote #创建挂载文件夹
    \#挂载 user 是路由器上用户名, /mnt/movies 是路由器是电影文件夹
    sudo sshfs user@192.168.1.1:/mnt/movies /mnt/remote
  4. 播放电影
    omxplayer -o hdmi /mnt/remote/test.mp4

遇到的问题:

  1. 路由器无法安装 sftp-server?
    查看你的 ipkg 的配置文件 /etc/ipkg.conf
  2. sshfs 报错 : sshfs remote host has disconnected
    使用debug 参数去看一下:
    sudo sshfs -o debug,allow_root remote@192.168.1.1:/mnt/X /mnt/remote
  3. sshfs 在debug情况下报错: sh: /opt/libexec/sftp-server: not found
    确认你共享服务器上装有 sftp-server, 没有的话, 去安装
  4. 共享了, 可是没有读权限
    加上 -o allow_other 选项
  5. 树莓派 可以播放, 但是 HDMI 输出没有视频
    配置 /boot/config.txt
    hdmi_force_hotplug=1
    hdmi_drive=2

[读书笔记] 802.11 RSN WPA

IEEE 802.11 工作组是一个技术标准委员会, WIFI 联盟是主要的WIFI 设备厂家的联盟. 经过 WIFI 联盟的测试程序测试通过的, 可以打上 WIFI 的logo. 在这个测试中不是所有 802.11 的功能都是必须的, 同时还添加了一下其他小的功能, 来保证互操作性.

802.11i 定义了一种新的无线网络, 称之为: robust security network (RSN). RSN 只能和 RSN 设备互操作.
802.11i 对应于 RSN.
由于算法的不同, 老的 WEP 设备不能升级到 RSN 算法的网络.
transitional security network (TSN) 是一个介于 WEP 和 RSN的中间过度网络.

TKIP: Temporal Key Integrity Protocol. TKIP 是 RSN 网络下一个可选的 模式. 对应于 RC4 和 AES.

由于新的标准 RSN 迟迟不能完成, 即使完成, 也无法在现有支持 WEP的设备上通过软件升级使用, WIFI联盟 就想定义一个新的协议可以在现有设备上运行, 这个协议就是 TKIP, 但是TKIP 的审批需要很长时间, 于是WIFI 联盟就采用了一个基于 RSN 草案的安全方法, 但是仅仅采用TKIP算法, 这种新的RSN 之集的标准, 称之为: WPA (Wi-Fi Protected Access)

RSN 和 WPA 使用通用的架构和方式, RSN 让实现更灵活, WPA 则强调实现一种方式去实现网络. RSN 支持 AES 芯片加密, WPA 则主要是 TKIP.

[读书笔记] WEP 协议 及 加密的基本信息

802.11 WEP 的安全体现在2个部分, 分别是 认证 和 数据加密.

客户连接端连接到访问点之前都要经过 认证(Authentication) -> 关联(Association) 2个阶段.

即使是没有密码的访问点 (open network), 也需要 (Authentication)阶段: 客户连接端发出一个 Authentication request frame, 访问点返回一个 success Authentication response frame.

使用 WEP 加密的网络, 认证过程:

  1. 客户连接端发送一个认证请求消息
  2. 访问点回应一个挑战请求消息
  3. 客户连接段使用密码产生挑战请求答案消息
  4. 访问点回应成功接受或拒绝接受

这里的挑战请求可以理解为: 访问点发送一个随机字符串, 连接端使用密码去加密这个字符串, 发给访问点, 访问点用自己的密码也去加密, 对比结果.
以上这个过程并不能证明, 访问点就是真的访问点, 它只是发送一个随机字符串, 连接客户端就使用它的加密方法, 把结果给访问点了. 如果我们把加密方法虚拟为这个公式: 加密后字符 = 加密方法(随机字符串, 密码), 那么一个真正的访问点, 这3个数据都有, 一个假的访问点, 就有了: 加密后的字符 和 随机字符串, 如果公式是可逆的, 那么这个假的访问点就能推导出 密码了.

事实上, 大多数 WIFI 都没有使用密码认证, 而是设为 open network, 等 Association 之后, 进行加密数据传输.
后来, 很多厂家的 WEP 产品都 弃用 了认证阶段.

WEP 加密使用的是 RC4 算法.
WEP 最初的标准只能使用 40bit 的KEY, 后来厂家基本都扩展到104bit, WIFI 最后也接受了这个长度, 最后变成40~104 bit.
WEP 的密码是 40 ~ 104 bit, 也就是5 ~ 13 个 ASCII 码可打印字符. 另外有24 bit 的 Initialization Vector (IV), 每个包都使用不同的 IV. 这就是组成了128 bit 的加密强度.
RC4 使用上面 128 bit 的组合 Key 来对数据进行加密.
即使是一样的明文, 由于每个包使用不同的 IV , 所以生成的密文也不一样.
但是这个 IV 对于连接的另外一方, 却不知道, 所以它要传给对方, 并且是明文传过去的, 这样对方才能用它 加上自己的密码去解密.
由于IV 只有24bit, 24bit的可能值只有16777216个, 所以有大量的数据, 这个很快就会被遍历一遍.

在WEP 标准种有2种 WEP key, 分别是 Default Key(s) 和 Key mapping key(s)
Default Key(s): 所有的客户连接端和访问点都有共同的一个或一组key(最多4个, 多个是为了在key change 过程中使用);
Key mapping key(s): 每个客户连接端使用不同的key, 访问点有个key mapping 列表, 同时有个default key 用来广播什么的, 现在几乎没有厂商使用这种了.

你应该了解为什么当时WEP 标准对于 Default Key(s) 使用了4个key?
1) 发送和接收使用不同的key -> 2 个;
2) 当发生key 改变的时候 -> 2个.
当然你用一个key 也是完全可行的.

ICV: Integrity Check Value
MAC : Media Access Layer
MSDU :(MAC service data unit)
加密之前的数据用 ICV, 加密之后的数据frame 用CRC (cyclic redundancy check)

数据从TCP/IP 层进入到 链路层之后, 在物理层发出去之前的过程:

  1. 计算 ICV, 追加到数据之后
  2. 产生 IV, 和 WEP key 组合在一块(WEP 可能是多个当中选一个)
  3. 初始化 RC4 加密引擎, 进行加密

发出的数据 : MAC header | 24bit IV | 8bit Key Id | 加密后的 (data + ICV) | CRC

更多关于 MAC header 的图例, 可以google 一下, 里面有个bit 是用来标明是不是 WEP 加密的.

由于 RC4 的线性流加密, 由于前几个可猜测的字节, 由于弱的IV, WEP 可以在有一定样本数据的情况下被破解.