OpenWrt 21.02

OpenWrt 21.02.2 是 OpenWrt 当前最新的稳定版, 内核 5.4.179, 这个内核已经内置了 Wireguard 模块

root@OpenWrt:~# uname -a
Linux Timecloud2 5.4.179 #0 SMP Wed Feb 16 20:29:10 2022 mips GNU/Linux
root@OpenWrt:~# lsmod|grep wireguard
ip6_udp_tunnel 1760 1 wireguard
libblake2s 1760 1 wireguard
libchacha20poly1305 4320 1 wireguard
libcurve25519_generic 10368 1 wireguard
udp_tunnel 2560 1 wireguard
wireguard 49168 0

固件写入

对于从旧版本(<=19.xx)升级的设备,

  • 刷 Kernel 包, 没有luci界面, 只有最小软件集
  • 刷 Sysupgrade 包, 带luci, 如果不刷 Kernel 直接刷 Sysupgrade , 可能会无法启动, 这种情况先刷一次 Kernel 就好了

Kernel包只需要刷入一次, 之后升级只需要刷 Sysupgrade 包. 下载固件时, 建议通过 https://firmware-selector.openwrt.org/ 这个界面搜索型号下载, 因为这里会同时提供Kernel和Upgrade的固件, 比较方便.

启动后, 会进行文件系统的初始化, 通过 mount_root 这个脚本将spi flash 挂载到文件系统,

  • 在 mount_root 执行完成之前, 通过 df -h 看到的文件系统是临时的(你会看到一些和路由器内存容量相近的分区), 这时候如果设置了配置并重启路由器, 配置会丢失, 并且重启后ssh登录会发现key变了. 这时候运行reboot会卡住, 不能重启.
  • 当这个脚本执行完毕之后, 通过 df -h 看到的文件系统就能看到和flash大小相近的分区, 这时候做配置才能持久化, 并且reboot也正常工作了

设备运行

MT7621

测试了 NeWiFi D1, D2, 迅雷 Timecloud, 运行正常无压力.

MT7620

MT7620方案测试了极路由的极贰, 初始固件下运行速度正常, 但是安装 block mount 之后, 通过ping上游观察到的延迟增长很大, 经常会达到数百毫秒

命令行安装配置 Wireguard

因为 Wireguard 配置相对简单, 而命令行也直接易懂, 可以不需要界面辅助

安装

# Install packages
opkg update
# 21.02 or above
opkg install wireguard-tools

配置wg(客户端)

下面的场景适用于已经配置了带外网IP的WG节点, 在LAN内配置WG节点连接到外网, 用于内网融合或内网穿透.

创建密钥

root@OpenWrt:/etc# wg genkey
kGLk+qcgYXVlu8hkSpj0DegQB4BlLW71e8eLiJdVJFY=
root@OpenWrt:/etc# echo "kGLk+qcgYXVlu8hkSpj0DegQB4BlLW71e8eLiJdVJFY="|wg pubkey
5R3mGHTm6FPzKutJf8X0Zfd7VKLPxc+J8suzGiKZX0I=

在 /etc/config/network 下添加配置

config interface 'wg0'
option proto 'wireguard'
option private_key '=====LAN WG=======私======钥='
option listen_port '50055'
list addresses '10.233.0.17/32' config wireguard_wg0 'wgserver'
option public_key '=====外网WG=======公=======钥='
option endpoint_host '123.234.123.210'
option endpoint_port '50055'
option persistent_keepalive '25'
option route_allowed_ips '1'
list allowed_ips '10.233.0.0/24'
list allowed_ips '192.168.255.0/24'

以上的修改也可以通过uci命令完成

# Configure network
uci -q delete network.wg0
uci set network.wg0="interface"
uci set network.wg0.proto="wireguard"
uci set network.wg0.private_key="${WG_KEY}"
uci set network.wg0.listen_port="${WG_PORT}"
uci add_list network.wg0.addresses="${WG_ADDR}"
uci add_list network.wg0.addresses="${WG_ADDR6}" # Add VPN peers
uci -q delete network.wgclient
uci set network.wgclient="wireguard_wg0"
uci set network.wgclient.public_key="${WG_PUB}"
uci set network.wgclient.preshared_key="${WG_PSK}"
uci add_list network.wgclient.allowed_ips="${WG_ADDR%.*}.2/32"
uci add_list network.wgclient.allowed_ips="${WG_ADDR6%:*}:2/128"
uci commit network

重启network

/etc/init.d/network restart

查看wireguard状态

wg show

开启转发

编辑 /etc/config/firewall, 在 config zone 下添加 list network 'wg0'option masq 1

  • 将wg0添加到LAN zone, 如果不添加, 那么wg0就不能与br-lan的机器forward, 隧道两端的节点, br-lan的机器无法通过这个wg0去连接另一端隧道外的机器
  • 打开lan zone的 MASQUERADE (默认只在wan上开启), 这样就能实现从 wg0 到 br-lan 之间的转发, 否则隧道内的机器无法与br-lan的机器通信
config zone
option name lan
list network 'lan'
list network 'wg0' <----- 添加这行
option input ACCEPT
option output ACCEPT
option forward ACCEPT
option masq 1 <----- 添加这行

然后重启firewall

/etc/init.d/firewall restart

问题解决

错误 /etc/config/luci seems to be corrupt, unable to find section 'main'

当连接数较大时, 如果去实时统计里查看连接, 会出现上面的错误, 导致luci页面完全失效. 这时候重启 rpcd 可以恢复

/etc/init.d/rpcd restart

PPPOE 拨号容易掉线问题

PPPOE拨号时, OpenWrt 默认会将 MTU 设置为 1492, 这个配置对于宽带服务商设备的设置而言可能还是太大, 在访问量较大(例如观看视频时), 容易被上游设备封锁, 导致掉线. 建议通过ping测试实际的 MTU.

先通过tracert得到路由器的直接上级设备的IP, 下面的202.38.64.1是中科大的ns, 这个随便换成一个别的公网IP都行, 注意执行测试的电脑要直接连到这个路由器上

C:\Users\milton>tracert -d 202.38.64.1
Tracing route to 202.38.64.1 over a maximum of 30 hops
1 2 ms 1 ms 1 ms 192.168.6.1
2 33 ms 5 ms 4 ms 42.12.64.1
3 5 ms 5 ms 4 ms 218.221.245.21

PING 测试

关于 DF(Don't Fragment)标志

用来确定到达目的地的路径中最大传输单元 MTU 的大小, 通过在IP报头中设置不分片DF(Don't Fragment)标志来探测路径中的MTU值, 如果路径中设备的 MTU 值小于此报文长度, 并且发现DF标志, 就会发回一个Internet控制消息协议(ICMP)(类型3、代码4需要分片的消息ICMP_FRAG_NEEDED), 消息中包含它可接受的MTU值.

因为路由器IP是192.168.6.1, 其上级IP就是42.12.64.1, 需要对其检测 MTU , 首先确认路由器上没有做MTU限制(或者设置成1500)避免影响, 然后执行ping命令

# windows
ping -f -l 1436 42.12.64.1
# linux
ping -M do -s 1436 42.12.64.1

找到能得到正常的ping回显且不出现 DF fragmented 提示的最大的size, 在其基础上加28, 设置到 PPPOE 的 Advanced 选项中.

参考

OpenWrt 21.02.2 记录: PPPoE, Wireguard的更多相关文章

  1. 小米路由器3G R3G 刷入Breed和OpenWrt 20.02.2 的记录

    小米 R3G 参数 Architecture: MIPS Vendor: Mediatek Bootloader: U-Boot System-On-Chip: MT7621 family CPU/S ...

  2. OpenWrt 20.02.2 小米路由器3G配置CP1025网络打印

    家里的施乐 CP116w 工作快五年了终于罢工了. 黑粉报错, 自己也不会拆, 只能搁置了. 后来换了个 HP CP1025. 这个打印机也不错, 墨盒便宜没什么废粉, 就是启动慢一点, 而且 -- ...

  3. openwrt刷机后配置PPPOE上网方法

    参考下帖13#的方式: 如何编辑配置openwrt,来实现pppoe拨号上网? 但其中有一句代码有错误: option 'peerdns' '0',其中需将‘0’改为‘1’

  4. mysql5.7.21安装要点记录

    下载的是Zip解压缩版,Windows系统,因为很久没有在Windows上安装过,这次安装发现了几处和以前安装不一样的地方,特记录如下,供大家参考 MySQL配置文件位置 bin目录下的mysql_c ...

  5. openwrt MT7620 固件编译记录

    下载,安装相关软件 git clone git@github.com:openwrt-mirror/openwrt.git sudo apt-get install gcc g++ binutils ...

  6. 7.21.02 switch语句

    switch语句判断一个变量与一系列值中某个值是否相等,每个值称为一个分支. 语法 switch语法格式如下: switch(expression) { case value : //语句 break ...

  7. Tesseract ocr 3.02学习记录一

    光学字符识别(OCR,Optical Character Recognition)是指对文本资料进行扫描,然后对图像文件进行分析处理,获取文字及版面信息的过程.OCR技术非常专业,一般多是印刷.打印行 ...

  8. 500 份源码合集——GitHub 热点速览 v.21.02

    作者:HelloGitHub-小鱼干 GitHub 项目名,如同变量命名,一个好的项目名能让你一眼就知道它是什么.500-AI-Machine-learning-Deep-learning-Compu ...

  9. MISC 2022/4/21 刷题记录-千字文

    1.千字文 得到名为png的无类型文件,010 Editor查看,png,改后缀,得到二维码 QR扫描,得到一句话"这里只有二维码" 思路不对,binwalk一下,发现有错误信息 ...

  10. MySQL高可用架构-MHA环境部署记录

    一.MHA介绍 MHA(Master High Availability)目前在MySQL高可用方面是一个相对成熟的解决方案,它由日本DeNA公司youshimaton(现就职于Facebook公司) ...

随机推荐

  1. Makefile中的+=、:=、?=

    1.= "="是最普通的等号,然而在Makefile中确实最容易搞错的赋值等号,使用"="进行赋值,变量的值是整个makefile中最后被指定的值.不太容易理解 ...

  2. phpcms - 在删除文章后实现自动删除tag标签

    在使用phpcms程序制作网站的时候,我们会发现文章模型新建一篇文章后会自动向数据库中插入关键词,但如果删除文章后,数据库中的关键词表中字段中还存在之前文章的关键词,那么怎样才能在phpcms后台中删 ...

  3. mysql-数值函数-取整-保留小数位-求余数

  4. 最新版TikTok 抖音国际版解锁版 v33.1.4 去广告 免拔卡

    软件简介: 抖音国际版App是全球最受欢迎的短视频应用,抖音国际版TikTok(海外版)横扫全球下载量常居榜首.这是最新抖音国际版解锁版,无视封锁和下载限制,国内免拔卡,去除了广告,下载视频无水印(T ...

  5. [转帖]Linux文件夹对比并提取的差分文件技巧-rsync的妙用

    https://www.xitongjiaocheng.com/linux/2017/45720.html   需求 最近团队正在开发一个版本对比工具,要求是把A1文件夹与A2对比,将A2中的增量部分 ...

  6. [转帖]linux的硬链接和软连接的区别

    Linux中有两种链接文件: 1)软链接(符号链接symbol),等同于Windows中快捷方式 ln -s 源文件名 符号链接文件名,源文件名和符号链接文件名是主从关系,源被删了,符号链接也就失效了 ...

  7. Postgresql 数据库设置备份以及简单清理磁盘空间和wal日志的方法

    1. 最近想简单的进行数据库的备份工作, 因为现在数据库主要是用的pg数据库 , 所以想到用文本的方式进行, 有清理了一下日志表的数据 这里一起记录一下. 先记录一下查看比较大的表的信息. 从网上找了 ...

  8. with(上下文管理器)的用法

    with语句可以自动管理上下文资源,不论什么原因(成功或失败)跳出with语句,都能保证文件正确关闭,并 释放资源,不用手动去close掉资源 1.with语句中有两个内置方法__enter__和__ ...

  9. Android APP升级时解析程序包时出现问题

    一个新的测试机在自动下载升级安装更新版本APP时,报出"解析程序包时出现问题"错误.原因众说纷纭, 一番搜索,下面的回答比较全面: https://stackoverflow.co ...

  10. 【JS 逆向百例】某易支付密码 MD5+AES 加密分析

    关注微信公众号:K哥爬虫,持续分享爬虫进阶.JS/安卓逆向等技术干货! 声明 本文章中所有内容仅供学习交流,抓包内容.敏感网址.数据接口均已做脱敏处理,严禁用于商业用途和非法用途,否则由此产生的一切后 ...