it:jednodeskove-pocitace:bananapi

Rozdíly

Zde můžete vidět rozdíly mezi vybranou verzí a aktuální verzí dané stránky.

Odkaz na výstup diff

Obě strany předchozí revize Předchozí verze
Následující verze
Předchozí verze
it:jednodeskove-pocitace:bananapi [2024/01/29 23:44] Petr Nosekit:jednodeskove-pocitace:bananapi [2025/02/11 17:44] (aktuální) – [Konfigurace /etc/network/interfaces] Petr Nosek
Řádek 510: Řádek 510:
  
 Pokud se rozhodnu, že změním IP adresu zařízení, které už je zapsané v tomto souboru, často se děje, že se ještě nějakou dobu přiděluje stará IP adresa. Je proto potřeba vymazat starý záznam v tomto souboru.  Pokud se rozhodnu, že změním IP adresu zařízení, které už je zapsané v tomto souboru, často se děje, že se ještě nějakou dobu přiděluje stará IP adresa. Je proto potřeba vymazat starý záznam v tomto souboru. 
 +
 +Ještě mi pomohlo vypnout systemd-resolvd:
 +
 +<code bash>
 +systemctl stop systemd-resolvd
 +systemctl disable systemd-resolvd
 +systemctl daemon-reload
 +</code>
 +
 +Ukázalo se, že tento způsob není trvalý. Po aktualizaci systemd došlo k přepsání soubor **/lib/systemd/system/dnsmasq.service** a problém se opakoval. 
 +
 +=== Trvalá změna v dnsmasq.service ===
 +
 +Aby se změny v `dnsmasq.service` nepřepisovaly po aktualizacích systému, je potřeba vytvořit přepsání systemd jednotky namísto úpravy souboru v `/lib/systemd/system/`.
 +
 +Prvním krokem je vytvoření přepisovacího souboru pro systemd. Spusť:
 +
 +<code bash>
 +sudo systemctl edit dnsmasq
 +</code>
 +
 +Tento příkaz otevře editor pro přepsání konfigurace služby, aniž by byl upraven původní soubor.
 +
 +Do editoru vlož tento obsah:
 +
 +<code ini>
 +[Unit]
 +After=
 +After=network-online.target
 +</code>
 +
 +Tímto způsobem se přepíše původní hodnota `After=network.target` na `After=network-online.target`, ale hlavní jednotkový soubor v `/lib/systemd/system/` zůstane beze změny. Po vložení konfigurace ulož soubor a ukonči editor.
 +
 +Aby se změny projevily, je nutné načíst novou konfiguraci:
 +
 +<code bash>
 +sudo systemctl daemon-reexec
 +sudo systemctl daemon-reload
 +sudo systemctl restart dnsmasq
 +</code>
 +
 +Od této chvíle už žádná aktualizace nepřepíše tuto změnu.
 +
 +Ověření, zda se změna skutečně uplatnila, provedeme příkazem:
 +
 +<code bash>
 +systemctl cat dnsmasq
 +</code>
 +
 +Pokud je změna správně aplikována, měl by výstup obsahovat:
 +
 +<code ini>
 +# /etc/systemd/system/dnsmasq.service.d/override.conf
 +[Unit]
 +After=
 +After=network-online.target
 +</code>
 +
 +📌 **Prázdný řádek `After=` je důležitý!**  
 +Systemd tímto způsobem nejprve odstraní všechny existující `After=` direktivy a poté nastaví pouze `After=network-online.target`.
 +
 +Nyní se `dnsmasq.service` už nebude přepisovat při aktualizacích, protože úprava je bezpečně uložena v `override.conf`.
 +
 ==== Nastavení vm.min_free_kbytes ==== ==== Nastavení vm.min_free_kbytes ====
 Defaultní nastavení virtuální paměti v Armbianu je malé. Stávalo se mi pak, že po čase systém havaroval a hledal jsem příčinu. Defaultní nastavení virtuální paměti v Armbianu je malé. Stávalo se mi pak, že po čase systém havaroval a hledal jsem příčinu.
Řádek 901: Řádek 964:
 </code> </code>
  
-Musel jsem zakomentovat jeden řádek v souboru:+Musel jsem zakomentovat jeden řádek v souboru pro ignoraci všech zařízení a přidal jsem ignoraci pouze wifi:
  
 <code bash> <code bash>
Řádek 907: Řádek 970:
 [keyfile] [keyfile]
 #unmanaged-devices=interface-name:eth*,interface-name:wan*,interface-name:lan*,interface-name:br* #unmanaged-devices=interface-name:eth*,interface-name:wan*,interface-name:lan*,interface-name:br*
 +unmanaged-devices=interface-name:wlp*
 </code> </code>
  
Řádek 932: Řádek 996:
 </code> </code>
  
 +
 +Pak jsem experimentoval se zařízením eth0. Chtěl jsem ho také dát ignorovat, ale nefungovala mi síť. Nerozumím úplně vazbě, proč musí být eth0 spuštěné. V log souboru se mi vypisovala hlášení, že se snaží každých 5 minut připojit a neúspěšně. Tak jsem do souboru **/etc/NetworkManager/system-connections/eth0.nmconnection** přidal řádek **autoconnect=false**. Takto vypadá celý soubor:
 +
 +<code bash>
 +[connection]
 +id=eth0
 +uuid=7f2fe052-fe35-4c10-ac16-a09e12d8b7f6
 +type=ethernet
 +autoconnect=false
 +interface-name=eth0
 +
 +[ethernet]
 +
 +[ipv4]
 +method=disabled
 +
 +[ipv6]
 +addr-gen-mode=default
 +method=auto
 +
 +[proxy]
 +
 +</code> 
 +
 +==== Dnsmasq ====
 +
 +Dnsmasq nestartoval po spuštění. Musel jsem postupovat podle pokynů výše na této stránce.
 +
 +==== SSMTP ====
 +
 +<code bash>
 +apt install ssmtp
 +</code>
 +
 +Stačilo překopírovat původní nastavení.
 +
 +Dále některé programy chtěla nainstalovaný program mail. Zkusil jsem to vyřešit instalací:
 +
 +<code bash>
 +root@bananapir2:~# apt install bsd-mailx
 +</code>
  
  
Řádek 940: Řádek 1045:
 <adm warning>Je také potřeba přenést (editovat) soubor **/etc/default/ufw**. Na to jsem zapomněl a pěkně jsem se potrápil. </adm> <adm warning>Je také potřeba přenést (editovat) soubor **/etc/default/ufw**. Na to jsem zapomněl a pěkně jsem se potrápil. </adm>
  
 +
 +==== AIDE ====
 +
 +Instalaci jsem prováděl podle dřívějšího návodu [[it:server:monitoring:aide|]]. Všechno se mi podařilo, až na jednu věc. Skript  /etc/cron.daily/aide se nespouštěl. Po dalším náhledu jsem zjistil, že se spouští, ale neprobíhá dle očekávání.
 +
 +Takto vypadá obsah:
 +
 +<code bash>
 +#!/bin/sh
 +
 +# Skip if systemd is running.
 +if [ -d /run/systemd/system ]; then
 +    exit 0
 +fi
 +
 +SCRIPT="/usr/share/aide/bin/dailyaidecheck"
 +if [ -x "${SCRIPT}" ]; then
 +    if command -v capsh >/dev/null; then
 +        capsh --caps="cap_dac_read_search,cap_audit_write+eip cap_setpcap,cap_setuid,cap_setgid+ep" --keep=1 --user=_aide --addamb=cap_dac_read_search,cap_audit_write -- -c "${SCRIPT} --crondaily"
 +    else
 +        # no capsh present, run with full capabilities
 +        "${SCRIPT}" --crondaily
 +    fi
 +fi
 +</code>
 +
 +Na začátku propadnu podmínkou kvůli systemd. Zjistil jsem, že je tato konfigurace žádoucí a o AIDE se v Debian Bookworm stará systemd. 
 +
 +<code bash>
 +systemctl status dailyaidecheck.service
 +</code>
 +
 +Případně editace:
 +
 +<code bash>
 +systemctl edit dailyaidecheck.service
 +</code>
 +
 +Zdá se, že AIDE check se díky systemd spouští mimo Cron a v defaultní instalaci kolem 4 hodiny ranní.Zatím jsem nezkoumal, jak to přenastavit, ale přes Cron cesta nepovede.
 +
 +Vynutit kontrolu lze restartem služby:
 +
 +<code bash>
 +systemctl restart dailyaidecheck.service
 +</code>
 +
 +
 +Bohužel AIDE check mi pořád nefungoval a pak jsem našel v logu tohle:
 +
 +<code bash>
 +Jan 31 04:25:10 bananapir2 dailyaidecheck[12877]: ln: pevný odkaz '/var/log/aide//aide.log.0' na '/var/log/aide/aide.log' nebylo možné vytvořit: Operace není povolena
 +Jan 31 04:25:10 bananapir2 dailyaidecheck[12868]: Error hardlinking /var/log/aide/aide.log to /var/log/aide//aide.log.0
 +Jan 31 04:25:10 bananapir2 systemd[1]: dailyaidecheck.service: Main process exited, code=exited, status=8/n/a
 +Jan 31 04:25:10 bananapir2 systemd[1]: dailyaidecheck.service: Failed with result 'exit-code'.
 +Jan 31 04:25:10 bananapir2 systemd[1]: Failed to start dailyaidecheck.service - daily AIDE check.
 +</code>
 +
 +Ve zkratce je to tak, že systemd nechce spouštět AIDE s právy roota, ale spouští pod uživatelem **_aide**. Testoval jsem sice práva zápisu, že uživatel **_aide** může do složky /var/log/aide zapisovat a vytvářet symlinky, ale problém stále přetrvával. Nekonec jsem to vyřešil tak, že spouštím AIDE s právy roota. 
 +
 +<code bash>
 +systemctl edit dailyaidecheck.service
 +</code>
 +
 +<code bash>
 +[Service]
 +User=root
 +Group=adm
 +</code>
 +
 +A nezapomenout na:
 +
 +<code bash>
 +sytemctl daemon-reload
 +</code>
 +
 +
 +==== změna velikosti zRAM na logování ====
 +
 +V armbianu je zapnuta funkce, že se ukousne kousek paměti RAM a do ní se loguje, aby nedocházelo k zatěžování SD karty. Jakmile dojde k naplnění tohoto kousku do 75%, tak se jednorázově přenesou logy na SD kartu a uvolní se RAM paměť.
 +
 +Můj systém loguje docela dost. Defaultně je nastavena velikost této logovací RAM na 50 MB. Když jsem ji chtěl zvětšit, tak je potřšeba editova záznam v souboru **/etc/default/armbian-ramlog**.
 +
 +<code bash>
 +#SIZE=50M
 +SIZE=150M
 +</code>
 +
 +
 +
 +==== Instalace Logcheck ====
 +
 +<code bash>
 +apt install logcheck logcheck-database
 +</code>
 +
 +A pak jsem si přenesl jeden soubor, ve kterém mám uživatelskou konfiguraci.
 +
 +Narazil jsem ale na problém. Hodně mnou nadefinovaných pravidel přestalo fungovat. Při podrobnějším zkoumání jsem zjistil, že mám časovou značku ve formátu: "**2024-01-30T22:02:11.658801+01:00**". Logcheck ale očekává formát:  "**Jan 30 23:05:07**". I když jsem se snažil pravidla přespat a v [[https://regex101.com/|regex101]] fungovala, tak mi stále propadávala a nemohl jsem přijít jak na to. Nakonec jsem problém vyřešil úpravou syslogu, kdy jsem změnil formát časové značky na standardní, jak je popsáno níže.
 +
 +Pro otestování konfigurace jsou pak informace zde: [[it:server:monitoring:logcheck|]]
 +
 +
 +==== Rsyslog ====
 +
 +Musel jsem změnit čsaovou značku při logování, aby byla v klasickém formátu "**Jan 30 23:05:07**". Vycházel jsem z [[https://www.baeldung.com/linux/syslog-change-date-format|článku]] a přidal jsem do **/etc/rsyslog.conf** dle instrukcí řádek **$ActionFileDefaultTemplate RSYSLOG_TraditionalFileFormat**:
 +
 +<code bash>
 +sudo cat /etc/rsyslog.conf
 +...truncated...
 +##########################
 +#### GLOBAL DIRECTIVES ####
 +###########################
 +...truncated...
 +$ActionFileDefaultTemplate RSYSLOG_TraditionalFileFormat
 +...truncated...
 +</code>
 +
 +
 +<code bash>
 +systemctl restart rsyslog
 +</code>
 +
 +==== Logwatch ====
 +
 +Vycházel jsem z dřívějšího návodu: [[it:server:monitoring:logwatch|]]
  
  
Řádek 947: Řádek 1177:
 root@bananapir2:~# apt install softether-vpnserver root@bananapir2:~# apt install softether-vpnserver
 </code>  </code> 
 +
 +Po dalším zkoumání jsem zjistil, že softether jsou 2 vývojové větve. Jedna je stable a druhá je develop. V rámci debian balíčku jsem nainstaloval verzi 5.01 Developer Edition - build 9674. Byla sestaven 16.10.2022. Paradoxně je starší, než verze Stable edition aktuálně verze 4.43, Build 9799 z data 31.8.2023. 
 +
 +Nepochopil jsem, proč stable a develop edition mají rozdílné číslování, které podle mě způsobuje zmatek. Třeba časem přijdu na to, jakou to má logiku.
 +
 +Každopádně jsem se rozhodl verzi ze správce balíčků odinstalovat a zkompilovat si vlastní z verze stable podle návodu [[it:software:softether|]].
  
  
Řádek 964: Řádek 1200:
  
  
-**KLient**+**Klient**
 <code bash> <code bash>
 root@bananapir2:/etc/wireguard# wg genkey | sudo tee /etc/wireguard/client_private.key | wg pubkey | sudo tee /etc/wireguard/client_public.key root@bananapir2:/etc/wireguard# wg genkey | sudo tee /etc/wireguard/client_private.key | wg pubkey | sudo tee /etc/wireguard/client_public.key
Řádek 974: Řádek 1210:
 root@bananapir2:/etc/wireguard# touch wg0.conf root@bananapir2:/etc/wireguard# touch wg0.conf
 </code> </code>
 +
 +
  • it/jednodeskove-pocitace/bananapi.1706571887.txt.gz
  • Poslední úprava: 2024/01/29 23:44
  • autor: Petr Nosek