ฉันทำตามคำแนะนำนี้เพื่อตั้งค่าเครือข่ายระหว่างเครื่องเสมือน วิธีใช้เครือข่ายบริดจ์ด้วย libvirt และ KVM.
เกิดปัญหาสองประการคือ
- การตั้งค่าเครือข่ายไม่คงอยู่หลังจากรีบูตระบบ
- บนเครื่องแขกเสมือน NIC ตัวที่สองไม่สามารถเชื่อมต่อกับเราเตอร์ได้ ไม่แสดงการเชื่อมต่อเครือข่าย
ฉันสร้างสะพานใหม่บนโฮสต์
ลิงค์ sudo ip เพิ่มสะพานประเภท hostbr0
sudo ip link แสดงประเภทบริดจ์
# 4: virbr0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 สถานะ noqueue qdisc โหมดลง DEFAULT กลุ่มเริ่มต้น qlen 1000
# ลิงค์ / อีเธอร์ 52:54:00:8a:2e:73 brd ff:ff:ff:ff:ff:ff
# 8: mpqemubr0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state โหมดลง DEFAULT กลุ่มเริ่มต้น qlen 1000
# ลิงค์ / อีเธอร์ 52:54:00:87:65:df brd ff:ff:ff:ff:ff:ff
# 9: นักเทียบท่า 0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN mode DEFAULT กลุ่มเริ่มต้น
# ลิงค์ / อีเธอร์ 02:42:e9:8e:81:fc brd ff:ff:ff:ff:ff:ff
# 10: hostbr0: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN mode กลุ่มเริ่มต้น qlen 1000 เริ่มต้น
# ลิงค์/อีเธอร์ 18:31:bf:cc:08:61 brd ff:ff:ff:ff:ff:ff
ฉันมีอินเทอร์เฟซเครือข่ายสองอินเทอร์เฟซบนโฮสต์ ซึ่งทั้งคู่เชื่อมต่อกับเราเตอร์ด้วยการเข้าถึงอินเทอร์เน็ต
ชื่อ -v
#44~20.04.2-Ubuntu SMP อ. 26 ต.ค. 18:07:44 UTC 2021
ls -l /sys/class/net/ | เกรปพีซีไอ
# enp4s0 -> ../../devices/pci0000:00/0000:00:1c.5/0000:04:00.0/net/enp4s0
# enp5s0 -> ../../devices/pci0000:00/0000:00:1c.7/0000:05:00.0/net/enp5s0
เซิร์ฟเวอร์ DHCP บนเราเตอร์ของฉันเชื่อมต่อกับการกำหนดค่าอินเทอร์เน็ต:
กลุ่มที่อยู่ IP: 192.168.0.1--192.168.0.254
เกตเวย์เริ่มต้น: 192.168.0.1
โฮสต์ enp4s0: 192.168.0.11
hostbr0 enp5s0: 192.168.0.10
ฉันแนบ enp5s0
อุปกรณ์ทางกายภาพไปที่สะพาน:
ลิงค์ sudo ip ตั้งค่า enp5s0 ขึ้น
sudo ip link ตั้งค่า enp5s0 master hostbr0
ที่อยู่ IP sudo เพิ่ม dev hostbr0 192.168.2.2/24
ip addr แสดง hostbr0
#10: hostbr0: <BROADCAST,MULTICAST> mtu 1500 qdisc noop สถานะลง #group เริ่มต้น qlen 1000
# ลิงค์/อีเธอร์ 18:31:bf:cc:08:61 brd ff:ff:ff:ff:ff:ff
# inet 192.168.2.2/24 ขอบเขต global hostbr0
# valid_lft ตลอดไป reserved_lft ตลอดไป
เพื่อให้การกำหนดค่ายังคงอยู่ฉันได้แก้ไข /etc/network/interfaces
. อย่างที่คุณเห็น ฉันมีอินเทอร์เฟซที่กำหนดค่าไว้หลายอินเทอร์เฟซและเพิ่มอินเทอร์เฟซใหม่แล้ว enp5s0
# /etc/network/interfaces
อัตโนมัติ
iface lo inet ย้อนกลับ
การทำแผนที่ hotplug
สคริปต์ grep
แผนที่ eth1
iface eth1 inet dhcp
อัตโนมัติ eth0
iface eth0 inet คงที่
ที่อยู่ 10.152.187.1
เน็ตมาสก์ 255.255.255.0
อัตโนมัติ wlan0
iface wlan0 inet แบบคงที่
ที่อยู่ 192.168.1.1
เน็ตมาสก์ 255.255.255.0
ขึ้น /sbin/iwconfig โหมด wlan0 TTTTTT && /sbin/iwconfig wlan0 enc
จำกัด && /sbin/iwconfig คีย์ wlan0 [Y] XXXXXXXXX && /sbin/iwconfig
wlan0 essid SSSSSSSS
อัตโนมัติ eth1
# ระบุว่าส่วนต่อประสานทางกายภาพที่ควรเชื่อมต่อกับบริดจ์
# ควรกำหนดค่าด้วยตนเอง เพื่อหลีกเลี่ยงความขัดแย้งกับ NetworkManager
คู่มือการใช้งาน iface enp5s0 inet
# การตั้งค่าบริดจ์ hostbr0
auto hostbr0
iface hostbr0 inet แบบคงที่
bridge_ports enp5s0
ที่อยู่ 192.168.2.11
ออกอากาศ 192.168.2.255
เน็ตมาสก์ 255.255.255.0
เกตเวย์ 192.168.0.11
ขอแนะนำให้ปิดการใช้งาน netfilter:
sudo nano /etc/sysctl.d/99-netfilter-bridge.conf
# net.bridge.bridge-nf-call-ip6tables = 0
# net.bridge.bridge-nf-call-iptables = 0
# net.bridge.bridge-nf-call-arptables = 0
# โหลดการตั้งค่าที่เขียนในไฟล์
sudo modprobe br_netfilter
# เพื่อโหลดโมดูลโดยอัตโนมัติเมื่อบูต
sudo nano /etc/modules-load.d/br_netfilter.conf
#br_netfilter
# โหลดการตั้งค่าใน 99-netfilter-bridge.conf
sudo sysctl -p /etc/sysctl.d/99-netfilter-bridge.conf
กว่าที่ฉันสร้างเครือข่ายเสมือนใหม่ใน libvirt
# สร้างเครือข่ายเสมือนใหม่
sudo nano /tmp/host-bridged-network.xml
# <เครือข่าย>
# <ชื่อ>เครือข่ายโฮสต์บริดจ์</name>
# <โหมดไปข้างหน้า = "สะพาน" />
# <ชื่อสะพาน = "hostbr0" />
# </เครือข่าย>
sudo virsh net-define /tmp/host-bridged-network.xml
sudo virsh net-start โฮสต์บริดจ์เครือข่าย
sudo virsh net-autostart โฮสต์บริดจ์เครือข่าย
sudo virsh รายการสุทธิ
# ชื่อสถานะ Autostart ถาวร
# --------------------------------------------- --------
# ใช้งานเริ่มต้น ใช่ ใช่
# เครือข่ายโฮสต์บริดจ์ที่ใช้งานอยู่ ใช่ ใช่
virsh net-แก้ไขค่าเริ่มต้น
# <เครือข่าย>
# <ชื่อ>ค่าเริ่มต้น</ชื่อ>
# <uuid>96dc6685-2006-4d88-9239-20f0b263f14b</uuid>
# <โหมดส่งต่อ='แนท'/>
# <ชื่อบริดจ์='virbr0' stp='on' หน่วงเวลา='0'/>
# <ที่อยู่ mac='52:54:00:8a:2e:73'/>
# <ที่อยู่ ip='192.168.122.1' netmask='255.255.255.0'>
# <dhcp>
# <ช่วง start='192.168.122.2' end='192.168.122.254'/>
# </dhcp>
# </ip>
# </เครือข่าย>
virsh net-แก้ไขโฮสต์บริดจ์เครือข่าย
# <เครือข่าย>
# <ชื่อ>เครือข่ายโฮสต์บริดจ์</name>
# <uuid>762ec061-5a3d-417e-81ae-e06a920e0b13</uuid>
# <โหมดไปข้างหน้า='บริดจ์'/>
# <ชื่อบริดจ์='hostbr0'/>
# </เครือข่าย>
ข้อมูลบางอย่างเกี่ยวกับการกำหนดค่าขั้นสุดท้ายของโฮสต์ของฉัน:
#บนโฮสต์
เส้นทางไอพี
# ค่าเริ่มต้นผ่าน 192.168.0.1 dev enp4s0 proto dhcp metric 100
# 10.139.212.0/24 dev mpqemubr0 โปรโตเคอร์เนลขอบเขตลิงก์ src 10.139.212.1 ลิงก์ดาวน์
# 169.254.0.0/16 dev virbr0 ขอบเขตลิงก์เมตริก 1,000 ลิงก์ดาวน์
# 172.17.0.0/16 dev docker0 proto kernel scope ลิงก์ src 172.17.0.1 ลิงก์ดาวน์
# 192.168.0.0/24 dev enp4s0 ลิงก์ขอบเขตเคอร์เนลโปรโต src 192.168.0.11 เมตริก 100
# 192.168.122.0/24 dev virbr0 ขอบเขตเคอร์เนลโปรโต ลิงก์ src 192.168.122.1 ลิงก์ดาวน์
ลิงค์ไอพี
# 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT กลุ่มเริ่มต้น qlen 1000
# ลิงค์ / วนกลับ 00:00:00:00:00:00 brd 00:00:00:00:00:00
# 2: enp4s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel สถานะ UP โหมด DEFAULT กลุ่มเริ่มต้น qlen 1000
# ลิงค์ / อีเธอร์ 50:3e:aa:0c:97:02 brd ff:ff:ff:ff:ff:ff
# 3: enp5s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel master hostbr0 สถานะ UP โหมด DEFAULT กลุ่มเริ่มต้น qlen 1,000
# ลิงค์/อีเธอร์ 18:31:bf:cc:08:61 brd ff:ff:ff:ff:ff:ff
# 4: virbr0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 สถานะ noqueue qdisc โหมดลง DEFAULT กลุ่มเริ่มต้น qlen 1000
# ลิงค์ / อีเธอร์ 52:54:00:8a:2e:73 brd ff:ff:ff:ff:ff:ff
# 5: virbr0-nic: <BROADCAST,MULTICAST> mtu 1500 qdisc fq_codel master virbr0 สถานะลง โหมด DEFAULT กลุ่มเริ่มต้น qlen 1,000
# ลิงค์ / อีเธอร์ 52:54:00:8a:2e:73 brd ff:ff:ff:ff:ff:ff
# 8: mpqemubr0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state โหมดลง DEFAULT กลุ่มเริ่มต้น qlen 1000
# ลิงค์ / อีเธอร์ 52:54:00:87:65:df brd ff:ff:ff:ff:ff:ff
# 9: นักเทียบท่า 0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN mode DEFAULT กลุ่มเริ่มต้น
# ลิงค์ / อีเธอร์ 02:42:e9:8e:81:fc brd ff:ff:ff:ff:ff:ff
# 10: hostbr0: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN mode กลุ่มเริ่มต้น qlen 1000 เริ่มต้น
# ลิงค์/อีเธอร์ 18:31:bf:cc:08:61 brd ff:ff:ff:ff:ff:ff
กว่าที่ฉันเพิ่มอินเทอร์เฟซเครือข่ายสองอินเทอร์เฟซในเครื่องเสมือนแขกอูบุนตู 20.04: ค่าเริ่มต้น
และ โฮสต์บริดจ์เครือข่าย
. แขกเริ่มทำงานตามปกติ ฉันเห็นสภาพแวดล้อมเครือข่ายในตัวจัดการไฟล์ Nemo (โหนดแขกเท่านั้น) อินเทอร์เฟซ enp5s0 ไม่สามารถเชื่อมต่อได้ Ubuntu พยายามสร้างการเชื่อมต่อ แต่มักล้มเหลว ข้อความระบบ: "การเปิดใช้งานการเชื่อมต่อเครือข่ายล้มเหลว" สำหรับ enp5s0
อินเตอร์เฟซ. ค่าเริ่มต้น libvirt
เครือข่ายแสดงเป็น enp9s0
และทำงานได้อย่างถูกต้อง
บนโฮสต์อินเทอร์เฟซนี้แสดงเป็น ไม่มีการจัดการ
.
คำถามของฉันคือ:
ฉันควรกำหนดช่วงที่อยู่ใดให้กับเครือข่ายเสมือน
เดอะ hostbr0
ไม่ถูกสร้างขึ้นหลังจากรีบูตระบบ ดังนั้นจึงมีปัญหาในการกำหนดค่าหรือไม่
ฉันมีเซิร์ฟเวอร์ DHCP ที่เริ่มต้นบนโฮสต์ด้วย มันไม่ได้ใช้งานอยู่ในขณะนี้ อาจจะดีกว่าที่จะลบมัน?
ฉันควรเพิ่มทั้งสองเครือข่ายในเครื่องเกสต์หรือไม่: ค่าเริ่มต้น
, โฮสต์บริดจ์เครือข่าย
หรือเท่านั้น โฮสต์บริดจ์เครือข่าย
?
ต้องเสียบอินเทอร์เฟซเครือข่ายทางกายภาพแบบบริดจ์เข้ากับเราเตอร์หรือไม่ หรือทำหน้าที่ทั้งหมดบนโฮสต์และ NIC ตัวที่สองให้บริการอินเทอร์เน็ตผ่านเครือข่าย NAT?
โปรดแนะนำการปรับปรุงการกำหนดที่อยู่ ฉันสงสัยว่ามีบางอย่างผิดปกติในการกำหนดค่าของฉัน