Category: 网络

网络

暨南大学珠海校区校园网 – 802.1x Linux 客户端

暨大珠区有线校园网,部分区域用的是 802.1x 认证。学校网站也没提供珠区 802.1x 的 Linux 客户端。 珠区校园网客户端是 H3C 的 iNode,别的学校已经有大佬实现过这款 Linux 客户端了,可以拿来珠区用。 这里选用了这个:https://github.com/Besfim/inode-njit 1. 编译安装(Debian 11 为例) 安装编译所需的工具和库

下载源码

编译

Read more
Unix Like, 网络

UDP SndbufErrors & ENOBUFS

最近一部分服务器上,遇到UDP发包速率太高会出现大量丢包的情况。这个丢包不是发生在中间网络设备上丢,也不在接收方上,而是发生在发送方kernel中。为什么会知道是在kernel丢的?因为用户空间程序的统计的发包量,跟内核统计的有很大差距,所以可以肯定用户空间把包交给内核后,内核并没有全发出去。 通过kernel的snmp,发现UDP的SndbufErrors计数器有很高的值:

这个计数器是在哪、什么情况下增长的?翻了一下kernel的源码,在net/ipv4/udp.c中找到两个,一个在udp_sendmsg()中: [cray […]

Read more
网络

KCP-GO的重传机制以及带宽利用率的提升

1. KCP 按KCP的README,这协议并不是设计来跑大流量的: TCP是为流量设计的(每秒内可以传输多少KB的数据),讲究的是充分利用带宽。而 KCP是为流速设计的(单个数据包从一端发送到一端需要多少时间),以10%-20%带宽浪费的代价换取了比 TCP快30%-40%的传输速度。 从它的技术特性,你也可以得知这协议相对TCP的重点改进是在重传上,而不是拥塞控制。那它为什么快(某些情况下)呢?一方面,它重传机制的改进,丢包后可以更早重传,对方更早收到补发的包,更早能把数据递交给应用层,缓冲区的释放更快,发送方也能更早继续发送后续的数据;另一方面,它技术特性里面有个“非退让流控”,名字听起 […]

Read more
操作系统, 服务器, 网络

PowerDNS Recursor设定默认EDNS Client Subnet值

授权DNS服务器可以根据递归DNS服务器发送的EDNS Client Subnet(ECS)中的值,返回不同的结果。如果客户端是通过内网IP向递归DNS服务器发起查询的,而且递归DNS服务器发出的递归查询使用的公网IP跟客户端使用的公网IP不是一个地区时,就无法给客户端提供一个最优的解析结果了。 PowerDNS Recurse 4.2增加了一个设置“ecs-add-for”,可以指定哪些subnet允许作为ECS的值,对于不允许作为ECS值的subnet,将会取ecs-scope-zero-address的值作为ECS的值。所以通过这两个设置可以为内网客户端设定一个默认的ECS值。 配置文件 […]

Read more
Unix Like, 操作系统, 服务器, 网络, 运营维护

Nginx ssl_preread传递客户端IP

ssl_preread是基于L4的反代方案,TLS SNI握手时客户端会提供域名,所以可以让Nginx在无需完成TLS握手的情况下,就根据域名进行后端服务器的选择。简单来讲,你只需要给后端服务器配置一个SSL证书,而提供反代功能的Nginx则无需配置。文档见此:http://nginx.org/en/docs/stream/ngx_stream_ssl_preread_module.html 因为这是L4反代,所以通过“proxy_set_header”传递客户端IP的方法是行不通的。其实传递客户端IP的解决办法跟上一篇文章类似:L4(传输层)IP透明反向代理的实现(传递客户端真实IP),ng […]

Read more