摘要:
# iptables -j TPROXY -h TPROXY target options: --on-port port Redirect connection to port, or the original port if 0 --on-ip ip Optionally redirect to 阅读全文
摘要:
在之前文章ftp&nat写到调整seq问题,现在专门来看下: tcp负载长度发生变化 在ftp传输PORT命令或者PASV的应答时会进行alg处理,如果使能了nat则会修改PORT命令或者PASV的应答的内容,导致tcp负载发生变化。 /* Generic function for mangling 阅读全文
摘要:
·········Linux的TCP实现中自带了Syncokkie,然而那是在TCP层做的,我们知道Linux内核的TCP是在锁住Listener的情况下进行Syncookie过程的,这样做的意义明显是为了不为SYN攻击流量分配任何本地内存,而不是为了节省CPU时间的。为了去掉那把锁在Listene 阅读全文
摘要:
之前ac上支持过ftp先关内容,dpdk上ftp的实现主要是拷贝内核ftp的实现。dpdk的代码涉及到公司业务,就不上传了。看内核协议栈代码 基本原理 向连接跟踪子系统注册一个helper来跟踪FTP控制连接上传输的报文,通过搜索这些报文中的PORT(主动模式)和PASV(被动模式)命令,进而获取到 阅读全文
摘要:
上篇文章分析了 内核 tftp help 期望连接相关代码, 其中有一点是nat_tftp没有分析,对应业务逻辑就是:TFTP协议穿越SNAT TFTP协议穿越SNAT 穿越SNAT主要用于TFTP服务器部署在公网场景,客户端需要通过SNAT转换后访问外部服务器。如图2-1所示,展示了TFTP穿越防 阅读全文
摘要:
内核首先注册tftp help 将tftp_help 以及熟知的端口号69 注册到nf_ct_helper_hash链表中 static int __init nf_conntrack_tftp_init(void) { for (i = 0; i < ports_c; i++) { tftp[i] 阅读全文
摘要:
NF_INET_PRE_ROUTING 做DNAT (做了DNAT后在做路由决定是local_in还是forwarding)数据包进入路由表之前 NF_INET_POST_ROUTING 做SNAT (离开协议栈时,做源ip替换)发送到网卡接口之前 NF_INET_LOCAL_OUT:本机发包时,做 阅读全文
摘要:
目前内核NAT 是基于nf_conntrack连接跟踪实现。 首先看下conntrack的相关知识! /* struct sk_buff { struct nf_conntrack *nfct;//指向struct nf_conn实例 .............. }; */ //最主要的就是tup 阅读全文
摘要:
1.用户空间轮询 减少中断带来开销; 减少系统调用带来开销; 零拷贝减少内存拷贝的时间; 轮询 Polling,busy looping 提供了I/O批量处理的可能性; 避免中断性能瓶颈是DPDK提升数据包处理速度的关键之一; 2.多核CPU性能优化 RSS硬件队列; CPU独占:独占CPU资源,减 阅读全文