关于vlan的冷知识

vlan范围:0~4095
0,4095 保留 仅限系统使用 用户不能查看和使用这些VLAN
1 正常 Cisco默认VLAN 用户能够使用该VLAN,但不能删除它
2-1001 正常 用于以太网的VLAN 用户可以创建、使用和删除这些VLAN
1002-1005 正常 用于FDDI和令牌环的Cisco默认VLAN 用户不能删除这些VLAN
1006-1024 保留 仅限系统使用 用户不能查看和使用这些VLAN
1025-4094 扩展 仅用于以太网VLAN

实验环境



发现在workstation上不支持混杂模式,导致vlan不通

在centos上

- 在no1 no2上开启vlan功能
modprobe --first-time 8021q
modinfo 8021q - 在no1和no2上添加2个vlan
ip link add link eth0 name eth0.10 type vlan id 10
ip link set dev eth0.10 up ip link add link eth0 name eth0.20 type vlan id 20
ip link set dev eth0.20 up - 在no1上操作docker
docker network create -d macvlan --subnet=172.16.10.0/24 --gateway=172.16.10.1 -o parent=eth0.10 mac_net10
docker network create -d macvlan --subnet=172.16.20.0/24 --gateway=172.16.20.1 -o parent=eth0.20 mac_net20 docker run -itd --name b1 --ip=172.16.10.10 --network mac_net10 busybox
docker run -itd --name b2 --ip=172.16.20.10 --network mac_net20 busybox - 在no2上操作docker
docker network create -d macvlan --subnet=172.16.10.0/24 --gateway=172.16.10.1 -o parent=eth0.10 mac_net10
docker network create -d macvlan --subnet=172.16.20.0/24 --gateway=172.16.20.1 -o parent=eth0.20 mac_net20 docker run -itd --name b3 --ip=172.16.10.11 --network mac_net10 busybox
docker run -itd --name b4 --ip=172.16.20.11 --network mac_net20 busybox - 测试

$ docker exec b3 ping 172.16.10.10
PING 172.16.10.10 (172.16.10.10): 56 data bytes
64 bytes from 172.16.10.10: seq=0 ttl=64 time=0.434 ms
64 bytes from 172.16.10.10: seq=1 ttl=64 time=0.516 ms
^C 不通
$ docker exec b3 ping 172.16.20.10

查看802.1q的数据包

https://github.com/lannyMa/scripts/blob/master/802.1q-vlan.pcap

使用单臂路由的模式使得2个vlan相通

- 配置no3-容器的网关
ip link add link eth0 name eth0.10 type vlan id 10
ip link set dev eth0.10 up
ip link add link eth0 name eth0.20 type vlan id 20
ip link set dev eth0.20 up
ifconfig eth0.10 172.16.10.1 netmask 255.255.255.0 up
ifconfig eth0.20 172.16.20.1 netmask 255.255.255.0 up - 用n3的vlan10 ping n1的vlan20的地址
$ docker exec b3 ping 172.16.20.10
PING 172.16.20.10 (172.16.20.10): 56 data bytes
64 bytes from 172.16.20.10: seq=0 ttl=63 time=0.573 ms
64 bytes from 172.16.20.10: seq=1 ttl=63 time=0.576 ms
64 bytes from 172.16.20.10: seq=2 ttl=63 time=0.555 ms

Ubuntu版-vbox里做的,因为他的网卡支持混杂模式

参考: Ubuntu16.04的docker阿里云安装: https://yq.aliyun.com/articles/110806

apt-get install vlan

ip link add link enp0s8 name enp0s8.10 type vlan id 10
ip link set dev enp0s8.10 up ip link add link enp0s8 name enp0s8.20 type vlan id 20
ip link set dev enp0s8.20 up docker network create -d macvlan --subnet=172.16.10.0/24 --gateway=172.16.10.1 -o parent=enp0s8.10 mac_net10
docker network create -d macvlan --subnet=172.16.20.0/24 --gateway=172.16.20.1 -o parent=enp0s8.20 mac_net20 docker run -itd --name b1 --ip=172.16.10.10 --network mac_net10 busybox
docker run -itd --name b2 --ip=172.16.20.10 --network mac_net20 busybox docker network create -d macvlan --subnet=172.16.10.0/24 --gateway=172.16.10.1 -o parent=enp0s8.10 mac_net10
docker network create -d macvlan --subnet=172.16.20.0/24 --gateway=172.16.20.1 -o parent=enp0s8.20 mac_net20 docker run -itd --name b3 --ip=172.16.10.11 --network mac_net10 busybox
docker run -itd --name b4 --ip=172.16.20.11 --network mac_net20 busybox

最新文章

  1. Curator leader 选举(一)
  2. 我的第一个HTML的程序
  3. 线性表的顺序存储结构C语言版
  4. ECSHOP手机号码或邮箱用户名都可以登录方法
  5. activiti自定义流程之Spring整合activiti-modeler5.16实例(三):流程模型列表展示
  6. C# openfiledialog设置filter属性后达不到过滤效果的原因之一
  7. 【c语言】模拟库函数strstr
  8. typescript中的工具 tsd
  9. inotify-java linux系统监听文件发生变化,实时通知java程序
  10. [SinGuLaRiTy] 最短路计算代码库
  11. springmvc 方法参数自定义的解析
  12. 基于ElementUI的网站换主题的一些思考与实现
  13. UML示例图 zt
  14. jvm详情——3、JVM基本垃圾回收算法回收策略
  15. np.nonzero()函数用法
  16. HDU6397
  17. John Deere Service Advisor EDL V2 Diagnostic Kit
  18. JavaScript 从入门到放弃(一)事件委托和使用innerHTML添加元素
  19. Codeforces Round #424 (Div. 2, rated, based on VK Cup Finals) Problem D (Codeforces 831D) - 贪心 - 二分答案 - 动态规划
  20. 使用Metasploit绕过UAC的多种方法

热门文章

  1. BZOJ5071 小A的数字 BZOJ2017年10月月赛 其他
  2. 用户设置与virtual host配置
  3. 用mybatis的代码自动生成工具,炒鸡好用,推荐一下别人的操作
  4. 《Android进阶之光》--网络编程与网络框架
  5. 暴力破解工具hydra与Medusa
  6. Linux 程序设计1:深入浅出 Linux 共享内存
  7. 通过 DOM
  8. 模拟页面获取的php数据(四)
  9. supervisor 管理 celery
  10. OpenStack-Zun 使用