关于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

[docker]macvlan实现双vlan互通的更多相关文章

  1. Docker Macvlan 应用部署

    Docker Macvlan 应用部署 MacVLAN有两种桥接模式 Bridge模式:不创建子接口的情况下直接去桥接物理接口.直接桥接到与宿主级的同网段. VLAN Bridge模式:创建子接口去桥 ...

  2. Docker Macvlan

    参考博客:https://blog.csdn.net/daye5465/article/details/77412619 一.Macvlan 交换机的vlan是根据端口来划分的,如果一个PC接入vla ...

  3. Docker Macvlan 介绍 or 工作原理

    Docker Macvlan Network Macvlan Network:属于Docker的网络驱动. Macvlan Network:Docker主机网卡接口逻辑上分为多个子接口,每个子接口标识 ...

  4. 二层交换机当三层交换机,使用单臂路由实现二层交换机上的VLAN互通

    众多中小企业内部网络结构都很简单,仅仅是用一台交换机将所有员工机以及服务器连接到一起,然后通过光纤访问internet而已.当然为了保证部分主机的安全性以及分割内部广播包提高网络传输速度,采取诸如划分 ...

  5. 使用三层交换实现不同网段、不同 VLAN 互通

    上一篇实现了使用Trunk做跨交换机VLAN通信,这一篇就试试使用三层交换实现不同网段,不同VLAN间的通信. 实验拓扑 在一台三层交换机下面连接一台二层交换机,再在二层交换机下面连接两台VPC,地址 ...

  6. Docker Macvlan网络部署

    Macvlan Bridge模式 节点1创建 docker network create -d macvlan --subnet=172.100.1.0/24 --gateway=172.100.1. ...

  7. Docker Mysql数据库双主同步配置方法

    一.背景 可先查看第一篇<Docker Mysql数据库主从同步配置方法>介绍 二.具体操作 1.创建目录(~/test/mysql_test1): --mysql --mone --da ...

  8. [docker] macvlan最佳实战

    macvlan和ipvlan的对比 http://hicu.be/macvlan-vs-ipvlan macvlan ipvlan 参考: https://yq.aliyun.com/articles ...

  9. Docker 部署 RocketMQ 双主双从模式( 版本v4.7.0)

    文章转载自:http://www.mydlq.club/article/96/ 系统环境: 系统版本:CentOS 7.8 RocketMQ 版本:4.7.0 Docker 版本:19.03.13 一 ...

随机推荐

  1. 【Java】 剑指offer(10) 旋转数组的最小数字

    本文参考自<剑指offer>一书,代码采用Java语言. 更多:<剑指Offer>Java实现合集   题目 把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转. ...

  2. 019 mapreduce的核心--shuffle理解,以及在shuffle中的优化

    关于shuffle的过程图. 一:概述shuffle Shuffle是mapreduce的核心,链接map与reduce的中间过程. Mapp负责过滤分发,而reduce则是归并整理,从mapp输出到 ...

  3. linux shell cat 命令

    cat:查看文件的内容.连接文件.创建一个或多个文件和重定向输出到终端或文件  用法:cat [选项] [文件] 1. $ cat hello.txt 显示hello.txt文本文件中的内容 2. $ ...

  4. FTP 其他设置

    参考文章 http://faichen.vip.blog.163.com/blog/static/37644066201010362051291/

  5. gevent实现异步

    # coding:utf-8 import gevent import requests from gevent import monkey # 猴子补丁就是在运行时对代码进行修改 # 由于IO操作非 ...

  6. 【模板】倍增LCA

    题号:洛谷3379 %:pragma GCC optimize ("Ofast") #include<cstdio> #include<vector> #i ...

  7. java中线程安全的map是ConcurrentHashMap

    原理:http://www.cnblogs.com/ITtangtang/p/3948786.html 与hashtable的区别:  http://blog.csdn.net/songfeihu08 ...

  8. php 日期和时间

    php date() 函数把时间戳格式化为更易读取的日期和时间 语法: date(formet,timestamp); 参数 描述 format 必需.规定时间戳的格式. timestamp 可选.规 ...

  9. 工作笔记—新浪微博Oauth2.0授权 获取Access Token (java)

    java发送新浪微博,一下博客从注册到发布第一条微博很详细 利用java语言在eclipse下实现在新浪微博开发平台发微博:http://blog.csdn.net/michellehsiao/art ...

  10. oracle字符串载取及判断是否包含指定字符串

    oracle 截取字符(substr),检索字符位置(instr) case when then else end语句使用 收藏 常用函数:substr和instr1.SUBSTR(string,st ...