host1
# podman exec -it container1 sh
ping 10.88.0.2
host1 create ovs bridge & a veth pair
# ovs-vsctl add-br br-int# ovs-vsctl show
537902fd-0a24-44f5-bcb9-9155fd18c7c4
Bridge br-int
Port br-int
Interface br-int
type: internal
ovs_version: "2.12.0"# ip link add veth0 type veth peer name veth1# ovs-vsctl add-port br-int veth1# brctl addif cni-podman0 veth0# ip link set veth1 up# ip link set veth0 up# ip link
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: enp1s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP mode DEFAULT group default qlen 1000
link/ether 52:54:00:25:66:c8 brd ff:ff:ff:ff:ff:ff
3: cni-podman0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP mode DEFAULT group default qlen 1000
link/ether f6:7c:c9:e6:9c:a4 brd ff:ff:ff:ff:ff:ff
7: veth0faccefd@if3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue master cni-podman0 state UP mode DEFAULT group default
link/ether 16:58:99:23:9d:ba brd ff:ff:ff:ff:ff:ff link-netns cni-25bfae2e-3338-bab3-ed63-ab93e40a26a5
8: veth72aa311e@if3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue master cni-podman0 state UP mode DEFAULT group default
link/ether 2a:9d:b1:0c:f9:d8 brd ff:ff:ff:ff:ff:ff link-netns cni-251f4712-29e8-e5fc-6e0b-150307cd351a
9: ovs-system: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN mode DEFAULT group default qlen 1000
link/ether 16:c0:ed:6a:80:70 brd ff:ff:ff:ff:ff:ff
10: br-int: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN mode DEFAULT group default qlen 1000
link/ether 36:ba:2b:43:b9:49 brd ff:ff:ff:ff:ff:ff
11: veth1@veth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue master ovs-system state UP mode DEFAULT group default qlen 1000
link/ether 8a:1a:4b:b3:dd:33 brd ff:ff:ff:ff:ff:ff
12: veth0@veth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue master cni-podman0 state UP mode DEFAULT group default qlen 1000
link/ether aa:65:f7:84:05:03 brd ff:ff:ff:ff:ff:ff
host2 create ovs bridge & a veth pair
# ovs-vsctl add-br br-int# ip link add veth0 type veth peer name veth1# ovs-vsctl add-port br-int veth1# brctl addif cni-podman0 veth0# ip link set veth1 up# ip link set veth0 up
GRE tunnel between host1 & host2
host1
# ovs-vsctl add-port br-int gre0 -- set interface gre0 type=gre options:remote_ip=10.0.0.2
host2
# ovs-vsctl add-port br-int gre0 -- set interface gre0 type=gre options:remote_ip=10.0.0.1# ovs-vsctl show
537902fd-0a24-44f5-bcb9-9155fd18c7c4
Bridge br-int
Port "veth1"
Interface "veth1"
Port br-int
Interface br-int
type: internal
Port "gre0"
Interface "gre0"type: gre
options: {remote_ip="10.0.0.2"}
ovs_version: "2.12.0"# brctl show
bridge name bridge id STP enabled interfaces
cni-podman0 8000.f67cc9e69ca4 no veth0
veth0faccefd
veth72aa311e
test
host1
# podman exec -it container1 sh
ping 10.88.0.2
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· AI与.NET技术实操系列(六):基于图像分类模型对图像进行分类