Tag: IPTABLES

Unix Like, 服务器, 网络

L4(传输层)IP透明反向代理的实现(传递客户端真实IP)

这种需求,一般来说,会在应用层加个标记标明客户端的IP,例如说HTTP,就是添加个请求头的事情。但并不是所有服务器程序、协议你都能这样下手。所以能不能在不对协议和服务器程序本身做任何改动的情况下,传递客户端的IP呢? 最直接的方法应该就是,把L3的源IP改掉,没对协议进行任何改动,对上层完全透明。先来看看改了L3的source IP会出现什么问题: 上图中的A是个L4负载均衡,Router会把来自Internet的客户端请求转发给A,A再根据策略转发到B、C或D。 假设这时A选择了B,A把请求转发给B时,把L3的源IP改成了客户端的IP,那B收到数据包后,根据B系统上的路由表,回复的包会直接经 […]

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

Fix Ubuntu policy-based route with fwmark not work

近期发现Ubuntu基于ip rule add fwmark … lookup …所做的策略路由无法正常使用,而Debian正常。抓包的特征就是,出网数据包能应用到策略路由,也能抓到回应的数据包,但回应的数据包被内核丢弃,不会送达user space。 而ip rule add from … lookup …则正常。 查找资料得知是rp_filter的影响(见此:https://www.kernel.org/doc/Documentation/networking/ip-sysctl.txt),继而发现Ubuntu的/etc/sysctl.d是有 […]

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

QoS —— 交互式应用最低延迟,HTTP(S)、IMAP等常用服务优先,迅雷、P2P受限

前言 使用迅雷全速下载时,其余网络应用的体验几乎约等于断网状态。 全速下载时,迅雷并没有占用太多上行带宽,于路由器上观察上行速率,同样正常: 可见全速下载时出现的现象,问题在于下行。 迅雷全网搜索资源,这意味着会有许多来自不同地方的计算机,以高速率往我的计算机发来大量数据包。ISP处的队列早已被这些P2P数据包塞满,而SSH、网页等服务的数据包速率不高,根本不够P2P数据包竞争,这些数据包到达ISP处时,只能由于队列已满而被丢弃。   其实这个问题,并没有什么好的解决办法,因为ISP处的队列我们没有权限控制。 我们所能做的,只是控制P2P的速率,避免因ISP处队列满而使得数据包被丢弃 […]

Read more
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
Unix Like, 操作系统, 服务器, 未分类

解决安装OpenVZ vzctl 4.7后iptables nat表提示”can’t initialize iptables table `nat’: Table does not exist (do you need to insm Perhaps iptables or your kernel needs to be upgraded.”

几天前给一个服务器安装OpenVZ后,使用iptables添加nat规则时,出现错误提示:

执行lsmod看了下:

发现相关的NAT模块都已经加载,应该与内核无关。 更换内核回2.6.32-431.11.2.el6,问题还是如此,无奈之下重装系统。 安装系统后,我手动一个个下载OpenVZ的RPM包,一个个安装,然后重启后nat表是否可以使用,最后发现安装vzctl 4.7并且重启后,iptables的nat表就出问题了。 看了下官网,原来在OpenVZ在2014 […]

Read more 4 Comments