Uživatelské nástroje

Nástroje pro tento web


homerouteriv

Toto je starší verze dokumentu!


HomeRouter IV

Požadavky

  • aktualizovat openwrt na rspro
    • aby podporoval nové šifrovací klíče SSH a měl záplaty na zranitelnosti
    • aby obsahoval podporu PPPoE potřebnou pro současný Internet
  • snadno opakovatelné aktualizování na další verzi OpenWRT (co nejméně specialit)
  • extroot vlastně už moc nepotřebuji, ale raději ho využít
    • web server, tvheadend … mam uz na PI
    • možná by se hodil tcpdump, iftop, aircrack
  • HTTPS proxy na moje web servery s automatickou obnovou certifikátu přes let's encrypt pro veřejnou IP adresu dostupnou přes Wireguard

Základ

Základní image

tftp 192.168.1.20 -m binary -c put openwrt-22.03.5-ath79-generic-ubnt_routerstation-pro-squashfs-factory.bin
  • rs232 rika:
Firmware Version: RSPRO.ar7100pro.v6.0.0-OpenWrt-r20134-5f15225c1e␍␊
'kernel' size, 0x00226e50 is not a multiple of block size, 0x00010000! Abort.␍␊
tftp 192.168.1.20 -m binary -c put openwrt-19.07.10-ath79-generic-ubnt_routerstation-pro-squashfs-factory.bin

Extroot

  • kmod-usb-storage mod-usb-core kmod-usb2 - základní USB subsystém
    • vyžaduje kmod-scsi-core
  • kmod-mmc - driver pro SD/MMC karty
    • vyžaduje mod-usb-serial
  • kmod-fs-ext4 - pro použitý filesystém na externím úložišti
  • block-mount - přepojení souborového systému na externí úložiště během init
    • vyžaduje kmod-lib-crc16
  • e2fsprogs - hodí se pro vytváření FS (není nutné)
opkg install kmod-usb-storage mod-usb-core kmod-usb2 kmod-mmc block-mount

Příprava SD karty

  • SD kartu jsem naformátoval na ext4 v PC, abych nemusel instalovat závislosti e2fsprogs ručně
pkg_hash_check_unresolved: cannot find dependency libuuid1 for e2fsprogs
pkg_hash_check_unresolved: cannot find dependency libext2fs2 for e2fsprogs
  • po připojení do routeru
mkdir /tmp/newroot
mkdir /tmp/currroot
mount --bind / /tmp/currroot
mount /dev/sda /tmp/newroot/
tar -C /tmp/currroot -cvf - . | tar -C /tmp/newroot -xvf -
sync
  • upravil jsem fstab
    • není potřeba nastavovat noatime, protože „lepší“ relatime je zapnutý implicitně
      • lze zkontrolovat přes ;cat /proc/mounts;
config mount
	option target	/
	option device	/dev/sda
	option fstype	ext4
	option options	rw
	option enabled	1
	option enabled_fsck 0
  • upravil jsem /etc/banner, abych věděl, že naběhl extroot

Doinstalování balíčků na extroot

  • podpora wifi
    • wireless-tools - wifi subsystém
    • kmod-ath9k - driver pro R52n
    • wpad-basic - stačí mi WPA PSK + 802.11r
  • e2fsprogs - obsahuje fsck
  • iftop, tcpdump, aircrack-ng

Doladění

  • změna cache balíčku do trvalé paměti
    • Navigate to LuCI → System → Software → Configuration to change /var/opkg-lists to /usr/lib/opkg/lists.zdroj
    • nebo ručně v /etc/opkg.conf

Wireguard

  • instalace
opkg install luci-proto-wireguard // podpora v LUCI WebUI + závislosti
opkg install luci-app-wireguard // zobrazování stavu ve WebUI
  • konfiguraci jsem provedl přes uci set, výsledek je v /etc/config/network
  • musel jsem vytvořit vlastní firewall zónu. Když jsem použil WAN tak to nějak zahazovalo odesílané pakety a nenastal vůbec handshake
  • pro aplikaci změn konfigurace lze použít /etc/init.d/network restart
  • v konfiguraci wireguard lze zapnout debug
  • povolil jsem routování přes route_allowed_ips, ale ve firewall zóně jsem to nepovolil pro LAN
config interface 'wg0'
        option proto 'wireguard'
        option private_key '*****'
        list addresses '10.0.0.2/24'

config wireguard_wg0
        option description 'peer1'
        option public_key '*****'
        option preshared_key '*****'
        list allowed_ips '10.0.0.1'
        list allowed_ips '172.17.17.0/24'
        option route_allowed_ips '1'
        option endpoint_host 'peer1.example.com'
        option persistent_keepalive '25'
        option endpoint_port '51820'

ACME

  • pro testování je vhodně použít staging
  • používám ověření webroot s cestou /www/acme
  • konfiguroval jsem přes uci
config cert 'wiki'
        option use_staging '0'
        option keylength '2048'
        option update_nginx '0'
        option update_haproxy '0'
        option enabled '1'
        list domains 'wiki.bari2.eu'
        option update_uhttpd '0'
        option validation_method 'webroot'
        option webroot '/www/acme'
  • vypnul jsem notifikaci nginx při změně cert..
    • měl jsem problém při přechodu ze staging, kdy po zpracování prvního certifikátu poslal notifikaci a nginx už nenastartoval, protože acme na začátku přesunul všechny nastavené staging certifikáty a nginx to už nenašel
    • později lze klidně zapnout
  • logy lze číst v logrotate, užitečné při ladění

HTTPS proxy

  • TODO
    • kdyz si udelam vlastni domenu.. neco jako domov.bari2.eu.. tak to muzu pres proxy a certifikat posilat na 8123 ..
      • nebo muzu nechat aj ten port.. ale klicove je, at to ma platny cert :D
    • cfg se dost opakuje.. slo by asi pres includy? nebo nejake shared sekce
    • chybi mi domeny lktb, teplo, tv…
    • je na zvazeni, zda potrebuji ssl u min, reality.. doma… mozna by stacilo to jen z venku :) obdobne HA.. mohl by byt bez z domaci site..
    • kdybych mel hvezdickovy certifikat, tak muzu mit jen jeden config pro nekolik domen
    • hvezdicckovy se musi overtovat pres dns chanalange.. ale wedos api a skript pro acme by to meli dat
    • zpřístupnit z2m aj z venku? přidat tam auth?
opkg install nginx-ssl luci-app-acme acme-dnsapi
  • vypnout konfiguraci přes luca, protože nemá takové možnosti
vim /etc/config/nginx
config main global
        option uci_enable 'false'
  • využít luca template jako základní konfigurák
cp /etc/nginx/uci.conf.template /etc/nginx/nginx.conf
  • změnil jsem v něm akorát root na /www/acme, ve kterém jsem vytvořil prázdný index.html
  • pro každý web jsem vytvořil následující config v /etc/nginx/conf.d/
server {
    listen 5443 ssl;
    server_name wiki.bari2.eu;

    ssl_certificate /etc/acme/wiki.bari2.eu/wiki.bari2.eu.cer;
    ssl_certificate_key /etc/acme/wiki.bari2.eu/wiki.bari2.eu.key;

    location /.well-known/acme-challenge/ {
        default_type "text/plain";
        root /www/acme/;
    }

    location / {
        proxy_pass https://192.168.0.8;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
    }
}

server {
    listen 5080;
    server_name wiki.bari2.eu;

    location /.well-known/acme-challenge/ {
        default_type "text/plain";
        root /www/acme/;
    }

    location / {
        return 301 https://$host$request_uri;
    }
}
  • naslouchám záměrně na jiném portu, protože 80/443 je obsazen OpenWRT webui
    • šlo to vyřešit i tak, že bych webui spustil jen nad určitou IP adresou rozhraní, ale tohle je více robustní na změnu IP adresy
  • na druhé straně wireguard tunelu se požadavky na 80/443 směřují na nové porty.
    • šlo to vyřešit i tak, že by změnu portu dělal firewall na gw
homerouteriv.1727206356.txt.gz · Poslední úprava: (upraveno mimo DokuWiki)

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki