- 博客(11)
- 资源 (4)
- 收藏
- 关注
原创 UDP怎么会返回Connection refused错误
有时候,写UDP socket程序的时候,在调用sendto或者recvfrom的时候,会发现有Connection refused错误返回,错误码是ECONNREFUSED。对于懂得socket接口但是不很很懂网络的人,可能这根本就不是个问题,他会根据错误码知道远端没有这个服务端口,正如socket api的man手册中描述的那样:ECONNREFUSED A remo
2013-07-28 21:26:23 24793 3
原创 这就是所谓的历史剧?
今天晚上看了一集《精忠岳飞》,之后就把电视关了!我并不是不喜欢看国产的历史剧,是感觉拍得太假,历史剧感觉跟唱戏的一样。总结下来,国产历史剧就两个特点:1.主人公都是儿女情长;2.主人公都会飞檐走壁。如果西方的历史剧也拍成这样,第一,凯撒不会和克里奥佩特拉就那么点事,第二,凯撒不会在完全清醒状态下被捅那么多刀身亡,那么会是什么呢?我都能想出来。 凯撒来到了埃及,被克里奥佩特拉迷住了,面
2013-07-27 14:47:47 4734 7
原创 微信被光缆所断-脆弱的行业
脆弱的是网络设计,而不是网络本身!我不晓得为何挖断一根线就能宕机数个小时,这明显是一个物理灾难,为何会影响业务逻辑那么久?网络是分层设计的,一个TCP段丢失了,协议层就会重传,一个有连接链路帧丢失了,甚至IP都感觉不到,不影响上层在于下层提供的冗余!如果说应用服务器不堪重负或者其它原因宕机数个小时,那可以理解,毕竟问题就是出在应用层,但是光缆挖断是物理层的事故,应该由物理层的高可用性来解决才对!事
2013-07-27 14:46:20 4782 2
原创 Linux系统如何平滑生效NAT-DNAT改进以及解释
在《Linux系统如何平滑生效NAT》中,我介绍了如何在Linux中让NAT瞬间生效的patch,提到了那个patch只在SNAT环境中测试过,没有在DNAT环境中测试过,实际上,DNAT中也是可以使用的,只需要将nf_nat_rule_find做以下修改即可:int nf_nat_rule_find(struct sk_buff *skb, unsign
2013-07-21 14:29:47 5563
原创 Linux系统如何平滑生效NAT
1.Linux实现的NAT概述以及问题所在Linux的NAT基于ip_conntrack。iptables设置的nat规则仅仅对一个流的第一个数据包有效。当然xtables-addons实现的rawnat除外!即便是rawnat,它也必须设置两条规则。真正好的设计是,有个选项可以自定义nat的行为,而不是依赖配置者的能力,否则就可能酿成大祸,在我自身的产品研发以及实施过程中,就曾经碰到了这种情况,
2013-07-21 01:25:40 7925 4
原创 Operation not permitted引发的惊魂72小时
0.问题及描述在测试产品的时候,莫名其妙发现了我们的主进程VPNd会出现以下的报错:2013-07-18 13:05:13 www.1.com/192.168.200.220:65527 write UDPv4 []: Operation not permitted (code=1)2013-07-18 13:05:13 www.1.com/192.168.200.220:65527 writ
2013-07-18 22:30:09 18937 2
原创 子PID namespace中获取父namespace中pid的方法
在那篇《使用独立PID namespace防止误杀进程》中的最后,我碰到了一个难题,那就是父PID namespace中的进程无法使用进入子PID namespace中通过echo $$ >$pidfile写入的pid值,进程发信号时,目标pid是和自己处于同样的PID namespace的。当时我的方法是使用ps+grep的方式去寻找,然而如果遇到多个同名进程的时候,这一招也将碰壁。那么有没有别
2013-07-14 23:47:04 10406
原创 使用独立PID namespace防止误杀进程
Linux实现了独立的PID namespace,可以将进程隔离在独立的PID空间内,只有一个命名空间的进程才能对同一空间的PID进行操作,这样可以防止进程被误操作!Linux的pid namespace是树型结构的
2013-07-14 16:46:43 6304
原创 静态数组表示的有限状态机
前段时间搞无状态的TCP conntrack,发现其中一个静态数组表示的TCP状态机很是不错,希望这种思想以后可以用在实际的工作中,直说吧,就是这个状态机数组:static const u8 tcp_conntracks[2][6][TCP_CONNTRACK_MAX] = { {/* ORIGINAL *//* sNO, sSS, sSR, sES, sFW, sC
2013-07-13 16:18:38 10998 1
原创 无状态TCP的ip_conntrack
Linux的ip_conntrack实现得过于沉重和精细。而实际上有时候,根本不需要在conntrack中对TCP的状态进行跟踪,只把它当UDP好了,我们的需求就是让系统可以将一个数据包和一个五元组标示的流相关联,因为很多的基于流的策略都设置在conntrack结构中,所以当关联好之后,就可以直接取出策略来作用于数据包了,不再需要为每一个数据包都来一次策略匹配。 TCP的状态本就不应
2013-07-13 16:03:14 11850
原创 关于iptables的u32匹配
前面一篇文章----阐释了iptables最新的bpf match,说它将多个matches并成了一个经过编译的解释型bytecode bpf match,早在bpf match之前,u32 match也可以做到matches合并,虽然语法让人费解没有分离match可读性强之外,效率还真是高!它可以做到无状态检测的很多事情,不能做到有状态检测比如基于conntrack的检测是因为IP协议本身就是无
2013-07-06 15:10:27 10193
一个iptables的stateless NAT模块实现
2014-12-27
模块化的nf-HiPAC
2014-11-21
关于linux内核以及其他个人体会的文集
2009-09-07
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人