linux-vlan(1)

VLAN

1.topo

2.创建命名空间

ip netns add ns1

ip netns add ns2

ip netns add ns3

3.创建veth设备

ip link add ns1-veth0 type veth peer name ns21-veth0

ip link add ns3-veth0 type veth peer name ns23-veth0

4.veth设备放入命名空间,启动接口

ip link set ns1-veth0 netns ns1

ip link set ns3-veth0 netns ns3

ip -netns ns1 link set ns1-veth0 up

ip -netns ns3 link set ns3-veth0 up

ip link set ns21-veth0 netns ns2

ip link set ns23-veth0 netns ns2

ip -netns ns2 link set ns21-veth0 up

ip -netns ns2 link set ns23-veth0 up

5.创建br0,添加接口到br0

ip netns exec ns2 brctl addbr br0

ip netns exec ns2 ip link set br0 up

ip netns exec ns2 brctl addif br0 ns21-veth0

ip netns exec ns2 brctl addif br0 ns23-veth0

6.创建vlan

6.1.创建ns1 vlan

ip netns exec ns1 ip link add link ns1-veth0 name ns1-veth0.100 type vlan id 100

ip netns exec ns1 ip link set dev ns1-veth0.100 up

ip netns exec ns1 ip link add link ns1-veth0 name ns1-veth0.200 type vlan id 200

ip netns exec ns1 ip link set dev ns1-veth0.200 up

6.2.创建ns2 vlan

ip netns exec ns2 ip link add link ns21-veth0 name ns21-veth0.100 type vlan id 100

ip netns exec ns2 ip link set dev ns21-veth0.100 up

ip netns exec ns2 ip link add link ns21-veth0 name ns21-veth0.200 type vlan id 200

ip netns exec ns2 ip link set dev ns21-veth0.200 up

ip netns exec ns2 ip link add link ns23-veth0 name ns23-veth0.100 type vlan id 100

ip netns exec ns2 ip link set dev ns23-veth0.100 up

ip netns exec ns2 ip link add link ns23-veth0 name ns23-veth0.200 type vlan id 200

ip netns exec ns2 ip link set dev ns23-veth0.200 up

6.3.创建ns3 vlan

ip netns exec ns3 ip link add link ns3-veth0 name ns3-veth0.100 type vlan id 100

ip netns exec ns3 ip link set dev ns3-veth0.100 up

ip netns exec ns3 ip link add link ns3-veth0 name ns3-veth0.200 type vlan id 200

ip netns exec ns3 ip link set dev ns3-veth0.200 up

7.添加子接口到br0

ip netns exec ns2 brctl addif br0 ns21-veth0.100

ip netns exec ns2 brctl addif br0 ns21-veth0.200

ip netns exec ns2 brctl addif br0 ns23-veth0.100

ip netns exec ns2 brctl addif br0 ns23-veth0.200

8.配置地址

ip -netns ns1 addr add 1.1.1.11/24 dev ns1-veth0.100

ip -netns ns1 addr add 1.1.1.12/24 dev ns1-veth0.200

ip -netns ns3 addr add 1.1.1.31/24 dev ns3-veth0.100

ip -netns ns3 addr add 1.1.1.32/24 dev ns3-veth0.200

9.测试

9.1测试1

ip netns exec ns1 ping -c 3 -W 1 1.1.1.31 -I ns1-veth0.100

ip netns exec ns1 ping -c 3 -W 1 1.1.1.31 -I ns1-veth0.200

为什么走不同的vlan都可以ping通1.1.1.31?

9.2测试2

ip netns exec ns1 ping -W 1 1.1.1.31 -I ns1-veth0.100

ip netns exec ns2 tcpdump -i ns21-veth0 -e

ip netns exec ns2 tcpdump -i ns23-veth0 -e

ip netns exec ns2 tcpdump -i br0 -e

ns1通过ns1-veth0.100 ping 1.1.1.31时,ns21-veth0和ns23-veth0 vlan id都是100,br0不带vlan id。

9.3测试3

ip netns exec ns1 ping 3 -W 1 1.1.1.31 -I ns1-veth0.200

ip netns exec ns2 tcpdump -i ns21-veth0 -e

ip netns exec ns2 tcpdump -i ns23-veth0 -e

ip netns exec ns2 tcpdump -i br0 -e

ns1通过ns1-veth0.200 ping 1.1.1.31时,ns21-veth0是vlan id是200,ns23-veth0 vlan id是100,br0不带vlan id。

为什么带不同的vlan id都可以ping通1.1.1.31?

9.4测试4

ping 1 1.1.1.32 为什么指定ns23-veth0、ns23-veth0.100、ns23-veth0.200都不行,只能指定br0?

10.删除

ip netns del ns1

ip netns del ns2

ip netns del ns3

11.参考

VLAN - ArchWiki

相关推荐
yt948322 小时前
Docker-基础(数据卷、自定义镜像、Compose)
运维·docker·容器
{{uname}}4 小时前
利用WebSocket实现实时通知
网络·spring boot·websocket·网络协议
水银嘻嘻4 小时前
web 自动化之 KDT 关键字驱动详解
运维·自动化
Vone_665 小时前
node.js 邮箱验证服务器搭建
运维·服务器·node.js
丢丢丢丢丢丢~5 小时前
apache2的默认html修改
linux·运维·服务器
wusam5 小时前
Linux系统管理与编程20:Apache
linux·运维·服务器·apache·shell编程
我不想当小卡拉米5 小时前
【Linux】操作系统入门:冯诺依曼体系结构
linux·开发语言·网络·c++
思科小白白6 小时前
【无标题】
网络·智能路由器
ChironW6 小时前
Ubuntu 24.04 LTS系统上配置国内时间同步
linux·运维·服务器·ubuntu
TPBoreas6 小时前
排查服务器内存空间预警思路
运维·服务器