分类目录归档:openwrt

关于nanopi R2S的一些记录

这个机器看似网上资料很多,实际上要找的东西还是很难找到。这里记录一下。方便自己,方便他人。

首先,ubuntu的固件,root密码是fa,普通用户的用户名是pi,密码也是pi

另外这个机器的下载资源在这里。https://dl.friendlyarm.com/nanopir2s

rk3328-sd-friendlycore-bionic-5.4-arm64-20200707.img这个文件名就是ubuntu 18.04系统

下载后解压,烧写到TF卡里面,插上R2S,启动。路由器网口插在R2S的WAN即可,等待几分钟,去路由器里面看NanoPi-R2S分配的IP就是它,通过ssh登录。

这个机器自带的源有问题,下载不了,我已经更换为中科大的源。

deb http://mirrors.ustc.edu.cn/ubuntu-ports/ bionic main restricted universe multiverse
deb http://mirrors.ustc.edu.cn/ubuntu-ports/ bionic-security main restricted universe multiverse
deb http://mirrors.ustc.edu.cn/ubuntu-ports/ bionic-updates main restricted universe multiverse
deb http://mirrors.ustc.edu.cn/ubuntu-ports/ bionic-backports main restricted universe multiverse

 

 

error: RPC failed; curl 56 GnuTLS recv error (-9): A TLS packet with unexpected length was received.

今天在复制一个代码库的时候报错。

error: RPC failed; curl 56 GnuTLS recv error (-9): A TLS packet with unexpected length was received.
fatal: The remote end hung up unexpectedly
fatal: early EOF
fatal: index-pack failed

系统使用的是 Ubuntu 18.04.3 LTS (GNU/Linux 4.15.0-111-generic x86_64)

解决办法。

$ sudo apt-get purge git
$ sudo apt-get install git

问题解决。

更新,以上似乎不能根治,下次还会出现。

实际上,由于git默认缓存大小不足导致的。
解决方法是:使用下面的命令增加缓存大小。

git config –global http.postBuffer 2000000000

编译openwrt时取消预选的软件包

使用lean的openwrt代码,发现里面预选了很多luci-app,而这些并不是我需要的功能,每次编译的时候都要取消选中,很是麻烦。

研究了一下,找到了设置这个的地方,记录一下。

其实这个设置在/openwrt/include目录下面的target.mk中。

default device type

DEVICE_TYPE?=router

Default packages – the really basic set

DEFAULT_PACKAGES:=base-files libc libgcc busybox dropbear mtd uci opkg netifd fstools uclient-fetch logd block-mount \
kmod-nf-nathelper kmod-nf-nathelper-extra kmod-ipt-raw \
default-settings luci luci-app-ddns luci-app-sqm luci-app-upnp luci-app-adbyby-plus luci-app-autoreboot \
luci-app-filetransfer luci-app-vsftpd ddns-scripts_aliyun \
luci-app-pptp-server luci-app-arpbind luci-app-vlmcsd luci-app-wifischedule luci-app-wol luci-app-ramfree \
luci-app-sfe luci-app-flowoffload luci-app-nlbwmon luci-app-usb-printer luci-app-accesscontrol

For nas targets

DEFAULT_PACKAGES.nas:=fdisk lsblk mdadm automount autosamba luci-app-usb-printer

For router targets

DEFAULT_PACKAGES.router:=dnsmasq-full iptables ppp ppp-mod-pppoe firewall kmod-ipt-offload
DEFAULT_PACKAGES.bootloader:=

而在openwrt原版里面是这样的:

default device type

DEVICE_TYPE?=router

Default packages – the really basic set

DEFAULT_PACKAGES:=base-files libc libgcc busybox dropbear mtd uci opkg netifd fstools uclient-fetch logd

For nas targets

DEFAULT_PACKAGES.nas:=block-mount fdisk lsblk mdadm

For router targets

DEFAULT_PACKAGES.router:=dnsmasq iptables ip6tables ppp ppp-mod-pppoe firewall odhcpd-ipv6only odhcp6c kmod-ipt-offload
DEFAULT_PACKAGES.bootloader:=

编译openwrt时候禁用ipv6,Disable IPv6 on OpenWRT

IPV6很讨厌,尤其是家用时候,这时是不需要这个功能的。所以想在编译的时候就删除掉这个功能。

首先在Global build settings里面取消选中Enable IPv6 support in packages

然后修改/mnt/lean-190323/package/network/config/firewall里面的makefile文件,删除+IPV6:libip6tc,+IPV6:kmod-nf-conntrack6

修改/mnt/lean-190323/package/network/utils/iptables里面的makefile文件,删除+IPV6:libip6tc,

如果是ledev17.01,还需要在feeds/routing/miniupnpd的makefile里删除相关ipv6的依赖

在/mnt/lede-v17.01/package/network/utils/iptables删除

define Package/libiptc
$(call Package/iptables/Default)
SECTION:=libs
CATEGORY:=Libraries
DEPENDS:=+libip4tc +libxtables
# +libip6tc

另外lede-v17.01中,还要在busybox的network里面取消所有关于IPV6的选项,例如ping6啥的。否则依旧会报错

编译MT7628固件刷机后报错jffs2: Flash size not aligned to erasesize, reducing to 6272KiB

固件编译成功,刷机后开机启动过程中报错,

jffs2: Flash size not aligned to erasesize, reducing to 6272KiB

研究了一下,发现是dts文件中对固件大小定义错误导致的。

因为之前都是照抄其他7628方案的dts修改而来,所以沿用了别人的固件长度定义。

partition@50000 {

compatible = “denx,uimage”;

label = “firmware”;

reg = <0x50000 0x7b0000>;

而0x7b0000的长度换算成十进制就是8060928,然后除以1024等于7872,大于这个数值的固件就会报错。

改成0xfb0000问题解决。

猫猫无线谈谈openwrt固件体积与squashfs压缩率的关系

openwrt编译中,很多时候路由器原生的spi flash闪存大多在8MB-16MB左右,32MB闪存的设备寥寥无几,如果想多添加一些功能进去,就可能会遇到闪存空间装不下的问题。这就需要对固件进行各种精简,去除不需要的功能。但是有时候费了九牛二虎之力,空间还是不够装,怎么办?

这时候,可以考虑通过设置squashfs的block size大小,来获取更高的压缩比,这样做出来的固件体积就更小。

这是因为在生成固件时,会调用mksquashfs_lzma进行压缩,而mksquashfs_lzma有一个叫block_size的参数,block_size越大通常压缩比也越大,同时解压所需内存也越多,不过一般可以不考虑内存的问题,因为现在的路由器只要能刷openwrt,内存基本上32M起步,128M甚至256M也屡见不鲜。所以内存不是问题。

openwrt默认的squashfs的block size是256,可以设置为512,以获取更高的压缩比,从而减小固件体积。

possible DNS-rebind attack detected: hlb.st.sankuai.com

偶然发现openwrt的日志里面有大量warn信息:

Sun Jul 8 10:35:21 2018 daemon.warn dnsmasq[26569]: possible DNS-rebind attack detected: hlb.st.sankuai.com
Sun Jul 8 10:35:21 2018 daemon.warn dnsmasq[26569]: possible DNS-rebind attack detected: hlb.st.sankuai.com
Sun Jul 8 10:36:58 2018 daemon.warn dnsmasq[26569]: possible DNS-rebind attack detected: hlb.st.sankuai.com
Sun Jul 8 10:36:58 2018 daemon.warn dnsmasq[26569]: possible DNS-rebind attack detected: hlb.st.sankuai.com

原因:dnsmasq 开启了rebind protection,也就是反域名劫持保护。由于上级dns返回的地址是个私有局域网地址,所以被看作是一次域名劫持,从而丢弃了解析的结果。

解决方法:
关闭掉rebind protection就好了,具体方法是:Network==〉DHCP and DNS ==> Server settings ==> General Settings , 勾选掉 Rebind protection.

从openwrt到智能路由器

随着智能家居进入千家万户,作为各个终端的媒介,路由器在智能家居中承担了重要任务。同时,家庭接入网络带宽越来越大,终端数目越来越多,房间面积越来越大,单一路由器难以覆盖全家各个角落,因而Wi-Fi中继应运而生,这些都对路由器提出了越来越高的要求。不仅需要更高性能的硬件,还需要优化得更加完善的软件。OpenWrt正是目前市面上很多智能路由器开发固件的基础,今天,就请各位看官和猫猫无线一起了解一下OpenWrt吧。

以上的图片是OPENWRT的一个主题界面。当时的版本叫做Kamikaze,属于OpenWRT的第二个版本,从2007年6月开始发布Kamikaze 7.06,一直更新到2010年1月的Kamikaze 8.09.2结束。这期间OpenWRT进行了大量改进,并为它的发展打下了坚实的基础。

一、OpenWrt简介

OpenWrt可以被描述为一个嵌入式的Linux发行版,(主流路由器固件有dd-wrt,tomato,OpenWrt三类)而不是试图建立一个单一的、静态的系统。OpenWrt的包管理提供了一个完全可写的文件系统,可以自定义编译适配不同的硬件体系,同时各种包的预装都是可以选择的,当然你也可以选择后续通过opkg方式自行安装喜欢的软件包。

对于开发人员来说,OpenWrt使用框架来构建固件,可以自由裁剪预装需要的软件包,而无需建立一个完整的固件来支持;对于用户来说,这意味着其拥有完全定制的能力,可以用前所未有的方式使用该设备。

二、OpenWrt开发背景

当Linksys释放WRT54G/GS的源码后,网上出现了很多不同版本的Firmware去增强原有的功能。大多数的Firmware都是99%使用Linksys的源码,只有1%的代码是开发者改写的,每一种Firmware都是针对特定的市场用途。这样做有2个缺点,一是难以集合各版本Firmware的长处,二是版本距离Linux正式发行版越来越远。

OpenWrt选择了另一条路,它从零开始,一点一点的把各软件加入进去,使其接近Linksys版Firmware的功能,而OpenWrt的成功之处是它的文件系统是可写的,开发者无需在每一次修改后重新编译,令它更像一个小型的Linux电脑系统。

三、OpenWrt功能

1、OpenWrt可以作为client连接到其他Wi-Fi作为WAN,再创建一个自己的Wi-Fi作为LAN,相当于有线WAN口不用插网线就能够实现Wi-Fi上网。其他固件好像没有这种设置方式,不知道是不是我没有发现。其他固件通常只能中继别的Wi-Fi,客户端实际连接的是这中继的Wi-Fi,ip也是由上级中继Wi-Fi分配,无法通过这个路由器创建一个子网络。OpenWrt的好处在于通过Wi-Fi连通Internet,自己创建一个子网,可以端口映射、限速等。

2、SSH

OpenWrt包含了一个SSH服务器所以你可以访问它的终端。把它的SSH服务暴露在网络下之后(别忘了用密钥验证而非弱密码的方式给它加密),你就可以远程连接并使用SSH访问它。

3、samba文件共享服务

samba文件共享是一个linux/unix下面的应用程序,可以提供类似局域网文件共享这样的服务,可以在win系统下面通过网上邻居轻松访问它。效果就跟win的文件共享几乎没有区别。实际上,很多NAS的文件共享都是基于samba实现的。

4、安装BitTorrent客户端

如果有特定的网络附加存储器(NAS),或者一个附带了USB端口的路由器和一个USB设备,你就可以把路由器当作一个BitTorrent客户端了。

5、运行服务器软件

OpenWrt的软件源包含了可以让它作为web服务器的软件包,比如IRCserver,BitTorrenttracker,等等。你可能正在使用路由器,那为什么不干脆把这台路由当作一台服务器来用?路由器耗电比计算机少得多,所以把它当作一个轻量级服务器是很聪明的做法。

6、流量整形服务

OpenWrt让你可以对经过路由的包进行数据包整形并检测其服务质量,将合适的数据包优先分配。你甚至可以将指定数据包优先分配给指定计算机,而对分配给其他计算机的包暂缓处理。

7、创建访客网络

OpenWrt的wiki有如何建立一个给客人用的特殊无线网络的指示,为了安全,它是从你的主网络分出来的。你甚至可以限制访客网络的速度。

8、捕获并分析网络流量

你可以使用tcpdump来记录所有经由你路由器的数据包。然后可以网络或者使用类似Wireshark的工具来打开它,进而分析你的网络流量与行为。

四、OpenWrt特点

OpenWrt是一个高度模块化、高度自动化的嵌入式Linux系统,拥有强大的网络组件和扩展性,常常被用于工控设备、电话、小型机器人、智能家居、路由器以及VOIP设备中。同时,它还提供了100多个已编译好的软件,而且数量还在不断增加,而OpenWrtSDK更简化了开发软件的工序。

OpenWrt不同于其他许多用于路由器的发行版,它是一个从零开始编写的、功能齐全的、容易修改的路由器操作系统。实际上,这意味着您能够使用您想要的功能而不加进其他的累赘,而支持这些功能工作的Linux Kernel又比绝大多数发行版更新得快。

目前。很多路由器厂商是基于openwrt开发的固件,国内厂商比如小米路由器,极路由,newifi新路由。国外厂商如网件,思科,linksys的部分家用路由器。

openwrt路由器安装KMS服务器激活windows

首先在编译的时候要把KMS服务器编译到固件里面。

在C:WindowsSystem32找到cmd.exe软件,右键点击使用管理员身份运行。

然后输入下面的命令:

slmgr.vbs /upk

slmgr.vbs /skms 192.168.31.1

slmgr.vbs /ipk W269N-WFGWX-YVC9B-4J6C9-T83GX

slmgr.vbs /ato

slmgr.vbs /xpr

现在解释一下这些命令的意义:

第一条:卸载当前的密钥。

第二条:设置激活服务器,也就是小米路由器的管理地址。

第三条:新的激活密钥。

第四条:开始激活。

第五条:检查激活状态。