动手模拟docker网络-bridge模式

创建网络命名空间

使用ip netns命令创建两个网络命名空间ns1和ns2:

bash 复制代码
ip netns add ns1
ip netns add ns2

创建veth对

创建一对虚拟以太网设备veth1-veth2和veth3-veth4:

bash 复制代码
ip link add veth1 type veth peer name veth2
ip link add veth3 type veth peer name veth4

将veth设备分配到命名空间

将veth2移到ns1,veth4移到ns2:

bash 复制代码
ip link set veth2 netns ns1
ip link set veth4 netns ns2

配置设备IP和状态

在默认命名空间中为veth1和veth3分配IP并启用:

bash 复制代码
ip addr add 10.1.1.1/24 dev veth1
ip link set veth1 up
ip addr add 10.1.2.1/24 dev veth3
ip link set veth3 up

在ns1中配置veth2的IP并启用:

bash 复制代码
ip netns exec ns1 ip addr add 10.1.1.2/24 dev veth2
ip netns exec ns1 ip link set veth2 up
ip netns exec ns1 ip link set lo up

在ns2中配置veth4的IP并启用:

bash 复制代码
ip netns exec ns2 ip addr add 10.1.2.2/24 dev veth4
ip netns exec ns2 ip link set veth4 up
ip netns exec ns2 ip link set lo up

创建并配置网桥

创建网桥br0并绑定veth1和veth3:

bash 复制代码
ip link add name br0 type bridge
ip link set dev veth1 master br0
ip link set dev veth3 master br0
ip link set br0 up

设置默认路由

在ns1和ns2中设置默认路由指向网桥IP:

bash 复制代码
ip netns exec ns1 ip route add default via 10.1.1.1
ip netns exec ns2 ip route add default via 10.1.2.1

验证连通性

从ns1中pingns2的IP:

bash 复制代码
ip netns exec ns1 ping 10.1.2.2

开启IP转发

确保主机的IP转发功能已启用:

bash 复制代码
echo 1 > /proc/sys/net/ipv4/ip_forward

结果说明

  • 网桥br0充当交换机,连接veth1和veth3。
  • ns1(10.1.1.2)和ns2(10.1.2.2)通过网桥实现二层互通。
  • 若需跨子网通信,需额外配置路由或NAT规则。

注意:实验结束后可通过以下命令清理:

bash 复制代码
ip netns delete ns1
ip netns delete ns2
ip link delete br0
相关推荐
Multipath71216 分钟前
无人载具的高可靠低时延聚合组网方案
网络·网络协议·安全·udp·智能路由器
当下新鲜事19 分钟前
皮尔磁纸板进料安全方案怎么选:myPNOZ与O300组合使用经验分享
网络·人工智能·安全
雪雪爱冲浪25 分钟前
ISP代理与住宅代理选型对比:从原理到实战
服务器·网络·网络协议·tcp/ip·接口隔离原则
yangmu320328 分钟前
WLAN 入门指南:从原理、协议到组网与安全
网络·安全
GoodStudyAndDayDayUp38 分钟前
一个简单的java jar跑docker
java·docker·jar
凯歌的博客1 小时前
docker镜像代理
运维·docker·容器
2401_868534781 小时前
2023年11月软考网规
网络
2301_777998341 小时前
TCP连接断开:进程终止、主机断电与网络断开
linux·服务器·网络·tcp/ip
acd120092 小时前
RPC接口超时配置明明没问题,线上却随机超时
网络·网络协议·rpc