零入门kubernetes网络实战-32->基于路由技术+brigde+veth pair形成的跨主机通信方案

news2025/1/21 21:54:05

《零入门kubernetes网络实战》视频专栏地址

https://www.ixigua.com/7193641905282875942

本篇文章视频地址(稍后上传)


本文主要使用的技术是
路由技术+Linux虚拟网桥+虚拟网络设备veth pair来实现跨主机通信

该方案是flannel网络方案中的host-gw网络模型的基础。

1、总结

  • 本网络实现通信方案的核心是路由转发技术。
  • 网桥br0跟本宿主机的网卡eth0之间数据包转发时,经过了哪些iptables规则链

2、测试环境介绍

两台centos虚拟机

# 查看操作系统版本
cat /etc/centos-release
# 内核版本
uname -a
uname -r 
# 查看网卡信息
ip a s eth0

在这里插入图片描述

3、网络拓扑

在这里插入图片描述

4、本网络拓扑最核心的是路由技术(host-gw的原理)

其实,在veth pair相关文章里,已经介绍了。(为了加深印象,这里再解析一下)

  • 将本宿主机开启路由转发功能,具备路由器数据包转发的特性;实现同一个宿主机上不同网络设备之间的数据包转发功能
  • 每个宿主机,就相当于一个路由器
  • 实现跨主机的两侧内网通信,仅限于同网段使用
  • 宿主机上的网桥管理的网络,可以认为是内部网络,该网络的网关,并发是该宿主机对外的网卡eth0,而是目的网络所在的宿主机的对外网卡eth0。
    • 比方说,在master节点上的ns1命名空间,该命名空间所在的网络属于内部网络,外部无法直接访问;
    • ns1命名空间的数据包去往slave节点上的ns2命名空间网络,
    • 那么,对于ns1里的数据包是通过master节点的eth0发送出去,发送到下一条,即123节点的eth0
  • 这样的话,在master节点上通过eth0发送出去的数据包的
    • 源MAC地址,就是122节点的eth0 MAC,
    • 目的MAC地址,就是123节点的eth0 MAC
    • 源IP,就是veth1a网卡的IP
    • 目的IP,就是veth2a网卡的IP
  • 当123节点的eth0网卡收到数据包后,发现目的MAC地址,就是自己,因此,可以接收此数据包
    • 解析源IP,目的IP,
    • 查询路由器,发现目的IP并非是用户空间的应用程序,
    • 需要调用FORWARD链,转发到网桥br0
    • 网桥br0收到数据包后,根据目的IP,就会转发到veth2a里

该网络通信方案的最大好处就是效率高

没有增加额外的封包,解包过程。

直接走本宿主机的网络转发即可。

5、操作实战

5.1、第1步:在master上执行下面的命令

5.1.1、具体的操作命令

brctl addbr br0
ip link set br0 up
ip addr add 10.244.1.3/24 dev br0

ip netns add ns1

ip link add veth1a type veth peer name veth1b

ip link set veth1a netns ns1
ip netns exec ns1 ip addr add 10.244.1.2/24 dev veth1a
ip netns exec ns1 ip link set veth1a up

ip link set veth1b up

brctl addif br0 veth1b

ip netns exec ns1 route add default gw 10.244.1.3
ip route add 10.244.2.0/24 via 10.211.55.123

echo 1 > /proc/sys/net/ipv4/ip_forward

在这里插入图片描述

5.1.2、查看一下,当前宿主机上的路由情况

route -n

在这里插入图片描述

5.1.3、查看一下,ns1命名空间下的网卡情况

ip netns exec ns1 ip a s

在这里插入图片描述

5.1.4、查看一下,ns1命名空间下的路由情况,

ip netns exec ns1 route -n

在这里插入图片描述

5.1.5、查看一下,ns1命名空间下的ARP表情况

ip netns exec ns1 arp -n

在这里插入图片描述

5.1.6、查看一下,当前的网桥

bridge fdb show br br0

在这里插入图片描述

5.2、第2步:在slave上执行下面的命令

brctl addbr br0
ip link set br0 up
ip addr add 10.244.2.3/24 dev br0

ip netns add ns2

ip link add veth2a type veth peer name veth2b

ip link set veth2a netns ns2
ip netns exec ns2 ip addr add 10.244.2.2/24 dev veth2a
ip netns exec ns2 ip link set veth2a up

ip link set veth2b up

brctl addif br0 veth2b

ip netns exec ns2 route add default gw 10.244.2.3
ip route add 10.244.1.0/24 via 10.211.55.122

echo 1 > /proc/sys/net/ipv4/ip_forward

5.3、第3步:在master节点,发送ping请求

ip netns exec ns1 ping -c 1 10.244.2.2

在这里插入图片描述

6、分析一下,整个传输过程,数据包是否被修改了MAC地址?

要分析是否修改了数据包,需要抓包分析

6.1、在master节点分别对br0

tcpdump -nn -i br0

tcpdump -nn -i br0 -w icmp-br0-master.pcap
tcpdump -nn -i eth0 icmp

tcpdump -nn -i eth0 icmp -w icmp-eth0-master.pcap

6.2、在slave节点上分别对br0

tcpdump -nn -i br0

tcpdump -nn -i br0 -w icmp-br0-slave.pcap
tcpdump -nn -i eth0 icmp

tcpdump -nn -i eth0 icmp -w icmp-eth0-slave.pcap

然后,将抓取的数据包导入到Wireshark进行分析

6.3、在master节点,发送ping请求

ip netns exec ns1 ping -c 1 10.244.2.2

在这里插入图片描述

6.4、整个传输过程,数据包的报文内容情况(MAC地址,IP地址)

主要是观察一下,经过路由器后的数据包MAC地址是否发生了变化。
在这里插入图片描述

左侧第1列是,请求路线中,用到了哪些网络设备
中间第2列是,请求路线中,数据包的MAC地址变化情况(重点关注,路由前后)
右侧第1列是,反馈路线中,数据包的MAC地址变化情况

7、从iptables链角度,分析下整个过程,经过了哪些链?

为了分析整个传输过程,我们添加一些日志埋点,来验证我们的猜测。

如果你已经根据前面的文章安装过了rsyslog服务,就不需要重复操作了

7.1、安装

7.1.1、安装rsyslog服务

yum -y install rsyslog

7.1.2、更新配置文件

echo "kern.*     /var/log/iptables.log" >> /etc/rsyslog.conf 

在这里插入图片描述

.*,表示所有等级的消息都添加到iptables.log文件里

信息等级的指定方式

  • .XXX,表示 大于XXX级别的信息
  • .=XXX,表示等于XXX级别的信息
    • 如,kern.=notice /var/log/iptables.log, 将notice以上的信息添加到iptables.log里
  • .!XXX, 表示在XXX之外的等级信息

7.1.3、重启rsyslog服务

systemctl restart rsyslog

systemctl status  rsyslog

在这里插入图片描述

7.2、日志埋点

7.2.1、在master节点上,进行日志埋点

将当前的日志统计清零

iptables -t nat -Z
iptables -t filter -Z

插入日志埋点前,先查看一下,当前的现状

iptables -t nat -nvL PREROUTING --line-number
iptables -t filter -nvL FORWARD --line-number
iptables -t nat -nvL OUTPUT --line-number
iptables -t nat -nvL POSTROUTING --line-number

插入日志埋点

iptables -t nat -I PREROUTING -p icmp -j LOG --log-prefix "Nat-PREROUTING-1-"
iptables -t filter -A FORWARD -p icmp -j LOG --log-prefix "Filter-FORWARD-1-"
iptables -t nat -I POSTROUTING -p icmp -j LOG --log-prefix "Nat-POSTROUTING-1-"

查看日志文件

tail -f /var/log/iptables.log

在这里插入图片描述

7.2.2、在slave节点上,进行日志埋点

将当前的日志统计清零

iptables -t nat -Z
iptables -t filter -Z

插入日志埋点前,先查看一下,当前的现状

iptables -t nat -nvL PREROUTING --line-number
iptables -t filter -nvL FORWARD --line-number
iptables -t nat -nvL OUTPUT --line-number
iptables -t nat -nvL POSTROUTING --line-number

插入日志埋点

iptables -t nat -I PREROUTING -p icmp -j LOG --log-prefix "Nat-PREROUTING-1-"
iptables -t filter -A FORWARD -p icmp -j LOG --log-prefix "Filter-FORWARD-1-"
iptables -t nat -I POSTROUTING -p icmp -j LOG --log-prefix "Nat-POSTROUTING-1-"

查看日志文件

tail -f /var/log/iptables.log

在这里插入图片描述

7.3、在master的ns1命名空间里重新发送请求

ip netns exec ns1 ping -c 1 10.244.2.2

在这里插入图片描述

再次,查看master节点上的iptables日志
在这里插入图片描述

查看slave节点上的iptables日志
在这里插入图片描述

7.4、请求过程经过哪些iptables规则链?

在这里插入图片描述

本图的重点是
从网桥br0出来的数据包到eth0网卡之间,经过了哪些规则链。


<<零入门kubernetes网络实战>>技术专栏之文章目录


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/527270.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

化制为智,驭数前行 | 如何把握油气装备领域智能制造的未来?

01「智」赋未来&#xff0c;油燃而升 2015年&#xff0c;我国提出了“中国制造2025”规划&#xff0c;把智能制造作为两化深度融合的主攻方向&#xff0c;智能制造产业链所蕴藏的巨大投资机会将逐渐被市场挖掘。作为国家战略的基础&#xff0c;油气工程装备&#xff0c;特别是…

C++ 基础STL-list容器

STL-list 容器&#xff0c;又称双向链表容器&#xff0c;即该容器的底层是以双向链表的形式实现的。这意味着&#xff0c;list 容器中的元素可以分散存储在内存空间里&#xff0c;而不是必须存储在一整块连续的内存空间中。 链表的优点&#xff1a;可以对任意位置进行快速插入和…

【触觉智能分享】RK3568+Debian系统如何旋转屏幕显示方向

大家在购买开发板后&#xff0c;默认开机进入桌面屏幕显示方向是竖屏&#xff0c;有些用户想修改为横屏显示&#xff0c;本文就用IDO-EVB3568为例&#xff0c;用Debian系统演示如何旋转屏幕显示方向&#xff0c;此方法适用于所有RK356X系列产品。 IDO-EVB3568开发板拥有四核A5…

【数据结构】--- 几分钟走进栈和队列(详解-上)

文章目录 前言&#x1f31f;一、栈&#x1f30f;1.1栈的概念及结构&#xff1a;&#x1f30f;1.2实现栈的两种方式&#xff1a; &#x1f31f;二、栈实现(数组栈)&#x1f30f;2.1结构&#xff1a;&#x1f30f;2.2初始化&#xff1a;&#x1f4ab;2.2.1第一种代码&#xff1a;…

Direct3D 12——纹理——纹理贴图的作用

法线贴图 在不增加三角形的情况下增加表面细节 任何一个像素它的法线都做一个扰动&#xff0c;通过定义不同的高度和临近位置的高度差重新计算法线 纹理定义的是任何一个点&#xff0c;它的相对的高度的移动&#xff0c;通过高度的变化改变法线 原曲面法向量n ( p) (0,1) p点…

代码随想录 LeetCode链表篇 Java

文章目录 &#xff08;简单&#xff09;203. 移除链表元素&#xff08;中等&#xff09;707. 设计链表&#xff08;简单&#xff09;206. 反转链表&#xff08;中等&#xff09;24. 两两交换链表中的节点&#xff08;中等&#xff09;19. 删除链表的倒数第 N 个结点&#xff08…

Schlumberger ECLIPSE CRACK

Schlumberger ECLIPSE CRACK 工业和工程软件旨在模拟Schlumberger ECLIPSE Simulation的碳氢化合物&#xff0c;该模拟与Shelberger的技术服务有关&#xff0c;以及用于预测和历史的容器中当前方程数量的最新和最新解决方案集。动态行为是各种传统和不寻常的石油和天然气模式。…

DevExpress:报表控件绑定数据库数据源的三种方式(Winform)

1.写在前面 如果你是和我一样&#xff0c;第一次接触DevExpress&#xff0c;并且因为网上资源眼花缭乱无从下手&#xff0c;然后脑子一转直接到DevExpress官网寻找官方使用文档的&#xff0c;那我们的了解顺序应该差不多是一致的。 DevExpress官网&#xff1a;https://www.de…

【笔试强训选择题】Day12.习题(错题)解析

作者简介&#xff1a;大家好&#xff0c;我是未央&#xff1b; 博客首页&#xff1a;未央.303 系列专栏&#xff1a;笔试强训选择题 每日一句&#xff1a;人的一生&#xff0c;可以有所作为的时机只有一次&#xff0c;那就是现在&#xff01;&#xff01;&#xff01; 文章目录…

Facebook 手机应用广告:在移动时代实现营销突破

在移动时代&#xff0c;手机已经成为人们生活的重要组成部分。随着移动互联网的普及&#xff0c;人们更频繁地使用手机来浏览社交媒体、获取信息和进行购物。 对于企业而言&#xff0c;如何在移动平台上实现营销突破&#xff0c;吸引用户的注意力和提升品牌价值&#xff0c;是…

数说热点|社恐人群运动健身指南:不想去健身房,那就在家找面墙

连杰伦都开始跳操了&#xff0c;你还不动动动动动起来&#xff1f; 随着《运动者联盟》这档体育挑战真人秀节目的完美收官&#xff0c;忙碌生活中的运动激情似乎又被点燃了。5月9日&#xff0c;周杰伦现身厦门&#xff0c;在活动现场和刘耕宏合体跳起了《本草纲目》&#xff0…

音视频技术开发周刊 | 293

每周一期&#xff0c;纵览音视频技术领域的干货。 新闻投稿&#xff1a;contributelivevideostack.com。 谷歌全面反攻 ChatGPT&#xff01;PaLM 2、Gemini 双杀&#xff0c;Bard 正式开放 以上是2023 Google I/O 大会的重点内容&#xff0c;AI含量极高。 谷歌推拥有26000个H10…

uni-app框架的小程序开发环境

文章目录 一、下载微信开发工具安装 二、构建uni-app开发环境2.1 Node.js下载与安装2.2 下载HBuilder-X2.3 创建uni-app项目2.4 填入uni-app专属标识和小程序标识 在阅读此博文前&#xff0c;需要注册完毕小程序账号 一、下载微信开发工具 微信开发工具下载地址 下载稳定版即…

代码随想录算法训练营day41 | 343. 整数拆分,96.不同的二叉搜索树

代码随想录算法训练营day41 | 343. 整数拆分&#xff0c;96.不同的二叉搜索树 343. 整数拆分解法一&#xff1a;动态规划 96.不同的二叉搜索树解法一&#xff1a;动态规划 总结 343. 整数拆分 教程视频&#xff1a;https://www.bilibili.com/video/BV1Mg411q7YJ 1、dp[i]代表…

【Linux命令】脚本里常用的几个命令sort,uniq,tr,cut,split,eval

脚本里常用的命令 一、SORT命令1.1、语法格式1.2常用选项 二、uniq命令2.1命令格式2.2常用选项2.3小实验&#xff0c;过滤出现三次以上的IP地址 三、tr命令3.1语法格式3.2常用选项3.3实验 四、cut命令4.1语法格式4.2常用选项 五、split命令5.1语法格式5.2常用选项 六、eval七、…

一个优秀系统构架师应具备的能力

作为软件开发的设计架构师&#xff0c;那么必须拥有一定的编程技能&#xff0c;同时有高超的学习新的架构设计、程序设计技能。另外&#xff0c;我觉得作为软件架构师&#xff0c;还必须了解一定的硬件、网络、服务器的基本知识。要不然&#xff0c;你都不知道有些什么材料可以…

基于MWORKS的电动汽车电平衡分析

1 引言 随着电动汽车的快速发展、电池技术的进步和智能电力管理系统的应用&#xff0c;电动汽车电平衡已经成为了电动汽车技术研究中的重要问题之一。 电动汽车电平衡是指车辆发电机、蓄电池、整车用电器在一定时间内的电能供给与消耗达到平衡状态。如果车辆电能产生与消耗无法…

USART硬件流控制概念以及原理(硬件控制流以及软件控制流)

USART 数据流控制 也就是 USART_HardwareFlowControl 一、流控制的作用 这里讲到的 “流”&#xff0c;指的是数据流&#xff1b;在数据通信中&#xff0c;流控制是管理两个节点之间数据传输速率的过程&#xff0c;以防止出现接收端的数据缓冲区已满&#xff0c;而发送端依然…

ResNet 论文理解含视频

ResNet 论文理解 论文理解 ResNet 网络的论文名字是《Deep Residual Learning for Image Recognition》&#xff0c;发表在2016年的 CVPR 上&#xff0c;获得了 最佳论文奖。ResNet 中的 Res 也是 Residual 的缩写&#xff0c;它的用意在于基于 残差 学习&#xff0c;让神经网…

真实业务场景使用-门面模式(外观)设计模式

1.前言 最近接到要修改的业务功能&#xff0c;这个业务增删改查很多功能都需要校验时间&#xff0c;比如&#xff1a; 1.失效时间不能超过自己父表的失效时间&#xff0c; 2.失效时间不能是当前时间 3.失效时间不能早于生效时间 类似这样的不同的判断还有很多&#xff0c;…