Files
auto-macvlan/README.md
T

2.7 KiB

auto-macvlan

Skrip untuk memasang NIC macvlan ke instance Incus dan mengaktifkan DHCP di guest, sehingga instance langsung mendapat IP di LAN (mis. 192.168.200.x) — bukan IP NAT internal incus.

Cocok untuk instance yang perlu diakses langsung dari LAN (web, SSH, service yang di-publish podman/docker di dalamnya).

Pemakaian

./incus-macvlan.sh <instance> [device] [network]

Contoh:

# pakai default: device eth1, network eth200
./incus-macvlan.sh web1

# tentukan device & network
./incus-macvlan.sh web1 eth1 eth200

# buat network macvlan bila belum ada
./incus-macvlan.sh web1 --create --parent enp2s0

Opsi

Opsi Default Keterangan
--parent <iface> dari default route host Interface fisik host untuk parent macvlan
--network <name> eth200 Nama network macvlan di incus
--device <name> eth1 Nama NIC di dalam guest
--create mati Buat network macvlan kalau belum ada
-h, --help Bantuan

Argumen posisional: $1 instance, $2 device, $3 network. Opsi mengalahkan posisional.

Yang dilakukan

  1. Cek instance ada dan berjalan (start bila perlu).
  2. Pastikan network macvlan ada (buat dengan --create bila perlu).
  3. Pasang NIC nic network=<network> name=<device> ke instance (hotplug).
  4. Aktifkan DHCP di guest:
    • NetworkManager → nmcli
    • systemd-networkd → /etc/systemd/network/20-<device>.network
    • fallback: dhcpcd / dhclient / udhcpc
  5. Tunggu dan tampilkan IP LAN.

Idempotent — aman dijalankan ulang.

Persiapan network macvlan (sekali)

incus network create eth200 --type=macvlan parent=enp2s0

Atau biarkan skrip membuatnya dengan --create.

Syarat

  • Host Incus punya NIC fisik yang terhubung ke LAN (parent, mis. enp2s0).
  • DHCP server di LAN aktif (IP instance berasal dari router LAN, bukan incus).
  • Guest punya salah satu DHCP client di atas.

Catatan penting

  • Host Incus tidak bisa menghubungi instance lewat IP LAN macvlan (batasan macvlan). Dari host, kelola lewat incus exec; instance tetap bisa diakses dari perangkat LAN lain.

  • Bila instance punya dua NIC (incusbr0 + macvlan) dan default route dari incusbr0 menang, balasan ke LAN bisa keluar lewat NIC yang salah. Solusi: jadikan macvlan default dengan metrik lebih rendah, mis.:

    # /etc/systemd/network/20-eth1.network
    [Match]
    Name=eth1
    [Network]
    DHCP=yes
    [DHCPv4]
    RouteMetric=50
    

    atau nonaktifkan NIC incusbr0 bila tidak diperlukan.

  • IP yang didapat dinamis dari LAN. Kalau butuh statis, atur DHCP reservation di router atau konfigurasi statis di guest.

Lisensi

MIT — lihat LICENSE.