注明:以下内容来自于我对这篇博客的理解 来自于大佬:FromScratch
https://www.cnblogs.com/justart/p/7944256.html
好不容易找到了篇好文章,非常感谢
估计是先入为主的原因导致我还是以思科交换机的方式理解Linux上的vlan(虽然我之前玩的是锐捷的设备)
我的测试环境是两台电脑
GE60 (Kali) 使用KVM虚拟两台虚拟机(archlinux)
GE62 (archlinux)使用KVM虚拟两台虚拟机(archlinux)
网络管理软件都用的NetworkManager和iptables
一台5口非网管二层交换机(貌似还不支持自动翻转,害得我又重新做交叉线去了,网线越来越短了。。。)
以一台电脑为例(因为两台电脑配置过程一样,额 可能起名不一样 无所谓啦)
首先我有个物理网卡,接口名eth0
我要把它当二层交换机用 我自己的电脑也要上网的啊 那么就虚拟个网卡然后接到上面
1、new一个虚拟网卡(网桥)
nmcli con add type bridge con-name br0 ifname br0
2、new一个以太网接口做交换机用,并把刚new的虚拟网卡绑上去,这里的接口用物理网卡的接口eth0
nmcli con add type bridge-slave con-name switcher ifname eth0 master br0
我的交换机接的路由器,这个交换机貌似不支持自动翻转,用直通线我eth0也能获到路由器分到的IP,而且因为这俩mac地址一样
获取到的IP也是一样的 于是 不能上网了 换了交叉线就好了(貌似把ipv4.method设置成disabled就可以了。。。)
我要吐槽:电信光猫给的网线就是垃圾(联通你也是)插上之后连接速度居然10M/s 本以为是水晶头有问题 铰开一看简直就是三类线 颜色我都分不清 而且根本不缠绕 橙白绿白棕白蓝白都一个色 我淘宝买俩网卡让店家给我送根线 店家还给我送个超五的线 那线粗的 要是长些双股做秋千都没问题
其实这里虚拟机就可以通过br0直接连到路由器那里了 不过这里没有划分vlan 所以继续
按照NetworkManager的操作顺序 其实也是先划lan然后再划v
3、new俩个虚拟网卡(网桥)给虚拟机用(我觉得这是俩vlan交换机)
参照他的博客是用的vconfig和brctl创建的网桥和vlan,然后我重启之后都木有了。。。
于是按照brctl的创建结果用NetworkManager创建 这样就能存下来了
nmcli con add type bridge con-name brvlan10 ifname brvlan10 ipv4.method disabled ipv6.method link-local
nmcli con add type bridge con-name brvlan20 ifname brvlan20 ipv4.method disabled ipv6.method link-local
我也不知道为啥ipv6要搞成这个 brctl的创建结果就是这 我也就这么写了
4、new一个vlan并划给刚创建的虚拟网卡用 vlan10 和 vlan20
con-name咋写都行;dev我选的是我的物理网卡;id后面跟vlan-id;master后面跟绑在哪个网卡上;
nmcli con add type vlan con-name eth0.10 dev eth0 id 10 master brvlan10
nmcli con add type vlan con-name eth0.20 dev eth0 id 20 master brvlan20
弄完之后就会出现俩个新设备eth0.10 eth0.20 然后我想起了路由器的虚拟接口和单臂路由
感觉这两步就相当于
int f0/0.1
encapsulation dot1Q 10
这个感觉 总想往上配ip啊 还想no shut一下 emmm...
5、看看都启动了没有
nmcli con show
NetworkManager最大的好处就是通过颜色可以看到当前连接的活动状态
绿色表示连接已建立
黄色表示正在获取地址
白色表示连接已断开
之前没设置ipv4.method为disabled 于是连接黄了一会就白了 根本up不起来
这里只用看四个 brvlan10 brvlan20 eth0.10 eth0.20 其他的不用管。。。
额 我还是说一下把
docker0和docker_gwbridge是安装docker的时候它自己创建的 前者是容器上网用的 后者是docker集群用的 我没有集群 但也懒得管
switcher是虚拟交换机,就是把网卡当交换机用了,电脑上网就用虚拟出来的br0,ip要配在br0上
vroute0和vroute1是我虚拟出来的俩网卡,给虚拟机用,前者是nat出去,后者是本机网络
不用kvm创建网络是因为它会改我的防火墙策略,每次开机都要恢复一次(弄得现在养成习惯了,开机先恢复防火墙策略)
vnet0和vnet1是虚拟机的接口
另一台电脑也是相同的配置
一共四台虚拟机
GE60上 arch70(brvlan10:192.168.0.2) arch71(brvlan20:192.168.0.3)
GE62上 arch66(brvlan10:192.168.0.4) arch67(brvlan20:192.168.0.5)
这个网络没有网关
实验结果
arch70和arch66是互通的
arch71和arch67是互通的
arch70和arch71不通
arch66和arch67不通
如果设置了防火墙要注意把brvlan10和brvlan20放通
这是iptables的配置
注意是filter表 nat表不用管 额 nat表里面貌似没有forward链。。。
-A FORWARD -i brvlan10 -j ACCEPT
-A FORWARD -o brvlan10 -j ACCEPT
-A FORWARD -i brvlan20 -j ACCEPT
-A FORWARD -o brvlan20 -j ACCEPT
KVM开虚拟机貌似就是把网卡加到网桥里了
brctl addif brvlan10 vnet0
brctl addif brvlan20 vnet1
这个感觉就像
int f0/1
switchport access vlan 10