VLAN
Virtual LAN (VLAN, IEEE 802.1Q) membagi satu jaringan fisik menjadi beberapa jaringan Layer 2 yang terisolasi. Setiap frame membawa VLAN ID antara 1 dan 4094, dan switch hanya meneruskannya ke port yang termasuk dalam VLAN tersebut. Hal ini memungkinkan satu NIC fisik membawa lalu lintas manajemen host serta lalu lintas banyak jaringan mesin virtual, dengan masing-masing tetap terisolasi satu sama lain.
Vapor menawarkan dua cara untuk menggunakan VLAN:
- Open vSwitch (OVS) — direkomendasikan untuk jaringan mesin virtual. VLAN dikonfigurasikan pada port OVS (vPort) dan pada portgroup jaringan libvirt, serta satu bridge dapat membawa sejumlah VLAN berapa pun.
- Antarmuka VLAN Linux — sub-antarmuka seperti
eth0.10per VLAN. Cocok untuk memberikan host sebuah alamat IP pada suatu VLAN, atau untuk pengaturan Linux bridge sederhana dengan satu VLAN per bridge. Lihat Antarmuka VLAN Linux.
Sisa dari halaman ini membahas OVS.
Cara kerja VLAN di Open vSwitch
Pada sebuah bridge OVS, VLAN merupakan properti dari setiap port, bukan properti bridge itu sendiri. Tiga jenis port yang terlibat:
| Port | Penjelasan | Tempat VLAN dikonfigurasi |
|---|---|---|
| Uplink | Sebuah system vPort untuk NIC fisik (misalnya eno1) | Network > Virtual Switch > vPorts |
| Port host | Sebuah internal vPort yang membawa alamat IP host, seperti alamat manajemen | Network > Virtual Switch > vPorts |
| Port VM | Port vnetN yang dibuat libvirt untuk setiap NIC VM saat VM berjalan | Portgroup dari jaringan libvirt tempat NIC terhubung |
Setiap port memiliki VLAN mode:
| VLAN mode | Bidang (Fields) | Perilaku |
|---|---|---|
| access | Tag | Membawa satu VLAN, tanpa tag (untagged). Frame yang masuk ke port akan bergabung ke VLAN sesuai tag; frame yang keluar akan dihapus tag-nya. Frame yang tiba dalam keadaan sudah memiliki tag akan di-drop. |
| trunk | Trunks | Membawa daftar VLAN yang ditentukan, dengan tag (tagged). Daftar kosong berarti semua VLAN. |
| native-untagged | Tag dan Trunks | Sebuah trunk yang juga membawa VLAN Tag tanpa tag (untagged). Frame tanpa tag yang masuk ke port akan bergabung ke VLAN tersebut. |
| native-tagged | Tag dan Trunks | Sama seperti native-untagged, namun frame dari native VLAN meninggalkan port dengan tag (tagged). |
| Auto (default) | Tag atau Trunks | Access jika tag diisi, jika tidak maka menjadi trunk. |
Port tanpa tag dan tanpa trunks bertindak sebagai trunk untuk semua VLAN. Frame untagged yang diterimanya berada di VLAN 0, yang tidak dimiliki oleh port ber-tag mana pun. Inilah alasan mengapa NIC VM yang tidak pernah menerima VLAN tidak dapat menjangkau apa pun di suatu VLAN.
Saat Anda mengubah mode VLAN suatu port, Vapor akan membersihkan pengaturan yang tidak digunakan oleh mode baru tersebut: beralih ke trunk akan menghapus tag, beralih ke access akan menghapus trunks.
Memilih mode uplink
Uplink harus sesuai dengan konfigurasi port switch fisik. Sepakati hal ini dengan tim jaringan Anda sebelum memulai.
| Port switch fisik | Uplink vPort (eno1) | VLAN yang dapat digunakan host |
|---|---|---|
| Access port, VLAN 104 (untagged) | access, Tag 104 | Hanya 104 |
| 802.1Q trunk, VLAN 104, 105, 106 tagged | trunk, Trunks 104,105,106 | 104, 105, 106 |
| Trunk dengan native VLAN 104 untagged, 105 dan 106 tagged | native-untagged, Tag 104, Trunks 104,105,106 | 104, 105, 106 |
Uplink access adalah konfigurasi paling sederhana, tetapi membatasi host hanya pada satu VLAN, dan menambahkan VLAN kedua di kemudian hari berarti harus mengonfigurasi ulang switch dan host. Jika ada kemungkinan Anda membutuhkan lebih dari satu VLAN, gunakan trunk sejak awal.
Jangan pernah menetapkan alamat IP host pada NIC uplink atau pada bridge itu sendiri. Setelah sebuah NIC menjadi anggota bridge, NIC tersebut hanya bekerja pada Layer 2, dan port bridge itu sendiri tidak memiliki tag sehingga berada di VLAN 0. Tempatkan alamat IP host pada vPort internal, seperti yang dijelaskan di bawah ini.
Contoh: manajemen dan VM pada VLAN yang sama
Ini adalah tata letak produksi yang paling umum: satu NIC, VLAN 104 untuk UI web Vapor dan VM, dengan ruang untuk menambahkan lebih banyak VLAN di kemudian hari.
awbr0 (VS Bridge)
├─ eno1 system vPort trunk, trunks 104 (tanpa IP)
├─ mgmt0 internal vPort tag 104, "management" ← IP manajemen host
└─ vnetN VM ports tag 104 ← dari portgroup jaringanLakukan ini dari konsol
Memindahkan alamat manajemen ke port baru akan memutuskan koneksi yang sedang Anda gunakan. Gunakan konsol server atau manajemen out-of-band (iDRAC, iLO, IPMI) untuk langkah 2 hingga 4, atau pastikan Anda memiliki jalur akses kedua ke host.
1. Konfigurasikan port switch
Minta tim jaringan Anda untuk menjadikan port switch host sebagai 802.1Q trunk yang membawa VLAN 104 secara tagged. Jika switch harus mengirimkan VLAN 104 secara untagged, gunakan native-untagged pada langkah 3 alih-alih trunk.
2. Buat bridge
- Buka Network > Virtual Switch.
- Klik Create VS Bridge dan beri nama, misalnya
awbr0.
3. Tambahkan uplink
- Di bawah vPorts, klik Create vPort.
- Atur VS Bridge ke
awbr0, vPort Type kesystem, dan piliheno1di bawah Interfaces. Nama vPort adalah nama antarmuka. - Atur VLAN Mode ke
trunkdan Trunks ke104. Biarkan Tag kosong. - Biarkan opsi Remove IP addresses from these interfaces tercentang, agar tidak ada alamat IP yang tertinggal di
eno1.
4. Tambahkan port manajemen
- Klik Create vPort lagi.
- Atur VS Bridge ke
awbr0, vPort Type keinternal, dan vPort Name kemgmt0. - Atur VLAN Mode ke
accessdan Tag ke104. - Di bawah Service Tags, centang
management. - Buka Network > Interfaces, buka
mgmt0, dan gunakan Add IP untuk memberinya alamat manajemen host dan gateway.
Vapor menyimpan pengaturan VLAN port bersama port tersebut. Jika host kehilangan port setelah hard power-off, layanan boot akan membuatnya kembali dengan tag-nya sebelum jaringan aktif, sehingga alamat manajemen tetap berada di VLAN 104.
5. Buat jaringan VM
- Buka Virtualization > Networks dan buat jaringan bernama, misalnya,
vlan104. - Atur Backend Type ke Open vSwitch (OVS), Forwarding Mode ke Bridge, dan Host Bridge Name ke
awbr0. - Tambahkan portgroup bernama
pg-104dengan VLAN Tags104, dan centang Set as default for this network.
Menandai portgroup sebagai default adalah kunci keamanannya: setiap NIC VM yang terhubung ke vlan104 akan mendapatkan VLAN 104 tanpa perlu ada yang memilih portgroup tersebut secara manual.
6. Pasang VM
Di wizard pembuatan VM, tambahkan NIC pada jaringan vlan104. Kolom Portgroup (optional) akan menampilkan Network default (pg-104), yang merupakan konfigurasi yang diinginkan. Anda dapat membiarkannya seperti itu.
7. Periksa konfigurasi
Lihat Memeriksa konfigurasi.
Contoh: beberapa VLAN pada satu NIC
Untuk memberi VM pilihan VLAN, kembangkan tata letak di atas.
- Pastikan port switch membawa setiap VLAN yang Anda butuhkan, misalnya 104, 105, dan 106.
- Edit vPort
eno1dan atur Trunks ke104,105,106. - Buat jaringan libvirt untuk setiap VLAN, masing-masing pada
awbr0dengan satu default portgroup:
| Network | Default portgroup | VLAN Tags |
|---|---|---|
vlan104 | pg-104 | 104 |
vlan105 | pg-105 | 105 |
vlan106 | pg-106 | 106 |
Memilih jaringan kini otomatis menentukan VLAN-nya. Jika host juga membutuhkan alamat pada VLAN lain, misalnya jaringan penyimpanan (storage network), tambahkan vPort internal lain dengan tag tersebut beserta tag layanan yang cocok.
Satu jaringan dengan beberapa portgroup
Alih-alih satu jaringan per VLAN, Anda dapat membuat satu jaringan tunggal dengan satu portgroup per VLAN: pg-104 (default), pg-105, pg-106. Setiap NIC VM kemudian harus memilih portgroup-nya, dan NIC yang tidak memilih portgroup apa pun akan masuk ke VLAN default. Pendekatan ini membuat daftar jaringan tetap ringkas, tetapi lebih rentan menempatkan VM pada VLAN yang salah, jadi pilihlah satu jaringan per VLAN kecuali jika Anda memiliki banyak VLAN.
VM yang membutuhkan beberapa VLAN
VM router atau firewall yang menangani penandaan VLAN sendiri memerlukan trunk. Tambahkan portgroup dengan Enable VLAN trunking dicentang dan VLAN Tags 104,105,106, lalu hubungkan NIC VM ke portgroup tersebut. VM kemudian akan menerima VLAN-VLAN tersebut dalam keadaan tagged.
Portgroup dan VM yang sedang berjalan
VLAN untuk NIC VM diambil dari prioritas pertama yang memilikinya:
- VLAN yang disetel langsung pada NIC di definisi VM
- Portgroup yang dipilih NIC, atau portgroup default jaringan jika tidak ada yang dipilih
- VLAN milik jaringan itu sendiri
Saat Anda mengedit jaringan, atau membuat, mengedit, maupun menghapus salah satu portgroup-nya, Vapor memindahkan NIC VM yang sedang berjalan ke VLAN baru yang dihasilkan oleh perubahan tersebut. Anda tidak perlu me-restart VM. Harap diingat:
- Menghapus default portgroup akan langsung mencabut VM yang mengandalkannya dari VLAN tersebut. Tandai portgroup lain sebagai default terlebih dahulu.
- Mengganti nama portgroup akan membiarkan NIC yang memilih nama lama tetap berada di VLAN mereka saat ini, dan VM tersebut akan gagal dimulai hingga NIC diarahkan ke portgroup yang valid.
- NIC dengan VLAN-nya sendiri tidak terpengaruh oleh perubahan portgroup.
Jangan menyetel tag pada vPort vnetN secara manual. libvirt menghapus dan membuat ulang port-port tersebut setiap kali VM dimulai, dihentikan, atau dimigrasikan, sehingga tag manual akan hilang pada kejadian berikutnya, dan nama port dapat berubah. Setel VLAN pada portgroup.
Live migration
VM tetap mempertahankan nama jaringan dan portgroup-nya saat bermigrasi, dan host tujuan akan menerapkan definisinya sendiri untuk nama-nama tersebut. Agar VM tetap berada di VLAN yang benar setelah migrasi:
- Setiap host harus memiliki jaringan dengan nama yang sama, portgroup yang sama, dan tag VLAN yang sama.
- Uplink setiap host harus membawa VLAN yang digunakan oleh portgroup tersebut.
Portgroup yang hilang akan menghentikan proses migrasi. Portgroup dengan tag yang berbeda di host tujuan akan memindahkan VM ke VLAN tersebut tanpa peringatan.
Memeriksa konfigurasi
Pada host, periksa pengaturan VLAN dari setiap port pada bridge:
ovs-vsctl --columns=name,tag,trunks,vlan_mode list PortUntuk tata letak di atas, diharapkan eno1 dengan trunks [104] dan vlan_mode trunk, mgmt0 dengan tag 104, dan setiap vnetN VM yang berjalan dengan tag 104.
Untuk melihat port mana yang dimiliki oleh VM dan VLAN yang diberikan libvirt kepadanya:
virsh domiflist <vm-name>
virsh dumpxml <vm-name> | grep -A3 "<vlan>"Kemudian uji dari kedua ujung: ping alamat VM dari mesin lain di VLAN 104, dan ping gateway VLAN dari dalam VM.
Pemecahan Masalah
VM tidak memiliki akses jaringan, tetapi host memilikinya. NIC-nya kemungkinan tidak memiliki tag (untagged). Periksa port vnetN-nya: tag kosong dan trunks kosong berarti NIC tidak mendapatkan VLAN. Tandai portgroup sebagai default pada jaringan VM atau pilih portgroup pada NIC. Wizard pembuatan VM akan memberikan peringatan jika NIC pada jaringan Open vSwitch akan terhubung tanpa tag.
Tag yang disetel secara manual pada port vnetN menghilang. Hal ini memang diharapkan; lihat Portgroup dan VM yang sedang berjalan.
Host tidak dapat dijangkau setelah memindahkan alamat manajemen. Dari konsol, periksa bahwa port switch membawa VLAN secara tagged (atau native, dengan native-untagged), bahwa trunks pada uplink menyertakannya, dan bahwa vPort internal memiliki tag yang benar serta memegang alamat IP tersebut. Alamat yang tertinggal di NIC uplink atau di bridge tidak akan berfungsi.
VM di dua host pada VLAN yang sama tidak dapat saling menjangkau. Periksa apakah kedua uplink membawa VLAN tersebut, dan pastikan port switch di antara kedua host mengizinkannya.
Perubahan VLAN port ditolak. Port trunk tidak boleh memiliki tag, dan port access tidak boleh memiliki trunks. Untuk trunk yang juga membawa VLAN tanpa tag, gunakan native-untagged atau native-tagged.
Antarmuka VLAN Linux
Jika port switch host adalah trunk dan Anda tidak menggunakan OVS, Anda dapat membuat sub-antarmuka VLAN untuk setiap VLAN.
- Buka Network > VLANs.
- Klik Create VLAN.
- Pilih antarmuka induk (misalnya
eth0atau bond). - Masukkan VLAN ID (1 hingga 4094).
Vapor membuat sub-antarmuka seperti eth0.10 untuk VLAN 10. Anda dapat memberinya alamat IP, atau menjadikannya anggota Linux bridge agar VM yang terpasang pada bridge tersebut berada di VLAN 10. Setiap VLAN membutuhkan sub-antarmuka dan bridge-nya sendiri, sehingga jika terdapat lebih dari beberapa VLAN, OVS jauh lebih mudah dikelola.