奢侈的 Neutron
众所周知,Neutron 需要两块网卡才能实现最基本的功能:管理网络
、计算网络
,但是我们这些穷人根本养不起她,所以我们想办法拿一块网卡糊弄下她,略~
前置知识准备
Linux Tap、Bridge
实践整活(雾
创建一个 Linux Bridge 和 veth,把 eth0 和 veth1 加入到 brige,用 veth 的另一端 veth1 作为 external 网络连接网口。
brctl addbr ${Bridge}
brctl addif ${Bridge} ${唯一的一块网卡}
ip link add ${本端} type veth peer name ${对端}
brctl addif ${Bridge} ${对端}
brctl addbr tunnel
brctl addif tunnel eno1
ip link add inner type veth peer name outer
brctl addif tunnel outer
!!!第二个命令会导致物理机网络中断!!! 因为后续我们需要把 ${唯一的一块网卡} 上的网络配置转移到 ${Bridge} 上,所以如果不具备远程管理条件的话,请小心使用,并请编写脚本在 Screen 中一次性完成运行
网桥的每个物理/虚拟网卡作为一个端口,运行于混杂模式,而且是在链路层工作,所以 ${唯一的一块网卡} 就不需要IP了,改为给 Bridge ${Bridge} 分配外网地址:
在我们的实践中,因为使用的 Ubuntu 系统使用 NetPlan 管理网络,我们仅需要将 ${唯一一块网卡} 的属性全部转移到 ethbr 上即可,然后给 ${唯一一块网卡} 加上
dhcp4: false
属性防止自动分配 IP 造成浪费即可
# This is the network config written by 'subiquity'
network:
ethernets:
tunnel:
addresses:
- 172.18.41.2/24
- 192.168.2.99/24
gateway4: 172.18.41.254
nameservers:
addresses:
- 223.5.5.5
- 223.6.6.6
search: []
eno1:
dhcp4: false
eno2:
dhcp4: true
eno3:
dhcp4: true
eno4:
dhcp4: true
version: 2
这时候物理机应该就已经恢复网络了
最后在 Kolla 中将 veth0 作为 external 网络连接网口。
neutron_external_interface: "veth0"
完结撒花~