Saya baru saja menginstal KVM di Server Ubuntu saya sesuai dengan panduan ini: https://help.ubuntu.com/community/KVM/Installation
Kemudian siapkan jaringan penghubung seperti ditunjukkan di sini: https://help.ubuntu.com/community/KVM/Networking
Lalu, saya membuat mesin virtual dengan virt-manager. Saya mencoba beberapa kali tetapi tamu gagal terhubung ke jaringan! Ada bantuan?
ifconfig:
br0 Link encap:Ethernet HWaddr d0:27:88:b0:e4:38
inet addr:192.168.20.100 Bcast:192.168.20.255 Mask:255.255.255.0
inet6 addr: fe80::d227:88ff:feb0:e438/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:62 errors:0 dropped:0 overruns:0 frame:0
TX packets:62 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:10493 (10.4 KB) TX bytes:8433 (8.4 KB)
eth0 Link encap:Ethernet HWaddr d0:27:88:b0:e4:38
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:62 errors:0 dropped:0 overruns:0 frame:0
TX packets:63 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:11361 (11.3 KB) TX bytes:8479 (8.4 KB)
Interrupt:41
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
UP LOOPBACK RUNNING MTU:16436 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)
virbr0 Link encap:Ethernet HWaddr 5a:8c:57:95:af:3b
inet addr:192.168.122.1 Bcast:192.168.122.255 Mask:255.255.255.0
UP BROADCAST MULTICAST MTU:1500 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)
brctl show:
bridge name bridge id STP enabled interfaces
br0 8000.d02788b0e438 no eth0
virbr0 8000.000000000000 yes
brctl showmacs br0:
port no mac addr is local? ageing timer
1 5c:d9:98:67:b6:28 no 48.33
1 d0:27:88:b0:e4:38 yes 0.00
1 e0:2a:82:f9:6c:09 no 0.00
rute ip:
default via 192.168.20.1 dev br0 metric 100
192.168.20.0/24 dev br0 proto kernel scope link src 192.168.20.100
192.168.122.0/24 dev virbr0 proto kernel scope link src 192.168.122.1
* Di bintang tamu * Saya tidak dapat menyalin info dari tamu tersebut karena tidak bisa ssh ke sana. Itu tidak mendapatkan ip dari DHCP. Tidak akan berfungsi bahkan setelah mengaturnya secara manual.
server
networking
kvm
network-bridge
THpubs
sumber
sumber
ifconfig
,brctl show
,brctl showmacs br0
, danip route
. Pada tamu:ifconfig
,ip route
,ping 8.8.8.8
,ping <your internet router>
, dantraceroute 8.8.8.8
. Saya tidak bisa mengatakan bahwa saya telah mengkonfigurasi kvm dengan cara yang Anda miliki, tetapi saya telah menjembatani untuk bekerja menggunakankvm
perintah. Saya memang harus memutuskan koneksi nirkabel sehingga tuan rumah saya akan terhubung ke Internet, dan, seperti yang dikatakan dalam petunjuk yang Anda kutip, Anda harus terhubung ke Internet dengan Ethernet.brctl showmacs br0
daftar di atas?Jawaban:
Persiapan
Berikut ini bekerja untuk saya untuk Ubuntu 12.04. Anda harus menonaktifkan firewall komputer Anda saat Anda menguji ini sehingga tidak akan mengganggu.
File / etc / default / qemu-kvm harus seperti aslinya diinstal.
Anda perlu menginstal bridge-utils qemu-kvm dan libvirt-bin . Setiap pengguna yang menggunakan mesin virtual harus ditambahkan ke grup libvirtd.
Tampaknya tidak ada lagi kebutuhan untuk menambahkan kemampuan CAP_NET_ADMIN.
Pengaturan jaringan
Mode jaringan default adalah mode Pengguna, juga disebut SLIRP. Ini menggunakan jembatan virbr0 yang telah ditetapkan yang NAT dialihkan ke komputer tamu. Routing NAT menggunakan fitur ip_forwarding dan iptables kernel . Mode jembatan menggunakan jembatan virtual di dalam tamu yang terhubung dengan antarmuka Ethernet (tidak bernomor), dan di mana tuan rumah dan tamu memiliki antarmuka jaringan mereka.
Diagram berikut dapat memperjelas perbedaan:
Anda dapat melihat bagaimana jaringan Pengguna default didefinisikan dengan:
Saya dapat mengatur mode bridged dengan pendekatan berikut:
Di / etc / network / interfaces (dari bagian bridging dari postingan yang Anda sebutkan dalam pertanyaan Anda):
Reboot; dan pastikan bahwa jaringan nirkabel tidak aktif. Periksa rute IP default dengan
ip route
. Itu harus menggunakan antarmuka br0.NB Jika Ethernet Anda tidak terhubung saat perubahan ini dilakukan, Anda perlu menyambungkan kabel Ethernet Anda dan mendapatkan carrier atau boot akan menggantung selama dua menit dan Anda tidak akan memiliki kemampuan jaringan. Itu karena antarmuka eth0, oleh berada di file ini, harus muncul sebelum boot dapat melanjutkan dengan normal.
NB Umumnya Anda tidak dapat menggunakan jaringan nirkabel daripada eth0 karena ketidakmampuan mereka untuk menggunakan beberapa alamat MAC (saya menyimpulkan bahwa mereka membutuhkan yang kedua untuk jembatan).
Sebagai alternatif, Anda dapat menonaktifkan penggunaan Ethernet dan memastikan bahwa itu tidak memiliki alamat IP, dan bahwa tidak ada rute default yang diatur
ip route
. Kemudian:Anda juga dapat memberikan alamat IP statis di sini, serta menentukan rute default dan alamat DNS. Untuk contoh
dhclient
ini, lakukan ini.Inilah tabel rute saya:
Menggunakan kvm
Saya kemudian dapat mem-boot mesin bridged kvm dengan:
The
-netdev tap
merek parameter sudo suatu kebutuhan. Saat VM dimulai qemu-kvm menjalankan perintah berikut:Ini dilakukan oleh / etc / qemu-ifup
Antarmuka VM vnet0 ditambahkan ke jembatan br0 karena rute default di atas menggunakan antarmuka jembatan itu. Jika tidak ada, antarmuka tap akan ditambahkan ke antarmuka virbr0. Karena itu tidak terhubung ke Internet, NAT akan digunakan untuk menghubungkan tamu ke host dan Internet, dalam percobaan saya. Anda dapat mengarahkan vnet0 ke jembatan tertentu di / etc / default / qemu-kvm. Dengan menggunakan virt-manager di bawah ini Anda dapat secara eksplisit mengarahkan jembatan mana yang terhubung.
Karena perintah di atas dikeluarkan oleh qemu-kvm, dan
-netdev tap,id=tunnel,ifname=vnet0
parameternya, mesin virtual vm terhubung ke terowongan vnet0, dan terowongan terhubung ke jembatan br0.Saya sekarang dapat langsung ssh ke guest VM ini dari komputer lain di jaringan saya.
Tuan rumah saya
ifconfig
(perhatikan antarmuka vnet0 yang muncul di jaringan saya ketika VM sedang berjalan):Konfigurasi jembatan saya saat menjalankan VM:
Perhatikan bahwa antarmuka vnet0 mesin virtual dan antarmuka eth0 terhubung ke jembatan br0.
Dan MAC ada di antarmuka br0:
Perhatikan bahwa antarmuka br0 menghubungkan komputer host saya ke jembatan yang sama yang digunakan oleh tamu.
Anda dapat memeriksa bahwa Anda dijembatani daripada NAT yang diarahkan ke jaringan Anda sendiri dengan menggunakan
traceroute 8.8.8.8
. Jika simpul pertama adalah router jaringan Anda dan bukan alamat ip tamu, jaringan Anda seharusnya bekerja dengan benar.Lihat dokumentasi ini .
manajer kebajikan
Pastikan Anda telah menginstal
virt-manager
danhal
. Thehal
paket ketergantungan disarankan untukvirt-manager
dan digunakan untuk menentukan konfigurasi jaringan sistem anda saat membuat atau mengedit tamu.Sementara memiliki jembatan br0 didefinisikan seperti di atas saya membuat mesin virtual dengan virt-manager sebagai berikut:
Saya bisa langsung ke seluruh jaringan rumah saya dan ke Internet dari tamu ini. Saya juga dapat ssh ke dalamnya dari komputer Ubuntu lain (non-host, non-guest) di jaringan rumah saya.
Inilah
kvm
perintah yang sangat panjang yang dijalankan oleh virt-manager (untuk perbandingan dengan EApubs atau siapa pun yang mengalami masalah dengan ini):Inilah bagian jaringan dari deskripsi mesin virtual di /etc/libvirt/qemu/quantal.xml
Menurut tautan ini , untuk kinerja dan keandalan, mungkin yang terbaik untuk mengatur model perangkat jaringan
virtio
, Anda dapat melakukan ini dengan di virt-viewer dengan menekan tombol i , pergi ke pengaturan NIC, dan pengaturan "Device model "kevirtio
. Anda juga bisa menambahkan ini ke XML di atas dengan menambahkan baris:Singkatnya
Semua ini berlangsung pada 12,04 adalah:
-device e1000,netdev=tunnel -netdev tap,id=tunnel,ifname=vnet0
, atau buat mesin virtual dengan virt-manager, tentukan network br0 di bawah panel Langkah 4-> Opsi Lanjutan.Tidak ada perubahan lebih lanjut yang diperlukan untuk jaringan, kemampuan, template, atau konfigurasi.
Untuk mengekspos layanan di tamu baru Anda ke Internet, Anda harus:
Ingatlah untuk menguji dan mengaktifkan kembali layanan firewall untuk komputer host Anda. Mungkin perlu entri apa pun untuk meneruskan lalu lintas ke tamu.
Lihat https://help.ubuntu.com/community/KVM/Instalation , https://help.ubuntu.com/community/KVM/Networking , dan https://help.ubuntu.com/12.04/serverguide/libvirt. html .
sumber
ps aux | grep kvm
).brctl show
seperti yang Anda miliki di pertanyaan Anda?) Apa versi Ubuntu yang Anda jalankan? Mungkin itu bedanya. Versi virt-manager apa? (Milik saya adalah 0.9.1-1ubuntu5.1).Jika perilaku yang Anda lihat adalah tuan rumah dapat mengakses tamu, dan tamu dapat mengakses tuan rumah, tetapi tamu tidak dapat mengakses mesin lain di jaringan atau sebaliknya ... mungkin firewall tuan rumah memblokir akses.
Lihat: https://bugs.launchpad.net/ubuntu/+source/ufw/+bug/573461
Secara khusus, bagian ini: "Langkah terakhir adalah menonaktifkan netfilter di jembatan:
sumber
Ini adalah dua skrip yang saya gunakan untuk membuat jembatan
qemu-kvm
.Pertama, biarkan host menjadi router IP.
Skrip
ip-router.sh
:Lalu, buat
tun-tap
antarmuka danbridge
itu dengan antarmuka default Anda (biasanya yang dengan koneksi Internet).Skrip
create-qemu-bridged-tuntap.sh
:Saya menggunakan skrip-skrip ini setiap hari, jadi skrip ini harus bekerja dengan baik juga untuk Anda. Anda harus menginstal beberapa paket agar semua ini berfungsi. Menggunakan:
Anda dapat melihat paket mana yang harus dimiliki
COMMAND
. Misalnya untuk melihat paket mana yang harus dimilikibrctl
, jalankan saja:dan Anda akan memiliki:
Dengan menggunakan pendekatan yang sama untuk semua perintah dalam skrip ini, Anda harus (setidaknya) menjalankan
aptitude
baris perintah ini :Akhirnya, Anda dapat meluncurkan skrip utama (sebagai pengguna normal):
Menjalankan
ip addr
Anda akan melihatbr0
antarmuka dengan alamat IP192.168.1.1
, seperti yang ditentukan di dalamcreate-qemu-bridged-tuntap.sh
skrip:Ini
host address
seperti yang terlihat olehguest
. Sebaliknya, tamu akan memiliki alamat IP192.168.1.95
(sekali lagi, ini dapat dengan mudah diubah di dalam skrip utama).Sekarang, menggunakan
virt-manager
, Anda hanya perlu mengatur tamu Anda untuk digunakanbr0
sebagai antarmuka fisik.Di dalam
guest
, Anda hanya perlu memberikaneth0
alamat IP192.168.1.95
dan semuanya akan berjalan dengan baik.sumber
cat /proc/sys/net/ipv4/ip_forward
memberi0
. Mengaktifkan dan bertahan itu membereskan masalah bagi saya, instruksi dalam posting ini .