- 博客(15)
- 资源 (4)
- 收藏
- 关注
原创 关于Linux线程的线程栈以及TLS
说明:a.本文描述Linux NPTL的线程栈简要实现以及线程本地存储的原理,实验环境中Linux内核版本为2.6.32,glibc版本是2.12.1,Linux发行版为ubuntu,硬件平台为x86的32位系统。b.对于Linux NPTL线程,有很多话题。本文挑选了原则上是每线程私有的地址空间来讨论,分别是线程栈和TLS。原则山私有并不是真的私有,因为大家都知道线程的特点就是共享地址空间,原则
2012-06-30 14:46:40 24544 9
原创 折腾了一晚上Windows网络却未果
搞了一晚上Windows网络,还是没有搞明白,也许我不能用“通过怪异的配置总能实现”这种典型的Linux用户思想来审视Windows,我真的错了,毫无成就感,以下是我的难题,在Linux上总能解决而在WIndows很难解决的难题:1.网卡桥接在Linux下,配置网卡桥接实在太简单了,但是几乎什么事情都得你自己来做,桥接后网卡的IP地址依然存在,如果你不手工清除的话,搞不好就会路由冲突。而在Wind
2012-06-26 17:38:52 17976 3
原创 折腾了一晚上Windows网络却未果
搞了一晚上Windows网络,还是没有搞明白,也许我不能用“通过怪异的配置总能实现”这种典型的Linux用户思想来审视Windows,我真的错了,毫无成就感,以下是我的难题,在Linux上总能解决而在WIndows很难解决的难题:1.网卡桥接在Linux下,配置网卡桥接实在太简单了,但是几乎什么事情都得你自己来做,桥接后网卡的IP地址依然存在,如果你不手工清除的话,搞不好就会路由冲突。而在Wind
2012-06-26 17:33:19 17862
原创 自制迷你路由器过程中的点滴
端午假期搞了一块带有Wifi模块的开发板,本来这是用于研发Android终端的,我本无意于此,因此就拿来做迷你路由器了,当然,我事先知道它肯定可以很方便的灌入Linux内核以及应用程序,否则光这一步就够我喝一壶的了。 所谓的一个路由器,使用Linux来做实在太方便了,对照着家里的TP-LINK,无非就是实现以下的模块,甚至都不用写一行C代码:1.实现路由添加,修改,删除操作界面界面可
2012-06-26 17:31:15 19574 2
原创 Linux如何做到将外来数据包DNAT到Loopback
前面写了篇文章《使用iptables为何不能将外部进入的包NAT到127.0.0.1》,牵扯到了很多知识,最终的结论就是不能那么做。这个结论让人有些不舒服,说了半天就是阐述它为何做不到,如果我非要将包NAT到loopback呢。比如为了不将端口以及地址暴露给外部,我就是想让代理服务侦听127.0.0.1这个地址,有没有什么办法做到呢? 因为你用的是Linux,答案无疑是肯定的,所要做
2012-06-22 11:48:17 18883 2
原创 使用iproute2配置force-onlink路由
有时候在系统上配置一个32位掩码的IP地址是不错的,这样一来可以使系统路由表瘦身,二来可以防止显式路由之外的主机和本系统通信。这个怎么说呢?通过配置一个32位掩码的IP地址,就会发现在路由表的main表中,少了该地址的直连路由,因为它是32位的,本身不表征不携带任何网络,在路由表的local表中,少了该地址表征的网段的广播路由,因为它不表征任何网段,因此除非你显式地配置一条路由,否则该地址应该可以
2012-06-22 11:41:56 18938
原创 窥视Linux内核的行为的一些方法
想了解Linux内核的行为,需要一定的偷窥经验,大致可以分为以下几个:1.使用printk直接在内核代码或者模块代码的你想偷窥的地方printk一些信息。这种方式需要你会编译内核代码以及编译内核模块,以及将其正确安装进内核并启动之。虽然需要这么多知识,然而这种方式是比较土的。除非万不得已,一定有比这更加简单的方法。2.查看dmesg这种方式取决于内核会输出哪些信息。dmesg显示的信息一般都是比较
2012-06-14 18:21:15 4148
原创 Linux的NAT实现浅谈
NAT实际上就是一个代理,代理NAT内部的所有机器,NAT的分类就是按照“如何代理”来讲的,不管是基于连接的NAT实现,还是基于包的NAT实现,都要处理好一个映射关系,那就是转换后的包的返回包如何转换回原始的。 Linux的NAT是对称NAT,而不是锥形NAT,虽然很多时候Linux的NAT看起来更像是一个锥形NAT。 只需要明白Linux实现NAT的本质,即使不明白N
2012-06-14 18:19:18 13102 1
原创 Linux socket设置mark的必要性
Linux的Netfilter钩子点的位置会导致一些奇怪的问题,比如本机发出的包无法使用基于mark的策略路由,这是因为mark一般是在Netfilter中进行的,而Linux的路由处在OUTPUT钩子点之前,因此这是一个顺序倒置的问题,如何来解决呢?只能在路由之前打上mark,而我们知道,对于外部进入的包,mark是在PREROUTING进行的,因此对于外部进入的包,策略路由是好使的,对于本机发
2012-06-14 18:16:44 15705
原创 使用iptables为何不能将外部进入的包NAT到127.0.0.1
如有下面的iptables规则:iptables -t nat -A PREROUTING -p tcp --dport 80 -j DNAT --to-destination 127.0.0.1:1234你觉得会成功吗?试一下就知道,不会成功。这是为什么呢?奇怪的是,不但没有返回包,即使本地没有1234这个端口在监听,也不会发送reset,这说明数据包根本就没有到达传输层,通过forward统计
2012-06-14 18:13:15 8368 2
原创 凌乱的乐趣与悲哀
1.原来沿着自动扶梯逆行如此费力起初以为沿着自动扶梯逆行很轻松呢,结果试了才知道...6月6号去嘉定办事,在曹杨路转地铁11号线,由于这是第一次在那里转车,不知道11号线两个方向竟然在不同的层,往江苏路和往嘉定方向一个在上一个在下,我像往常一样随便就找个扶梯下去了,结果发现错了,找了半天才找到上去的路,发现太远了,不知道怎么回事突然想从刚才下来的扶梯逆行上去,于是就奔跑过去了,最难的就是在下面踏上
2012-06-09 15:37:20 17604 2
原创 Linux对称NAT的UDP穿越
和同事讨论UDP打洞技术,后做了一个简单的实验,由于Windows上设置NAT以及察看其原理太麻烦或者根本就不可能,于是还是使用Linux做了实验,发现基于Linux ip_conntrack这种对称NAT也能很简单的实现UDP穿越,实验很简单,并且这种UDP穿越还不需要公网服务器的协助(因为它们对于对称NAT或者基于连接的NAT根本帮不上什么忙),很实用。在展示实验之前,首先要明白以下的知识点。
2012-06-09 15:11:25 9903 5
原创 Netfilter的expect连接的原理和利用
ip_conntrack有一个特性,那就是可以跟踪expect连接,所谓的expect连接,理解起来很简单,那就是“在一个连接中生成的另一个连接”,那么如何来识别一个连接要生成另一个连接呢?以FTP为例,FTP服务器会将文件传输所用的地址和端口信息作为数据载荷传输到对端的,Linux网关捕获这个数据包,将其解开然后根据FTP的协议规范获取地址和端口信息,随后就生成了一个expect连接。也就说,e
2012-06-09 11:10:50 6884 1
原创 Netfilter策略路由和uRPF
在Linux中,往往会出现一些奇怪的现象,如果你仅仅知道一些皮毛,那么这些现象将会让你抓耳挠腮,因为Linux往往遵循RFC建议而有时却不会保持持久的大众化实现,毕竟,Linux并不是一个人搞定的,特别是网络协议栈这一方面。uRPF这个概念很多人都知道,Linux的实现却很不一致,在Linux实现中,它和策略路由的点点滴滴值得说一番,我们分为以下4个关键点来说明,当然这4点并不是全部关于uRPF的
2012-06-03 19:02:32 5604 2
原创 Netfilter的rpfilter技术-Linux的uRPF
作为IP路由的一种补充,uRPF(单播反向路径转发)可谓非常有用,它认证了IP数据报的源地址,在一定程度了保护了网络的安全,比如有效防止了洪泛攻击。然而直到Linux内核的2.6的高版本版本,Linux只能实现严格的uRPF,这是由fib_validate_source函数来完成的,具体配置在/proc/sys/net/ipv4/conf/$dev/rp_filter,对于Cisco上很简单的松散
2012-06-03 18:59:38 6692 1
一个iptables的stateless NAT模块实现
2014-12-27
模块化的nf-HiPAC
2014-11-21
关于linux内核以及其他个人体会的文集
2009-09-07
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人