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
Plán
- udelat zalohu celeho routeru (pres pravidelny backup)
- vytahnout sd kartu a udelat zalohu sd karty
- nahrat default openwrt img do routeru
- doinstalovat balicky pro extroot
- nabootovat extroot (ext4)
Realizace
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
- následně sysupgrade přes OpenWRT UI (force)
Extroot
- doinstalovaní balíčků pro extroot
- musel jsem stahovat ručně, router nebyl připojen k Internetu
- 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
HTTPS proxy
- vyzkoušet
- rozjet wireguard na gw
- funguje, ale když je v zóně LAN (ne WAN) ⇒ zalozit vlastni zonu
- 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 ..
- cfg se dost opakuje.. slo by asi pres includy? nebo nejake shared sekce
- chybi mi domeny lktb, teplo, tv…
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.1726780698.txt.gz · Poslední úprava: (upraveno mimo DokuWiki)
