Yuhang Zheng
OpenWRT编译报错信息汇总

报错信息:

Configuring luci-i18n-s-s-libev-zh-cn.
Configuring luci-i18n-firewall-zh-cn.
Configuring ppp-mod-pppoe.
Collected errors:
* check_data_file_clashes: Package libustream-openssl wants to install file /home/shixiaofeng/source/build_dir/target-mipsel_24kc_musl/root-ramips/lib/libustream-ssl.so
        But that file is already provided by package  * libustream-mbedtls
* opkg_install_cmd: Cannot install package libustream-openssl.
package/Makefile:64: recipe for target 'package/install' failed
make[2]: *** [package/install] Error 255
make[2]: Leaving directory '/home/shixiaofeng/source'
package/Makefile:106: recipe for target '/home/shixiaofeng/source/staging_dir/target-mipsel_24kc_musl/stamp/.package_install' failed
make[1]: *** [/home/shixiaofeng/source/staging_dir/target-mipsel_24kc_musl/stamp/.package_install] Error 2
make[1]: Leaving directory '/home/shixiaofeng/source'
/home/shixiaofeng/source/include/toplevel.mk:199: recipe for target 'world' failed
make: *** [world] Error 2

解决方法:

在make menuconfig进行配置编译选项中,Libraries  --->下面,libustream-openssl和libustream-mbedtls中间去掉一个。
在make menuconfig进行配置编译选项中,LuCI->Collection下的libustream-mbedtls和luci-ssl-openssl两个选项都进行了选择,其实只要进行其中一个选择便可。
OpenWrt从零开发

这篇文章主要记录基于GitHub的OpenWRT19.02源码如何一步步配置,编译,得到适用于OK1046-C2的镜像。

在源码下执行make menuconfig之后的首选配置

首先是平台相关的必要配置:

Target System (NXP Layerscape)
Subtarget (ARMv8 64-bit based boards) 
Target Profile (NXP LS1046A-RDB Default)  

然后是启用LUCI web图形界面

-> LuCI
    -> 1. Collections
        <*> luci................... LuCI interface with Uhttpd as Webserver (default) 
OpenWRT在编译前选择要使用的主题

在OpenWRT源码中修改

1、默认主题配置文件
feeds/luci/modules/luci-base/root/etc/config/luci

config core main
        option lang auto
        option mediaurlbase /luci-static/bootstrap
        option resourcebase /luci-static/resources
        option ubuspath /ubus/

2、然后是修改每个主题文件下面的30_luci-theme-***文件
比如
/feeds/kenzo/luci-theme-opentomato/root/etc/uci-defaults/30_luci-theme-opentomato
/feeds/luci/themes/luci-theme-bootstrap/root/etc/uci-defaults/30_luci-theme-bootstrap
/package/lean/luci-theme-netgear/root/etc/uci-defaults/30_luci-theme-netgear
注释掉或者删除下面的句子,仅剩一个想要默认的主题不注释

set luci.main.mediaurlbase=/luci-static/opentomato

OpenWRT编译 LuCI - Applications添加插件应用说明

make menuconfig 进入定制界面
*进入编译选项配置界面,.按照需要配置.( ‘’ 代表编入固件,‘M’ 表示编译成模块或者IPK包, ‘空’不编译 )**
选择LuCI 配置: 常用

-—————————————————————————————-

LuCI —> Applications —> luci-app-accesscontrol #访问时间控制
LuCI —> Applications —> luci-app-adbyby-plus #广告屏蔽大师Plus +
LuCI —> Applications —> luci-app-arpbind #IP/MAC绑定
LuCI —> Applications —> luci-app-autoreboot #支持计划重启
LuCI —> Applications —> luci-app-ddns #动态域名 DNS(集成阿里DDNS客户端)
LuCI —> Applications —> luci-app-filetransfer #文件传输(可web安装ipk包)
LuCI —> Applications —> luci-app-firewall #添加防火墙
LuCI —> Applications —> luci-app-flowoffload #Turbo ACC网络加速(集成FLOW,BBR,NAT,DNS…
LuCI —> Applications —> luci-app-frpc #内网穿透 Frp
LuCI —> Applications —> luci-app-guest-wifi #WiFi访客网络
LuCI —> Applications —> luci-app-ipsec-virtuald #virtual服务器 IPSec
LuCI —> Applications —> luci-app-mwan3 #MWAN3负载均衡
LuCI —> Applications —> luci-app-mwan3helper #MWAN3分流助手
LuCI —> Applications —> luci-app-nlbwmon #网络带宽监视器
LuCI —> Applications —> luci-app-ramfree #释放内存
LuCI —> Applications —> luci-app-samba #网络共享(Samba)
LuCI —> Applications —> luci-app-sqm #流量智能队列管理(QOS)

linux路由表配置

所谓路由表,指的是路由器或者其他互联网网络设备上存储的表,该表中存有到达特定网络终端的路径,在某些情况下,还有一些与这些路径相关的度量。路由器的主要工作就是为经过路由器的每个数据包寻找一条最佳的传输路径,并将该数据有效地传送到目的站点。由此可见,选择最佳路径的策略即路由算法是路由器的关键所在。为了完成这项工作,在路由器中保存着各种传输路径的相关数据——路由表(Routing Table),供路由选择时使用,表中包含的信息决定了数据转发的策略。打个比方,路由表就像我们平时使用的地图一样,标识着各种路线,路由表中保存着子网的标志信息、网上路由器的个数和下一个路由器的名字等内容。路由表根据其建立的方法,可以分为动态路由表和静态路由表。

路由表查看及介绍

查看 Linux 内核路由表

# route
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
192.168.0.0     *               255.255.255.0   U     0      0        0 eth0
169.254.0.0     *               255.255.0.0     U     0      0        0 eth0
default         192.168.0.1     0.0.0.0         UG    0      0        0 eth0

route 命令的输出项说明

输出项 说明
Destination 目标网段或者主机
Gateway 网关地址,”*” 表示目标是本主机所属的网络,不需要路由
Genmask 网络掩码主机路由的掩码为 255.255.255.255,默认路由的掩码为 0.0.0.0掩码 255.255.255.255 表明只有精确匹配的目标使用此路由。掩码 0.0.0.0 表示任何目标都可以使用此路由。当以二进制形式撰写掩码时,1 表示重要(必须匹配),而 0 表示不重要(不需要匹配)。
Flags 标记。一些可能的标记如下:
U — 路由是活动的
H — 目标是一个主机
G — 路由指向网关
R — 恢复动态路由产生的表项
D — 由路由的后台程序动态地安装
M — 由路由的后台程序修改
! — 拒绝路由
Metric 路由距离,到达指定网络所需的中转数(linux 内核中没有使用)
Ref 路由项正在被使用的进程数
Use 通过此路由项的分组数
Iface 路由项对应的接口

网络掩码

例如,目标 172.16.8.0 的网络掩码为 255.255.248.0。此网络掩码表示前两个八位字节必须精确匹配,第三个八位字节的前五位必须匹配(248=11111000),而最后一个八位字节无关紧要。第三个八位字节 172.16.8.0(即 8)等于二进制形式的 00001000。不更改前 5 位(以“粗体”显示的屏蔽部分),最多可到 15 或二进制形式的 00001111。因此目标为 172.16.8.0、掩码为 255.255.248.0 的路由应用于所有要通过 172.16. 15.255 到达 172.16. 8.0 的数据包。

为typora设置sftp图床上传

背景:

之前一直使用typora的markdown编辑器来写博客文章,不得不说这个编辑器确实是很好用的,界面简单美观,常用的功能也是一应俱全。

不过之前一直困扰自己的问题就是如果博客里面带有图片的话,那么写文章就很麻烦。

因为自己选择所有的博客图片都是储存在家里的树莓派上面,没有使用互联网上的图床服务,那么自己每次想要往博客里面添加图片的时候,就需要先使用sftp把图片传到服务器上面,然后在网页中打开再去寻找图片链接,然后再在博客中插入图片链接,所以一直以来自己都尽量的避免博客文章中有太多的图片。

直到后来我发现typora是支持图床功能的,使用的是PicGo的服务,而这个服务上面可以添加第三方插件的,可以使用sftp插件来实现上面我说的一系列操作。

所以这篇文章就是对自己配置过程的一个记录吧,也可以对后来的小伙伴提供一个参考。

Wireshark显示过滤表达式介绍

显示过滤表达式介绍

显示过滤器表达式作用在在wireshark捕获数据包之后,从已捕获的所有数据包中显示出符合条件的数据包,隐藏不符合条件的数据包。

显示过滤表达示在工具栏下方的“显示过滤器”输入框输入即可生效。

img

基本过滤表达式

一条基本的表达式由过滤项、过滤关系、过滤值三项组成。

比如ip.addr == 192.168.1.1,这条表达式中ip.addr是过滤项、==是过滤关系,192.168.1.1是过滤值(整条表达示的意思是找出所有ip协议中源或目标ip、等于、192.168.1.1的数据包)

过滤项

初学者感觉的“过滤表达式复杂”,最主要就是在这个过滤项上:一是不知道有哪些过滤项,二是不知道过滤项该怎么写。

这两个问题有一个共同的答案—–wireshark的过滤项是“协议“+”.“+”协议字段”的模式。以端口为例,端口出现于tcp协议中所以有端口这个过滤项且其写法就是tcp.port。

推广到其他协议,如eth、ip、udp、http、telnet、ftp、icmp、snmp等等其他协议都是这么个书写思路。当然wireshark出于缩减长度的原因有些字段没有使用协议规定的名称而是使用简写(比如Destination Port在wireshark中写为dstport)又出于简使用增加了一些协议中没有的字段(比如tcp协议只有源端口和目标端口字段,为了简便使用wireshark增加了tcp.port字段来同时代表这两个),但思路总的算是不变的。而且在实际使用时我们输入“协议”+“.”wireshark就会有支持的字段提示(特别是过滤表达式字段的首字母和wireshark在上边2窗口显示的字段名称首字母通常是一样的),看下名称就大概知道要用哪个字段了。wireshark支持的全部协议及协议字段可查看官方说明

21年清明节后的第一天

清明节后上班的第一天,上午的时间一直在想上周剩下了哪些工作,有哪些事情要从开开始才能续上。

虽然年龄才二十多岁,但是却发现自己的记忆力真的在快速的下降,对待手边的事情也很难集中注意力了,无论是工作上面需要捋代码,看英文手册,还是说学习一些新的知识,哪怕就算是玩游戏,也无法安安静静的投入长期的时间去享受这一个过程了。

每天的时间都用在了碎片化的事情或者信息流的获取上,空闲娱乐的时间也是刷新闻,刷值得买的信息,回家之后就是短视频。虽然一直都是说是因为现在的时代如此,这种获取信息流的习惯会让自己失去长期投入获得长效回报的能力,只是追求短期的收获和刺激。自己一开始也是不相信这个的,不过现在也不得不承认,这种生活习惯真的让自己损失了太多,自己已经有太长时间停滞进步了。

前一段时间自己的积累全部在工具的搜索上面,找到了很多破解的软件,很多有趣的开源工具或者项目。可是获取了太多碎片的东西却疏于整理归类,结果留下的记下的东西却少之又少。

自己一直说想要好好学学Wireshark工具的使用,重新复习一下python和一些网络模块,学习一下JavaScript和NodeJs,可是这些计划真的一直都在计划中从未实施。

还有自己的小博客,当初费力费心努力搭建起来的,也一定不要让它失去意义,要好好的去认真记下一些东西,哪怕是一些随便写下的东西也要,一些没有认真整理的思路也好,一些知识的简单记录也要,都要尽量的记下来,以防忘记。

人心总是会趋向堕落,如果不去自我约束和管理,哪怕就是不在上学了毕业了,也仍然不能太过放任了自己。去做一些计划吧,并随时养成记录的习惯,然后在每天下班的时候把所遇到的东西好好整理,记录下操作流程。减少刷碎片信息流的时间,去培养长效投入长效回报的事情。

大概就是如下几条

  • 减少刷碎片信息流的时间,如QQ群消息,值得买的排行等。
  • 减少无意义的拿手机的次数。
  • 每天早上上班的时候列出来一天的工作,做一个ToDo List,有新的工作的时候及时添加。
  • 每天下班整理自己所调试的某些功能的流程,防止遗忘。
  • 每天晚上回去之后,把看电视的时间变为学习新的东西,并且尽量在电脑上操作,一边操作一边记录。
  • 每天工作中尽量看英文手册,就算是用翻译软件也不要全篇翻译,要逐个翻译单词。遇到常见的单词要记录。
  • 写脚本或者程序的时候要尽量的多加注释,防止自己忘记每行代码是什么意思。
21年清明节前的随笔

明天就是2021年的清明假期了,是难得的三天小假期。

只是在这小假期即将到来的前一天的下午,心里却翻涌着一些感想。

东哥清明之后就去北京了,结束了三年时间的同窗,17年一起从什么都不知道的小白一起进入飞凌,从两个单身狗到各自成家,也算是度过了人生中毕业之后最初的三年。从开始进入公司在技服的一起打电话回答客户问题,到后来一起进入研发,再后来搬入新的办公楼。从一起在沈庄租着200块钱一个月的小屋,每天晚上吃着大饼卷鸡皮,骑着自行车上下班,到现在各自开着汽车出勤往返。从一开始的时候经常叫他去家里玩,没有任何家具只做了小卧室的布置,但是还是能没心没肺的吃火锅玩游戏,到现在各自为家除了上班再难有交集。还有和通哥三个人一起每天下班之后到处找小馆下馆子干饭,虽然当时挣得没几个钱却天天穷开心。壮哥还在公司的时候还会一起开车去游玩,去顺平的小江南一起烧烤一起玩,路上虽然是平庸的风景却依然留下了深刻的印象。还有和建哥一起去白洋淀,沿着湖边一起遛弯,在湖里一起划船,想办法偷偷着摘个莲蓬或者荷花,一起看那演出活动打鬼子的拙略表演,下着是蒙蒙的小雨,却是最有感觉的一次游玩。一起去深圳参加展会,第一次体验动卧的感觉,去看海边,吃着地道的潮汕牛肉火锅,说是出差最难忘的却是南方的景色。

三年的回忆确实有很多很多,想说的话说也说不完,毕竟是朋友也是同事,是三年的朝夕相处,是每天朝八晚七的上班。可是,这个时候对他也是只有祝福吧,看到了他无数次在张家口和保定之后的千里往返,家也有了,牵挂也有了,也该再往着幸福的方向,再近一点了。

今天早上吃饭的时候我还开玩笑给他说,这个就像是大学毕业一样,三年之后毕业了,该去下一个地方开始下一段旅程了。哪怕是不再上学了,工作了,人生中却依然仍然存在着类似于毕业的告别。身边总是有陆陆续续的人经过,靠近,交错与遥远。

也许,已经不再需要用长大这个词来再来当岁月变迁的借口,因为即使我们早已经长大了,时间依然没有变得缓慢或者有丝毫的停留。就算是看似平淡无奇的日常也其实也都在时间的水流中一直在悄然无息的变化,然后在某个河道的岔口,分开与漂流。我们所熟悉的每一天平淡的日常,也许是在时光与变化的轰击下艰辛维系着的珍贵而脆弱的奇迹。

朝着我们想要的生活,努力前进吧,就算各自有新的战场要去开辟,也不要忘记开始的时候一起并肩的拼杀。未来仍然遥远,依然艰辛,依然坎坷与充满迷茫,不过,也依然有我们想要踏足的领域,有没有体验过的新奇与乐趣,与没有去过的地方和吃过的美食。

愿分别之后,相遇仍是少年。

linux命令行使用代理

之前的文章中介绍过使用clash搭建自由上网,文章的最后成果是搭建了一个网页代理服务器,像是电脑一类的设备不用下载软件,可以直接通过设置里面的内置的代理设计就可以实现科学上网。

但是linux系统该如何去使用这个代理呢,我也在网上查找了一下资料,可以通过在命令行设置环境变量来实现。

设置全局代理可以通过这样:

export http_proxy=http://127.0.0.1:1080
export https_proxy=https://127.0.0.1:1080

设置git服务器的代理可以通过这样

//设置全局代理
//http
git config --global https.proxy http://127.0.0.1:1080
//https
git config --global https.proxy https://127.0.0.1:1080

//使用socks5代理的 例如ss,ssr 1080是windows下ss的默认代理端口,mac下不同,或者有自定义的,根据自己的改
git config --global http.proxy socks5://127.0.0.1:1080
git config --global https.proxy socks5://127.0.0.1:1080

//只对github.com使用代理,其他仓库不走代理
git config --global http.https://github.com.proxy socks5://127.0.0.1:1080
git config --global https.https://github.com.proxy socks5://127.0.0.1:1080
//取消github代理
git config --global --unset http.https://github.com.proxy
git config --global --unset https.https://github.com.proxy

//取消全局代理
git config --global --unset http.proxy
git config --global --unset https.proxy