user@homelab:~/docs$ cat 06-network.md

Síť a Wi-Fi

Zablokovaná Wi-Fi (rfkill), netplan a pevná IP adresa přes DHCP rezervaci

# obsah

Problém: Wi-Fi nefungovala

Wi-Fi nešla už v instalátoru, ani s domácí sítí, ani s hotspotem z mobilu. Ethernetový kabel nebyl po ruce, takže instalace proběhla bez sítě.

Diagnostika

Bez sítě se nedaly kopírovat příkazy, proto jsme diagnostiku napsali jako skript. Skript se přenesl na Ventoy disku (exFAT umí číst Mac i Linux) a výstup uložil zpátky na disk:

shell @ server
sudo mount /dev/sdc1 /mnt
sudo bash /mnt/homelab-step1.sh

Z výstupu bylo vidět:

text
rfkill0: name=ideapad_wlan type=wlan hard=0 soft=1
rfkill3: name=phy0         type=wlan hard=0 soft=1
iwlwifi: loaded firmware version 17.bfb58538.0 3160-17.ucode
wpasupplicant 2:2.11-0ubuntu5   (nainstalovaný)
netplan: wifis: {}

Závěr:

  • ovladač i firmware jsou v pořádku,
  • wpasupplicant je nainstalovaný,
  • Wi-Fi je softwarově zablokovaná přes rfkill (soft=1), nejspíš stav „režim letadlo“ z BIOSu nebo Windows. Hardwarový vypínač (hard=0) to není,
  • v netplanu chybí konfigurace Wi-Fi.

Odblokování přes sysfs

Příkaz rfkill na serveru nebyl, ale stejnou věc jde udělat přímo zápisem do jádra:

shell @ server
for d in /sys/class/rfkill/*; do
  [ "$(cat "$d/type")" = "wlan" ] && echo 0 | sudo tee "$d/soft"
done

Stav se po restartu zachová, protože systemd-rfkill si ho ukládá.

Konfigurace Wi-Fi (netplan)

shell @ server
sudo nano /etc/netplan/50-wifi.yaml
yaml @ server
network:
  version: 2
  wifis:
    wlp3s0:
      dhcp4: true
      access-points:
        '<SSID>':
          password: '<heslo-k-wifi>'
shell @ server
sudo chmod 600 /etc/netplan/50-wifi.yaml
sudo netplan generate && sudo netplan apply
ip -br addr show wlp3s0
  • chmod 600: v souboru je heslo k Wi-Fi, takže ho smí číst jen root,
  • netplan generate zkontroluje syntaxi, apply konfiguraci použije.

Pevná IP adresa

Router přiděluje adresy přes DHCP dočasně a adresa se může změnit. Na adrese serveru ale závisí SSH config na Macu, kubeconfig i certifikáty k3s. Proto jsme ji zafixovali DHCP rezervací: router zařízení s MAC adresou Wi-Fi karty notebooku vždy přidělí stejnou adresu.

Která krabička přiděluje adresy

Doma bývají často dva prvky za sebou:

text
internet ── router poskytovatele (ISP) ── vlastní Wi-Fi router ── notebook, Mac, iPad

Rezervace se dělá na tom routeru, který je bránou sítě s notebookem. To nemusí být krabička od poskytovatele. Kterou adresu brána má, zjistíš takto:

shell @ mac
route -n get default | grep gateway
shell @ server
ip route | grep default

V administraci routeru: typicky Advanced → Network → DHCP Server → Address Reservation → Add. Vybrat homelab ze seznamu připojených zařízení a přiřadit mu adresu.

Ověření, že router vrátí stejnou adresu:

shell @ server
sudo networkctl renew wlp3s0
ip -br addr show wlp3s0

Kdo rezervaci potřebuje

Pevnou adresu potřebuje jen zařízení, ke kterému se něco připojuje: server a NAS. Mac ani iPad ji nepotřebují. Navíc používají soukromou adresu Wi-Fi (náhodnou MAC), takže by na ně rezervace spolehlivě nefungovala.

Proč nešla otevřít správa routeru z Macu

shell @ mac
curl -skI https://<ip-routeru> | head -n 3
text
HTTP/1.1 200 Connection Established

Odpověď Connection Established vrací proxy server, ne router. Mac posílá webový provoz přes proxy, která domácí adresy nevidí. Správa routeru se otevřela z mobilu. Pro nástroje na Macu, které do domácí sítě potřebují, se proxy obchází proměnnou NO_PROXY, viz Klienti.