- 博客(14)
- 资源 (5)
- 收藏
- 关注
原创 无线局域网WLAN扩展器工作模式
以TP-LINK无线扩展器WA832RE为例,访问其web配置界面,看到有三种模式可选,自动探测、三地址和四地址模式,默认是自动探测。尝试修改为三地址或者四地址模式,修改后提示保存成功,刷新有变回自动探测模式。不知何故,询问TP-Link客服,说是因为浏览器兼容问题,测试了其它浏览器也不能修改。经测试,默认自动探测模式时,其实际工作在三地址模式。通过无线口抓包可看到,所谓的无线扩展,首先是扩展器作...
2018-05-31 15:11:30 2758
原创 苹果域名解析变化引起的web认证问题
苹果手机在连接开启web认证的WIFI之后,会自动访问其官方captive域名地址:captive.apple.com,如收不到正确回复,ios系统就认为当前网络需要其它认证,会自动打开浏览器再次访问其官方captive页面,此时WIFI设备需要返回一个重定向的web认证界面,提供用户输入用户名和密码进行验证。认证过程结束。但是,经过测试,有些型号或者IOS版本,不能自动跳转到web认证界面(具体...
2018-05-30 16:20:41 4830
原创 网桥调用IP层netfilter的HOOK函数
Linux中的网桥属于二层转发设备,可利用ebtables工具根据数据包的ethernet头等信息,配置规则,如下,将目的MAC地址为00:01:02:03:04:05的数据包,转发到目的MAC地址为00:06:07:08:09:0a的主机上:ebtables -t nat -A PREROUTING -d 00:01:02:03:04:05 -j dnat --to-destination 00...
2018-05-24 16:49:04 7038
原创 内核获取网络设备的网桥接口
Linux内核中有两种获取网络设备的桥接口方法,其中一种是在控制路径上;另一种是在数据路径上。控制路径用户平面的程序brctl下发控制命令,比如setpathcost和setportprio命令以port number为参数下发到内核,内核使用br_get_port函数遍历网桥上的接口列表,最终找到对应的网桥接口。br_get_port函数需要在获得了网桥spinlock锁后调用,防止对port_...
2018-05-21 12:32:38 2176
原创 路由策略
路由策略处理相关的内核代码集中在的net/ipv4/fib_rules.c和net/core/fib_rules.c两个文件内。路由策略的配置独立的ip rule策略配置,可指定源地址、目的地址、入接口、出接口等,或者与iptables配合使用的策略rule。ip rule add from 192.168.1.123 table 5ip rule add to 192.168.1.1 ...
2018-05-17 18:13:06 1657
原创 路径MTU(PMTU)发现控制与DF位
路径MTU发现是用来确定到达目的地的路径中最大传输单元(MTU)的大小。通过在IP报头中设置不分片DF(Don't Fragment)标志来探测路径中的MTU值, 如果路径中设备的MTU值小于此报文长度,并且发现DF标志,就会发回一个Internet控制消息协议(ICMP)(类型3、代码4需要分片的消息ICMP_FRAG_NEEDED),消息中包含它可接受的MTU值。PMTU发现控制模式#defi...
2018-05-15 17:46:18 20722
原创 iPhone手机连接wifi网络时的portal认证
iPhone手机连接open模式(二层不认证)的wifi网络的web认证(三次基于IP的认证)流程与问题。正规流程iPhone手机在连接到wifi网路之后,会自动访问苹果自己的captive portal页面(http://captive.apple.com/hotspot-detect.html),验证当前所连接的wifi网络是否有Internet连接。如果网络可访问到苹果的captive-po...
2018-05-14 13:05:23 16564
原创 路由下一跳中的变数exception
内核通过查询转发信息表(fib_lookup),得到下一跳(fib_nh),从而得到了关于此条路由的相关信息,其中重要的包括下一跳设备nh_dev,下一跳网关nh_gw等。然而,关于此条路由可能存在两个变数exception,其一是这条路由相关的路径MTU(PMTU)发生改变;其二是收到了关于此条路由的ICMP重定向报文。由于此两种改变并不是永久的,内核将他们保存在下一跳fib_nh的except...
2018-05-10 15:25:38 937
原创 SKB路由缓存与SOCK路由缓存交互
skb结构体中的成员_skb_refdst与sock结构体中成员sk_rx_dst(缓存入口路由)和sk_dst_cache(缓存出口路由)成员之间的交互操作。SOCK入口路由与SKB路由缓存内核在接收流程中,调用early_demux函数提前在IP层做established状态的sock查找,并负责将sock结构体成员sk_rx_dst的路由缓存赋值给skb成员_skb_refdst,对于UDP...
2018-05-09 15:30:15 1173
原创 SKB中缓存的路由类型
skb结构体中的成员_skb_refdst用于暂时缓存路由,避免在skb生存期内的重复路由查找。不同于sock结构体中有两个成员缓存路由:sk_rx_dst缓存入口路由,sk_dst_cache缓存出口路由。skb结构体中的_skb_refdst在特定时刻仅缓存一种路由。路由缓存引用计数如下设置缓存的两个函数,skb_dst_set需要在调用前增加引用计数(dst_clone);而skb_dst_...
2018-05-08 16:03:40 3037
翻译 如何在CentOS上搭建chroot环境
chroot环境可以用来在一个完整的大文件系统上运行另外一个虚拟的文件系统。可使用它来实现许多功能,比如生成虚拟共享主机账号。每个用户的账号与一个chroot环境一一对应,用户可使用此chroot内安装的Linux发行版的整个文件系统,但是不能触及外层的大文件系统。(译者使用chroot调试程序^_^)。使用Red Hat和CentOS系统的安装包管理器yum,非常容易创建一个chroot环境。步...
2018-05-08 11:24:56 4609 2
原创 GLIBC编译选项disable-multi-arch问题
情况是系统之前一直使用glibc-2.7版本,最近升级到glibc-2.17版本。出现一个奇怪的问题,系统内一个so共享链接库在解析文本文件时结果不完整。此so文件是在glib-2.7基础上编译生成的。无源代码,直接在glibc-2.17环境下使用。问题不好确定,只好尝试版本2.7和2.17之间的各个版本。发现问题出在2.11升级到2.12版之时。对比发现2.12版本增加了multi-arch的优...
2018-05-08 10:18:08 898
原创 Linux实现交换机的另一种方法
需要涉及到内核的两个模块:bridge网桥和802.1q VLAN。二层交换首先创建全局网桥br_test。将所有物理接口添加到网桥下。此时,相当于一个纯二层交换机。brctl addbr br_testbrctl addif br_test eth0brctl addif br_test eth1三层交换利用Linux的802.1q模块实现三层交换机。首先为网桥配置管理IP地址。ifconf...
2018-05-07 12:02:12 7002
原创 Linux网桥MAC地址的选择
网桥创建在网桥创建时(brctl addbr br_test),内核为其生成一个随机的mac地址,并保证此地址的多播位为零(首字节第一个bit位:addr[0] &= 0xfe),并且设置上首字节的第二个bit位,表明为本地生成的mac地址(addr[0] |= 0x02)。static inline void eth_hw_addr_random(struct net_device *d...
2018-05-04 10:24:22 7001
dm-launcher-7.20.msi
2024-09-24
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人