Unix Like, 操作系统, 网络

使用策略路由实现涉及getsockopt(…, SO_ORIGINAL_DST, …)程序的远程调用(Redsocks, ss-redir之类的远程调用)

Redsocks/ss-redir的实现 DNAT与REDIRECT模块在iptables target extension之列。 这两个模块都能根据参数,修改数据包的header中的目的IP和端口。 既然修改,那就不是附加,毕竟网络层传输层header的内容怎么可能随随便便增删呢,这意味着,数据包的真实目的地会被完完全全地抹掉! Redsocks/ss-redir收到这样的数据包后,不做特殊处理,何以知道这数据包原来想发给谁呢? 这些程序之所以能正常工作,得益于NAT的透明性,被NAT处理的数据包,在内核中均有所记录,NAT后的正常通讯由NAT发起者维持,Redsocks/ss-redir这 […]

Read more No Comments
Unix Like, VPN, 操作系统, 服务器

一款鲜为人知的杰出VPN方案 —— ACCEL-PPP

因PPTP简单、方便,无特别需要,平时需要用到VPN时一般都会首选PPTP。 数月前使用PPTP的过程中发现,Linux下的PoPToP方案极限速率仅有20 Mbps左右,而Windows下“网络策略和访问服务”提供的PPTP上限速率则高些,能达到70 – 80 Mbps。 当时了解到一款名为ACCEL-PPP的方案,尝试了一番,效果不负其名——ACCEL。 但今天发现,此方案的中文介绍、资料近乎无(英文介绍也不多),遂撰写此文,欲让更多人了解到此杰作。   服务器配置: CPU: Intel Xeon L5520 *2 RAM: 48GB 网络适配器: Intel 千兆 […]

Read more 1 Comment
Unix Like, 操作系统, 网络

[翻译]Linux网络栈之队列

原文信息 标题: Queueing in the Linux Network Stack 链接: https://www.coverfire.com/articles/queueing-in-the-linux-network-stack/ 作者: Joseph Prem   警告 除特别声明或获得许可,否则本站文章一律禁止转载。   以下为译文 数据包队列是任何一个网络栈的核心组件,数据包队列实现了异步模块之间的通讯,提升了网络性能,并且拥有影响延迟的副作用。本文的目标,是解释Linux的网络栈中IP数据包在何处排队,新的延迟降低技术如BQL是多么的有趣,以及如何控制缓冲 […]

Read more No Comments
C/CPP, Unix Like

解除clock_gettime@@GLIBC_2.17的依赖

在x86_64的Debian Jessie上交叉编译一个mipsel架构的程序,能静态链接的都静态链接了。 程序编译好传送到mipsel架构的设备上时,ldd查看库的依赖,却提示

(⊙﹏⊙)b mipsel设备上运行着Debian Wheezy,使用的是glibc 2.13:

尝试了更新到glibc 2.17,结果运行所有动态链接glibc的程序都提示Segmentation fault或Bus error,眼看要变砖!!!∑(゚Д゚ノ)ノ,最后用一个静态链接版本 […]

Read more No Comments
C/CPP, 编程

探讨C语言返回struct的实现

C语言基本类型的返回通过寄存器实现。 寄存器容量不大,一个结构体的大小不定,多塞几个成员,很容易就会超过寄存器的容量,不太可能通过寄存器一次性返回一个结构体。 把以下代码转为汇编,探个究竟:

优化后的代码可能比较晦涩,64位寄存器数量是32位的一倍,为了简便理解,关闭代码优化,并且转为32位汇编,命令:

结果:

汇编代码已写上注释。 在get_struct()函数中,调用fun()之前,会首先把ge […]

Read more 2 Comments