估计是先入为主的原因导致我还是以思科交换机的方式理解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 然后我想起了路由器的虚拟接口和单臂路由
感觉这两步就相当于
这个感觉 总想往上配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