动手模拟k8s网络-vxlan模式

准备环境

确保有两台Linux主机(物理机或虚拟机),均安装iproute2bridge-utils工具包。假设两台主机为HostA(IP: 10.0.1.10)和HostB(IP: 10.0.1.20),目标是通过VXLAN实现二层互通。

在HostA上配置VXLAN

创建VXLAN接口并绑定到物理网络:

bash 复制代码
# 创建VXLAN接口(VNI=100,组播或直接指向HostB的IP)
ip link add vxlan100 type vxlan id 100 remote 10.0.1.20 dstport 4789 dev eth0
# 启用接口
ip link set vxlan100 up
# 分配IP地址
ip addr add 192.168.100.10/24 dev vxlan100

在HostB上配置VXLAN

类似地创建VXLAN接口:

bash 复制代码
# 创建VXLAN接口(VNI需与HostA一致)
ip link add vxlan100 type vxlan id 100 remote 10.0.1.10 dstport 4789 dev eth0
# 启用接口
ip link set vxlan100 up
# 分配IP地址
ip addr add 192.168.100.20/24 dev vxlan100

验证连通性

在HostA上ping HostB的VXLAN IP:

bash 复制代码
ping 192.168.100.20

若成功收到回复,说明VXLAN隧道建立成功。

可选:添加ARP和FDB条目(非组播模式)

若未使用组播,需手动维护转发数据库:

bash 复制代码
# 在HostA上添加HostB的MAC和IP映射
bridge fdb append 00:00:00:00:00:00 dev vxlan100 dst 10.0.1.20
# 在HostB上添加HostA的MAC和IP映射
bridge fdb append 00:00:00:00:00:00 dev vxlan100 dst 10.0.1.10

关键参数说明

  • id 100:VXLAN网络标识符(VNI),需两端一致。
  • dstport 4789:VXLAN标准UDP端口。
  • remote <IP>:指定对端物理IP(替代组播)。
  • dev eth0:绑定到物理网卡。### 创建 VETH Pair 并在多台机器上通过 VXLAN 通信

VETH Pair(虚拟以太网设备对)和 VXLAN(虚拟可扩展局域网)是 Linux 网络虚拟化中常用的技术,用于跨主机通信。以下是具体实现步骤:


在每台机器上创建 VETH Pair

VETH Pair 是成对出现的虚拟网络设备,一端发出的数据会直接传输到另一端。

复制代码
# 创建 VETH Pair,命名为 veth0 和 veth1
ip link add veth0 type veth peer name veth1

# 启用 VETH 设备
ip link set veth0 up
ip link set veth1 up

# 分配 IP 地址(假设使用 10.0.0.0/24 网段)
ip addr add 10.0.0.1/24 dev veth0
ip addr add 10.0.0.2/24 dev veth1

重复以上命令在其他机器上创建 VETH Pair,注意避免 IP 地址冲突。


创建并配置 VXLAN 接口

VXLAN 是一种隧道技术,用于在现有网络(如 Internet)上封装和传输二层帧。

复制代码
# 创建 VXLAN 接口(假设 VNI 为 42,本地 IP 为 192.168.1.1,对端 IP 为 192.168.1.2)
ip link add vxlan42 type vxlan id 42 local 192.168.1.1 remote 192.168.1.2 dev eth0 dstport 4789

# 启用 VXLAN 接口
ip link set vxlan42 up

# 将 VETH 一端(veth1)连接到 VXLAN
ip link set veth1 master vxlan42

在另一台机器上执行类似命令,确保 localremote IP 地址互换。


配置路由和 ARP 表

确保跨主机的 VETH 设备可以通过 VXLAN 通信。

复制代码
# 添加路由规则(假设对端 VETH IP 为 10.0.0.3)
ip route add 10.0.0.3/32 dev vxlan42

# 手动添加 ARP 表项(避免 ARP 广播问题)
arp -i vxlan42 -s 10.0.0.3 <对端 VETH MAC 地址>

验证通信

使用 pingtcpdump 测试跨主机通信。

复制代码
# 在主机 A 上 ping 主机 B 的 VETH IP
ping 10.0.0.3

# 使用 tcpdump 抓取 VXLAN 流量
tcpdump -i eth0 port 4789 -nn

注意事项

  • MTU 调整:VXLAN 封装会增加头部开销,建议调整 MTU 以避免分片。

    复制代码
    ip link set vxlan42 mtu 1450
  • 多播支持:如果使用多播模式(而非点对点),需确保网络支持多播。

    复制代码
    ip link add vxlan42 type vxlan id 42 group 239.1.1.1 dev eth0 dstport 4789
  • 防火墙规则 :开放 UDP 4789 端口(或自定义的 dstport)。

    复制代码
    iptables -A INPUT -p udp --dport 4789 -j ACCEPT

通过以上步骤,可以在多台机器上实现基于 VETH Pair 和 VXLAN 的跨主机通信。

相关推荐
TOWE technology30 分钟前
EN32/G2401FCI——32A大功率,24位国标输出的高密度配电方案
linux·服务器·网络·科技·数据中心·pdu·智能pdu
ACP广源盛1392462567312 小时前
IX8024与科学大模型的碰撞@ACP#筑牢科研 AI 算力高速枢纽分享
运维·服务器·网络·数据库·人工智能·嵌入式硬件·电脑
Empty-Filled13 小时前
AI生成测试用例功能怎么测:一个完整实战案例
网络·人工智能·测试用例
百年੭ ᐕ)੭*⁾⁾13 小时前
docker使用neo4j
docker·容器·neo4j
码云数智-大飞13 小时前
本地部署大模型:隐私安全与多元优势一站式解读
运维·网络·人工智能
jinanwuhuaguo14 小时前
(第二十九篇)OpenClaw 实时与具身的跃迁——从异步孤岛到数字世界的“原住民”
前端·网络·人工智能·重构·openclaw
等风来不如迎风去14 小时前
【win11】最佳性能:fix 没有壁纸,一直黑屏
网络·人工智能
Harvy_没救了15 小时前
【网络部署】 Win11 + VMware CentOS8 + Nginx 文件共享服务 Wiki
运维·网络·nginx
春风有信15 小时前
【2026.05.01】Windows10安装Docker Desktop 4.71.0.0步骤及问题解决
运维·docker·容器