随笔分类 - 邻居nd netfilter
摘要:目前 C1容器内的ping -> c1 容器内的网卡eth0 -> 宿主机内的vethacea5a5-> 宿主机内的Linux Bridge -> 宿主机内Bridge 上的vethb7b238f-> C2 容器内的网卡eth0 docker exec xxxx ping 192.168.222.2
阅读全文
摘要:今天处理问题时,发现docker 容器内访问外网不通,tcpdump 抓包发现,只抓到veth 接口上的包,但是报文需要再宿主机物理网卡上转发到外网,此时这部分报文没看到, 目前容器使用桥接模式(Bridge Network) 容器 eth0 (veth0) ↓ veth_xmit() [veth.
阅读全文
摘要:之前有涉及到 table 查找https://www.cnblogs.com/codestack/p/15975344.html fib的创建https://www.cnblogs.com/codestack/p/15964568.html https://vincent.bernat.ch/en/
阅读全文
摘要:skb结构体中的成员_skb_refdst用于暂时缓存出口/入口路由,避免在skb生存期中反复查找路由 sock结构体中有两个成员缓存路由:sk_rx_dst缓存入口路由,sk_dst_cache缓存出口路由 SKB路由缓存 skb_dst_set需要在调用前增加引用计数(dst_clone);而s
阅读全文
摘要:发送tcp报文时: nc 10.10.10.2 80 tcp_v4_connect 1.1 >ip_route_connect static inline struct rtable *ip_route_connect(struct flowi4 *fl4, __be32 dst, __be32 s
阅读全文
摘要:主动发出tcp连接时路由stack 如果srcip没有设置;则通过路由查找源ip然后赋值初始化fl4 最后调用ip_route_output_flow >__ip_route_output_key 查找路由 查找路由时,由于有sip;所以直接进入一下逻辑 然后查找rth; 然后初始化flp出口 如果
阅读全文
摘要:添加pbr 相关逻辑:https://www.cnblogs.com/codestack/p/15964315.html fib_rules_lookup,判断下action接后执行ops->action的操作,此刻应该是fib4_rule_action, 在没有使用l3mdev的情况下,使用rul
阅读全文
摘要:VRF顾名思义就是虚拟路由转发(Virtual Routing Forwarding),VRF 允许在同一物理设备上维护多个独立的路由实例;简单点来讲,就是把一台路由器当多台虚拟路由器来用。 不同 VRF 实例之间的流量是相互隔离的。这对于提供多租户服务非常有用,确保一个租户的流量不会影响到其他租户
阅读全文
摘要:ip_route_connect_init -> flowi4_init_output 这个函数会去初始化fl4的数据,例如fl4->daddr,fl4->saddr,fl4->fl4_dport,fl4->fl4_sport,但是并非都是已经设置好值的,因为想要发送第一个SYN报文,就需要完整的来
阅读全文
摘要:xx产品有个功能是对任何端口的访问都会被记录。它的实现原理是iptables的NFLOG NFLOG是什么 它是一个target,就像ACCEPT、DROP等可以作为iptables -j后的参数值 iptables -A INPUT -p tcp -m tcp --dport 80 -j NFLO
阅读全文
摘要:ebtables中有三张表filter,nat,broute,六条链INPUT,FORWARD,OUTPUT,PREROUTING,POSTROUTING和BROUTING ebtables -A INPUT --log-level info --log-ip --log-ip6 --log-arp
阅读全文
摘要:目前遇到问题为:设备发送特定的radius探测报文到radius容器不通, 在宿主机能抓到包,容器内部抓不到包 目前问题已经明确,我们来看下正常情况下报文是怎样的!! // 00:0c:29:cc:1c:df 为宿主机 eth0mac地址 [Thu Sep 21 18:10:39 2023] TRA
阅读全文
摘要:iptables -t raw -I PREROUTING -p tcp --dport 80 -j LOG # iptables -t raw -I PREROUTING -p tcp --dport 80 -j LOG --log-level 3 --log-prefix "ipt-err:"
阅读全文
摘要:iptable中 四个表的优先级顺序如下: raw: 对收到的数据包在连接跟踪前进行处理。一般用不到,可以忽略 一旦用户使用了 raw 表,raw 表处理完后,将跳过 nat 表和 ip_conntrack 处理,即不再做地址转换和数据包的链接跟踪处理了 mangle: 用于修改报文、给报文打标签,
阅读全文
摘要:索引和TCP状态值 三维数组tcp_conntracks定义了TCP连接的状态转换表, 第一维表示方向,0和1分别表示原和反方向; 第二维表示6个报文标志,如下tcp_bit_set所示; 第三位表示当前的状态,最终索引对应的值为新状态。 static unsigned int get_conntr
阅读全文
摘要:# 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穿越防
阅读全文