
计算机网络
文章平均质量分 70
云原生笔记
事在人为
展开
-
【博客636】流量先经过tcpdump还是先经过netfilter剖析
步骤:10.13.13.13访问10.23.23.23的nginx,我们设置drop将10.23.23.23的出入流量都drop,tcpdump此时抓到了哪些包。此时抓不到10.23.23.23回复的出向的包,因为出现tcpdump抓包点在netfilter后,被netfilter drop了。原创 2023-03-12 12:22:51 · 701 阅读 · 0 评论 -
【博客635】tcpdump原理与网卡混杂模式
tcpdump原理是注册一种虚拟协议,使得每个包在遍历当前的协议列表时有机会被处理,如果tcpdump发现包符合要求就会使用skb_clone一份,送到用户态程序去分析。tcpdump还会使网络设备进入混杂模式,是为了让包能过进入网络协议栈,从而有机会被捕捉,这样才能抓到包。原创 2023-03-12 11:57:04 · 4018 阅读 · 0 评论 -
【博客634】linux vxlan设备的不同场景下的四种使用方法
Linux 提供了另外一种方法,内核能够动态地通知节点要和哪个容器通信,应用程序可以订阅这些事件,如果内核发现需要的 ARP 或者 fdb 表项不存在,会发送事件给订阅的应用程序,这样应用程序从中心化的控制拿到这些信息来更新表项,做到更精确的控制。这个方案解决了在某些 underlay 网络中不能使用多播的问题,但是并没有解决多播的另外一个问题:每次要查找 MAC 地址要发送大量的无用报文,如果 vtep 组节点数量很大,那么每次查询都发送 N 个报文,其中只有一个报文真正有用。原创 2023-03-12 10:32:43 · 2080 阅读 · 0 评论 -
【博客633】linux vxlan设备工作原理
创建vxlan设备的时候会创建udp socket来向内核注册对udp包的处理,这个udp socket还绑定了vxlan处理的回调函数当udp包来了,内核发现有相应的udp socket在监听,就将包给这个udp socket指定的回调来处理,如果有设置回调的话,vxlan的udp socker设置的vxlan包回调处理函数就会在这里调用,从而有机会处理vxlan udp隧道包。原创 2023-03-12 10:02:45 · 734 阅读 · 0 评论 -
【博客632】k8s service session affinity原理与iptables recent模块
iptables的recent模块用于限制一段时间内的连接数, 是谨防大量请求攻击的必杀绝技!善加利用该模块可充分保证服务器安全。原创 2023-03-11 14:07:30 · 1198 阅读 · 0 评论 -
【博客631】监控网卡与进程网络IO使用情况
注意:如果刚刚安装了 vnStat,它将给出以下消息“eth0:还没有足够的数据可用。等待一段时间,然后再次尝试该命令。原创 2023-03-11 11:19:39 · 736 阅读 · 2 评论 -
【博客630】MTU网络问题排查及解决思路
网络层发送数据包是有最大长度的,网络层从传输层接收到要发送的数据包时,它要判断向本地哪个接口发送数据,并查询该接口获得其最大传输单元MTU(MaximumTransmissionUnit),网络层把MTU值与要发送的IP数据包长度进行比较,如果IP数据包的长度比MTU值大,那么IP数据包就需要进行分片,分片后的数据包长度小于等于MTU(包括IP层头部,大小单位:byte)原创 2023-03-11 10:50:52 · 5749 阅读 · 1 评论 -
【博客629】Linux DNS解析原理与配置
程序客户端、下游的 DNS 服务器每次查询 DNS 成功之后,通常会将该 DNS 记录缓存一段时间,避免频繁发出查询请求的耗时。Linux 系统默认不会在本地建立 DNS 缓存,可以安装 nscd、dnsmasq 等工具提供 DNS 缓存。原创 2023-02-19 15:29:53 · 3482 阅读 · 1 评论 -
【博客628】k8s pod访问集群外域名原理以及主机开启了systemd-resolved的不同情况
从dns缓存里查找域名与ip的映射关系从/etc/hosts里查找域名与ip的映射关系从/etc/resolv.conf里查找dns server,并发起解析请求/etc/resolv.conf的内容一般如下:从dns缓存里查找域名与ip的映射关系从/etc/hosts里查找域名与ip的映射关系将dns解析请求发给本地systemd-resolved,由其去代理处理,因为systemd-resolved修改了 /etc/resolv.conf,使得本地解析请求全部发到127.0.0.1:53。原创 2023-02-19 12:44:50 · 2819 阅读 · 0 评论 -
【博客627】gobgp服务无损变更:graceful restart特性
当我们的bgp网关在对外宣告bgp路由的时候,如果我们网关有新的特性要发布,那么此时如果把网关停止再启动新版本,此时bgp路由会有短暂撤回再播出的过程,会有网络抖动。原创 2023-02-18 21:44:04 · 1277 阅读 · 0 评论 -
【博客626】不同类型的ARP报文作用以及ARP老化机制
在上图中,我们看到只有arp缓存项的reachable状态对于外发包是可用的,对于stale状态的arp缓存项而言,它实际上是不可用的。如果此时有人要发包,那么需要进行重新解析,对于常规的理解,重新解析意味着要重新发送arp请求,然后事实上却不一定这样,因为Linux为arp增加了一个“事件点”来“不用发送arp请求”而对arp协议生成的缓存维护的优化措施,事实上,这种措施十分有效。原创 2023-02-18 20:41:36 · 3115 阅读 · 1 评论 -
【博客625】keepalived开启garp refresh的重要性
原因:机器迁移后网关那边的arp表没有刷新,流量还是转发到老的端口,但是机器已经迁移到别的端口了,于是网络不通。因为keepalied默认情况下是发vrrp在实现主备切换,然后garp只在master选中的时候播出去或者收到低优先级的vrrp报文的时候播出去,然后不会再定时播了,网关那边arp表过期的时候会主动发grap来问,master回复,这样就能知道master是谁。原创 2023-02-18 17:57:40 · 1861 阅读 · 0 评论 -
【博客624】MAC地址表、ARP表、路由表(RIB表)、转发表(FIB表)
MAC地址表是交换机等网络设备记录MAC地址和端口的映射关系,代表了交换机从哪个端口学习到了某个MAC地址,交换机把这个信息记录下来,后续交换机需要转发数据的时候就可以根据报文的目的MAC地址去根据MAC地址表转发数据。原创 2023-02-18 15:28:40 · 8738 阅读 · 0 评论 -
【博客622】利用Linux bridge泛洪做流量审计与分析
在网络设备上做流量镜像时,bridge 的强制泛洪实现了网卡级别的流量镜像效果。原创 2023-02-18 12:49:56 · 641 阅读 · 0 评论 -
【博客621】iptables -J动作总结
通过MASQUERADE即可解决这个问题,MASQUERADE会动态的将源地址转换为可用的IP地址,其实与SNAT实现的功能完全一致,都是修改源地址,只不过SNAT需要指明将报文的源地址改为哪个IP,而MASQUERADE则不用指定明确的IP,会动态的将报文的源地址修改为指定网卡上可用的IP地址。LOG动作只负责记录匹配到的报文的相关信息,不负责对报文的其他处理,如果想要对报文进行进一步的处理,可以在之后设置具体规则,进行进一步的处理。作用:用于接收匹配的流量,使得流量继续往后面的规则和链路去匹配。原创 2023-02-18 12:37:54 · 1320 阅读 · 4 评论 -
【博客614】k8s实现LoadBalancer Service的网络方案
在非云服务厂商提供的k8s环境下,我们无法直接使用云厂商提供的LB,此时我们需要在基于裸金属服务器、边缘以及虚拟化的 Kubernetes 环境中使用 LoadBalancer 类型的 Service 对外暴露服务。原创 2023-02-05 14:05:47 · 2538 阅读 · 0 评论 -
【博客613】tcp重置防火墙原理:构造RST报文来终结非法活跃连接
tcpkill 工具只能用来关闭活跃的 TCP 连接,无法关闭非活跃的 TCP 连接,因为 tcpkill 工具是等双方进行 TCP 通信后,才去获取正确的序列号,如果这条 TCP 连接一直没有任何数据传输,则就永远获取不到正确的序列号。killcx 工具可以用来关闭活跃和非活跃的 TCP 连接,因为 killcx 工具是主动发送 SYN 报文,这时对方就会回复 Challenge ACK ,然后 killcx 工具就能从这个 ACK 获取到正确的序列号。原创 2023-02-05 11:58:33 · 1785 阅读 · 0 评论 -
【博客612】VLAN vs VXLAN:各施所长
vlan与vxlan的原理及其优缺点对比原创 2023-02-05 11:43:11 · 163 阅读 · 0 评论 -
【博客611】linux路由表机制
系统自带了3个策略,序号分别是0、32766、32767,策略匹配过程是从小到大执行的。以0号策略为例,它表示匹配任意来源IP的数据包,然后用名字叫做local的路由表进行路由匹配。如果local路由表里的规则能匹配成功,那么后续的rule就不会执行了,否则还会继续匹配后面的main,defaylt等路由规则每1条策略最终都会关联到1张路由表,同1个路由表可以被N个策略关联,路由表总是随着路由策略的添加而生成的。SUPPRESSOR。原创 2023-02-04 22:49:18 · 4742 阅读 · 0 评论 -
【博客610】linux “ip lias“ and “ip secondary“
以上两种方式都用来配置VIP,知名的高可用软件:heartbeat是用alias ip的方式,从heartbeat3开始,是用secondary ip,keepalived是用secondary ip的方式。工作中可以灵活的用上面两种方式。原创 2023-02-04 15:37:46 · 1568 阅读 · 1 评论 -
【博客609】docker volume挂载本机文件出现不同步的问题解决
docker volume挂载本机文件,在宿主机修改文件之后,容器内部不会同步生效,没有发生对应的修改,需要重启容器才可以正常同步。原创 2023-02-04 15:22:29 · 3990 阅读 · 0 评论 -
【博客608】源ip是本地网卡ip的流量都发往lo网卡的原因剖析
因此, 若两个网络接口分配不同的ip, 并且加入不同的net namespace, 若从本机中的另一个net namespace中ping另外一个net namespace中的ip, 则数据包不会通过“lo”接口来loopback, 需要使用线缆来连接两个网卡, 因此, 若需要在一台机器上测试网卡的性能, 需要将其加入不同的net namespace。在linux的网络设备驱动框架里面, 使用一个net_device来代表一个网络设备接口, 因此, 一个物理网卡对应着一个net_device结构。原创 2023-02-04 15:07:51 · 1792 阅读 · 1 评论 -
【博客607】linux路由过程分析与net.ipv4.ip_forward参数
要让Linux系统具有路由转发功能,需要配置一个Linux的内核参数net.ipv4.ip_forward。内核参数在Linux文件系统中的映射出的文件:/proc/sys/net/ipv4/ip_forward中记录了Linux系统当前对路由转发功能的支持情况。在sysctl.conf配置文件中有一项名为net.ipv4.ip_forward的配置项,用于配置Linux内核中的net.ipv4.ip_forward参数。sysctl 命令的 -w 参数可以实时修改Linux的内核参数,并生效。原创 2023-02-04 15:02:05 · 2264 阅读 · 0 评论 -
【博客603】linux默认生成的指向169.254.0.0的条路由的作用
当系统配置为使用动态地址,而找不到DHCP服务器时,系统会为本机设置一个169.254.X.X的地址。169.254.0.0/16这个网络地址用于自动专用IP寻址或APIPA。如果DHCP客户端尝试获取地址,但在超时和重试时间段后找不到DHCP服务器,它将从该网络中随机获取地址。这允许与未能获得DHCP地址的主机进行通信。原创 2023-01-30 22:54:13 · 1315 阅读 · 0 评论 -
【博客602】net.ipv4.conf.eth0.route_localnet的作用
在某些场景下会用在一台主机内网络流量重定向,比如将在本机回环设备中的数据包强行转发到另一台主机上。结果发现原本在正常的NAT场景中生效的iptables规则在loopback数据包的转发中并不起作用注意:回环lo接口上的 127.0.0.1 地址,不允许发到设备外部sysctl -w net.ipv4.conf.eth0.route_localnet=1 开启route_localnet后,数据包就可以在lo上做nat。原创 2023-01-30 22:44:07 · 1895 阅读 · 1 评论 -
【博客601】本地通信使用127.0.0.1会比使用本地ip更快吗?
大部分人都会认为访问本机 Server 的话,用 127.0.0.1 更快。原因是直觉上认为访问 IP 就会经过网卡。其实内核知道本机上所有的 IP,只要发现目的地址是本机 IP 就可以全走 loopback 回环设备了。本机其它 IP 和 127.0.0.1 一样,也是不用过物理网卡的,所以访问它们性能开销基本一样!原创 2023-01-29 22:13:45 · 1830 阅读 · 1 评论 -
【博客600】将iptables流量转到用户态进行特殊化处理
当我们需要将iptables匹配到的流量送到用户态来进行特殊化处理。原创 2023-01-29 21:59:58 · 1400 阅读 · 0 评论 -
【博客598】从netfilter hook执行原理分析iptables为什么自定义链无法主动调用只能从其它链跳转过来
跳转目标(jump target)jump target 是跳转到其 他 chain 继续处理的动作。很多内置的 chain,它们和调用它们的 netfilter hook 紧密联系在一起。iptables 也支持管理员创建他们自己的用于管理目的的自定义chain。为什么自定义链无法主动调用只能从其它链跳转过来:用户定义的 chain 只能通过从另一个规则跳转(jump)到它,因为它们没有注册到 netfilter hook,因为netfilter hook中没有自定义hook点,只有固定的5个内置点。原创 2023-01-18 16:27:02 · 1033 阅读 · 1 评论 -
【博客597】iptables如何借助连续内存块通过xt_table结构管理流量规则
xt_table 的初始化:不同的规则表有以下特征:基于规则的最终目的,iptables 默认初始化了 4 个不同的规则表,分别是 raw、 filter、nat 和 mangle。以 filter 为例介绍 xt_table的初始化和调用过程:filter table 的定义如下:在 iptable_filter.c 模块的初始化函数 iptable_filter_init中,调用xt_hook_link 对 xt_table 结构 packet_filter 执行如下初始化过程:不同 table 的原创 2023-01-18 15:29:40 · 709 阅读 · 0 评论 -
【博客596】如何向内核注册自定义netfilter hook
向内核注册一个netfilter hook,打印input链的进入流量的ip,mac,proto。原创 2023-01-18 15:16:09 · 258 阅读 · 0 评论 -
【博客595】从linux收包与发包过程看iptables链如何发挥作用
主要分为三个部分:3-1、接收数据过程分析:过程分析:源码分析:3-2、发送数据过程分析:过程分析:源码分析:3-3、转发数据过程分析:过程分析:源码分析:3-4、汇总:原创 2023-01-18 14:50:34 · 773 阅读 · 0 评论 -
【博客592】keepalived同时配置:vip + lvs负载均衡
在DR模式下时,会存在一个问题,所有的realserver和director都配置了VIP,从网络模型中,我们知道,最终传输的是mac地址,那么这个时候,到底谁的mac地址是准确的呢?我们要保证请求的VIP必须是director,这样我们的负载均衡才是生效的,因此要在realserver上进行ARP抑制配置,禁止它处理外部的arp请求,也不允许自己向外部广播ARP数据。lvs改写的是mac地址的,基于mac地址的通讯方式是2层的,所以需要限制在一个vlan或者局域网下。原创 2023-01-17 21:48:43 · 1593 阅读 · 0 评论 -
【博客591】LVS的DR和NAT模式下要注意的缺陷
在DR模式下时,会存在一个问题,所有的realserver和director都配置了VIP,从网络模型中,我们知道,最终传输的是mac地址,那么这个时候,到底谁的mac地址是准确的呢?我们要保证请求的VIP必须是director,这样我们的负载均衡才是生效的,因此要在realserver上进行ARP抑制配置,禁止它处理外部的arp请求,也不允许自己向外部广播ARP数据。lvs改写的是mac地址的,基于mac地址的通讯方式是2层的,所以需要限制在一个vlan或者局域网下。原创 2023-01-16 23:07:42 · 1065 阅读 · 0 评论 -
【博客590】iptables raw表的特殊作用
从netfilter的hook点优先级我们也可以看到raw表hook点优先级非常高:数值越低,优先级越高3、raw表的特殊作用raw 表:示例场景:配合-j notrack实现允许规则指定80端口的包不进入链接跟踪/NAT子系统用例:原创 2023-01-16 22:47:19 · 1587 阅读 · 0 评论 -
【博客589】K8s Topology Spread Constraints
你可以使用 拓扑分布约束(Topology Spread Constraints) 来控制 Pod 在集群内故障域之间的分布, 例如区域(Region)、可用区(Zone)、节点和其他用户自定义拓扑域。这样做有助于实现高可用并提升资源利用率。原创 2023-01-16 22:23:35 · 1260 阅读 · 0 评论 -
【博客588】ipvs nat模式下独立于iptables与conntrack的连接跟踪表和NAT机制
ipvs只有DNAT和de-DNAT功能 ,它独立与iptables和conntrack,实现了自己的一套连接跟踪表和NAT机制。ipvs仅仅在做DNAT后对conntrack连接进行更新,防止回包因为没有记录而被丢弃。原创 2023-01-15 14:18:41 · 1394 阅读 · 0 评论 -
【博客587】ipvs hook点在netfilter中的位置以及优先级
根据定义,ipvs挂载在LOCAL_IN、FORWORD和LOCAL_OUT的hook点上了,根据优先级,我们得到以下结论:1、INPUT:ipvs的hook会在Filter TABLE 后执行,然后转到NAT TABLE2、OUTPUT:ipvs的hook会在NAT TABLE ,然后转到Filter TABLE3、FORWARD:ipvs的hookFilter TABLE后执行,然后结束整个FORWARD,包往POSTROUTING走。原创 2023-01-15 14:05:52 · 2239 阅读 · 0 评论 -
【博客586】ipvs的hook点位置以及hook点钩子函数剖析
是按照由外部客户端到IPVS内部的报文为Request;而由IPVS内部回复到外部客户端的报文为Reply。所以,Hook函数的命名中带有request的都对应IPVS核心函数ip_vs_in;而Hook函数命名中带有reply的函数都对应IPVS的核心函数ip_vs_out。原创 2023-01-15 12:12:02 · 955 阅读 · 1 评论 -
【博客585】ipvs场景下dummy网卡的作用
在使用ipvs来实现vip的负载均衡的时候,有时我们会在linux中创建一块dummy网卡,并在网卡上绑上vip。原创 2023-01-15 11:05:18 · 1907 阅读 · 0 评论 -
【博客582】记录Iptabls流量流转链以供排查:traversing of tables and chains
注:按照step序号就是改情况下的流量流转顺序。原创 2023-01-08 14:51:08 · 116 阅读 · 0 评论