自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(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 24773 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 5561

原创 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 11849

原创 关于iptables的u32匹配

前面一篇文章----阐释了iptables最新的bpf match,说它将多个matches并成了一个经过编译的解释型bytecode bpf match,早在bpf match之前,u32 match也可以做到matches合并,虽然语法让人费解没有分离match可读性强之外,效率还真是高!它可以做到无状态检测的很多事情,不能做到有状态检测比如基于conntrack的检测是因为IP协议本身就是无

2013-07-06 15:10:27 10178

一个iptables的stateless NAT模块实现

如果你在寻找Linux上配置诸如Cisco设备上的static双向NAT的方法,这个或许就是你想要的; what?你觉得它完不成PAT?是的,它不行。但是想做PAT为何不使用现有的iptables实现呢?它可以自动为你解决元组唯一性问题。不要从概念上分析,事实上,static双向NAT是完全对称的,一对一的 ,也只有在BOX两边的网络在拓扑级别是完全对等的情形下,这种NAT或许才是有用的,Cisco设备经常处在这样的位置,比如一个很大的stub节点的出口位置,比如两个domain的中间位置... 我将名字取为STATIC-2-WAY-NAT,比较长也比较怪,完全不符合UNIX的小写短名传统,我的想法是:这样可以少写很多的帮助信息,因为名字就是自解释的。

2014-12-27

模块化的nf-HiPAC

原版的nf-hipac需要为内核打patch,且只支持较低版本的内核,构建起来相对比较麻烦。 模块化后的nf-hipac可以直接作为内核可加载模块编译,且适配了高版本的Linux内核。为了移植工作简化,去掉了和iptables模块的联动支持!

2014-11-21

配置文件还有一些other

代码和配置iptables配置文件,还有一些别的东西

2010-04-16

关于linux内核以及其他个人体会的文集

本文集是我用将近两年的时间写成的,大多数文章是关于linux内核的,另外还有一些我自己对计算机的理解,还有一些历史,音乐方面的东西。适合于对linux内核思想感兴趣的阅读,文章偏重于对于思想的理解。

2009-09-07

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除