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
  • logy lze zobrazit přes logread
  • 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.83.145.2/24'

config wireguard_wg0
        option description 'peer1'
        option public_key '*****'
        option preshared_key '*****'
        list allowed_ips '10.83.145.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'

HTTPS proxy

FIXME - vyzkoušet

  • nastavit fw 80/443 z pipi na gw wireguard
    • to uz je vlastne nastaveno tim, ze jsem prehodil ip :)
  • spustit ngix reverzni proxy na rpi a rpi4 z domen *.bari2.eu
    • wiki, min, reality na pi
    • doma, z2m, data(nextcloud) na pi4
    • forwardovat acme location slozku na lokalni storage
    • obsluhovat https certifikaty
    • default location
      • pristup z non LAN IP bude bila stranka (ochrana)
      • pristup z LAN IP bude bude admin luci rozhrani
        • pro ip lze pouzit map, ale neumi CIDR. Pak je tam nejaky geo…
        • iface neumi, ale lze pouzit server IP a dat listen jen na tu IP.. to je asi nej
  • jak zajistit default location
    • a) uhttpd spustim jen nad 10.10.11.1 a ngix pobezi nad wg0 IP
      • nevyhoda je, ze zmnou IP prijdu o pristup do admin prostredi.. ale mam jeste ssh :)
      • vyhoda je jednoduchost :)
    • b) firewall pravidlo, co pristup na 80/443 z wg0 posle na ngix port 8080,8081
      • tohle pravidlo muze byt vlastne uz i na pipi
      • kdybych presel z pipi na verejnou ip, tak bych pravidlo musel dostat do gw
    • c) nginx bude rozhodovat posilat na utthpd bezici na jinem portu
      • nevyhoda je, ze pro pristup na web admin musim zadavat port
  • libi se mi reseni b) :D
  • udalal jsem:
    • rozjel jsem acme a ngix fw pro min, reality, wiky a default
    • chyby acme / ngins jsou v logrotate.. hodne uzitecne
    • default server jde do /www/acme .. kde je index.html, prazdny
    • tri domeny jdou na pi, je tam redirect na https a je tam platny cert z acme
    • vsehcny tri maji acme location.. aby fungovala verifikace
    • vypnul jsem notifikaci nginx pri zmene cert.. protoze jsem mel velky problem pri prechodu ze staging.. je mozne zapnout pozdeji.. ale nesmim mit nic staging :D on to totiz presune a restart nginx pak nenajde cert a nenabehne :D
    • mam port forwarding na obejidit nginx.. ale jsou disablovana
    • nginx jsem konfiguroval pres conf.. vypnul jsem podporu uci.. neslo
  • 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
opkg install nginx-ssl luci-app-acme acme-dnsapi
erver {
    listen 443 ssl;
    server_name wiki.example.com;

    ssl_certificate /etc/acme/wiki.example.com/fullchain.pem;
    ssl_certificate_key /etc/acme/wiki.example.com/privkey.pem;

    location / {
        proxy_pass https://10.10.10.1;
        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;
    }
}

<code>
server {
    listen 443 ssl;
    server_name doma.example.com;

    ssl_certificate /etc/acme/doma.example.com/fullchain.pem;
    ssl_certificate_key /etc/acme/doma.example.com/privkey.pem;

    location / {
        proxy_pass https://10.10.10.2;
        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 80;
  server_name example.com;
  # Umístění ACME výzvy do složky webroot
  location /.well-known/acme-challenge/ {
      root /www/acme;  # Adresář, kde ACME klient uloží soubory pro ověření
  }
  # Nastavení reverzní proxy na jiný stroj v síti
  location / {
      proxy_pass http://192.168.1.100;  # IP adresa stroje, na který chcete přesměrovat
      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;
  }

} </code>

homerouteriv.1727204595.txt.gz · Poslední úprava: (upraveno mimo DokuWiki)

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki