网桥
配置网桥是为了让虚拟机都能获取到一个路由器分配的 IP 地址,使得可以通过 IP 直接连接,而非转发。
[!Warning] 此方法不推荐
- 通过 gui 操作: 可以先参考这个资料通过VNC搭建Ubuntu 18.04和20.04图形界面 (aliyun.com) 把 vncserver 搭上去。 并把 ubuntu 20.04 更新一下,就可以使用 nm-conntion-editor Ubuntu 配置虚拟机网络桥接模式 - 腾讯云开发者社区-腾讯云 (tencent.com) 来配置一个网桥,为每一个虚拟机创建一个 tap 设备,就可以实现桥接了。
[!note] 此方法推荐
- 建立网桥
vim /etc/netplan/01-network-manager-all.yaml
填入如下信息 (确保 MAC 地址和网络接口选对,148 上 enp5s0,88 上是 enp4s0):
network:
ethernets:
enp5s0:
dhcp4: false
dhcp6: false
# add configuration for bridge interface
bridges:
br0:
interfaces: [enp5s0]
dhcp4: true
macaddress: 58:11:22:46:df:5e
dhcp6: false
version: 2
renderer: NetworkManager
netplan apply
即可生效
验证网桥 br0: ip addr show
- 建立 tap(每一个虚拟机用一个)
sudo apt install uml-utilities
tunctl -t tap0 -u jet
brctl addif br0 tap0
ifconfig tap0 0.0.0.0 promisc up
缺点是每次重启都需要创建一次,可以使用下面的方法建立一个系统服务,使得每次系统启动后自动创建: 参考:【Ubuntu】添加虚拟网卡的三种方式_ubuntu 虚拟网卡_remo0x的博客-CSDN博客
$ cat /usr/local/bin/config_tap.sh
#!/bin/bash
#
# config_tap Start up the tun/tap virtual nic
#
# chkconfig: 2345 55 25
USER="root"
BRIDGE_DEVICE="br0"
TAP_DEV_NUM=0
DESC="TAP config"
do_start() {
if [ ! -x /usr/bin/tunctl ]; then
echo "/usr/bin/tunctl was NOT found!"
exit 1
fi
tunctl -t tap$TAP_DEV_NUM -u $USER
brctl addif $BRIDGE_DEVICE tap$TAP_DEV_NUM
ifconfig tap$TAP_DEV_NUM ${TAP_NETWORK} 0.0.0.0 promisc up
}
do_stop() {
brctl delif $BRIDGE_DEVICE tap$TAP_DEV_NUM
ip link set tap$TAP_DEV_NUM nomaster
ifconfig tap$TAP_DEV_NUM down
}
do_restart() {
do_stop
do_start
}
check_status() {
ifconfig tap$TAP_DEV_NUM
}
case $1 in
start) do_start;;
stop) do_stop;;
restart) do_restart;;
status)
echo "Status of $DESC: "
check_status
exit "$?"
;;
*)
echo "Usage: $0 {start|stop|restart|status}"
exit 1
esac
将上述脚本加入到系统服务中 (ubuntu 20.04 使用的是 systemd):
$ cat /etc/systemd/system/config_tap.service
[Unit]
Description=config tap device
After=network.target auditd.service sshd.service
[Service]
ExecStart=/usr/local/bin/config_tap.sh start
ExecReload=/usr/local/bin/config_tap.sh restart
ExecStop=/usr/local/bin/config_tap.sh stop
Restart=on-failure
RestartPreventExitStatus=255
Type=simple
[Install]
WantedBy=multi-user.target
Alias=config_tap.service
评论区