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
- 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
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
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
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?
homerouteriv.1727207868.txt.gz · Poslední úprava: (upraveno mimo DokuWiki)
