Uživatelské nástroje

Nástroje pro tento web


homerouteriv

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í revizePředchozí verze
Následující verze
Předchozí verze
homerouteriv [2024/09/19 23:21] – [HTTPS proxy] djbuldoghomerouteriv [2025/08/28 10:09] (aktuální) – upraveno mimo DokuWiki 127.0.0.1
Řádek 1: Řádek 1:
 ====== HomeRouter IV ====== ====== HomeRouter IV ======
  
-==== Požadavky ====+===== Požadavky =====
  
   * aktualizovat openwrt na rspro   * aktualizovat openwrt na rspro
Řádek 10: Řádek 10:
     * web server, tvheadend ... mam uz na PI     * web server, tvheadend ... mam uz na PI
     * možná by se hodil tcpdump, iftop, aircrack     * možná by se hodil tcpdump, iftop, aircrack
-  * [[#https_proxy|HTTPS proxy]] na moje web servery s automatickou obnovou certifikátu+  * [[#https_proxy|HTTPS proxy]] na moje web servery s automatickou obnovou certifikátu přes [[#acme|let's encrypt]] pro veřejnou IP adresu dostupnou přes [[#wireguard|Wireguard]]
  
-==== Plán ==== +===== Základ =====
- +
-  * 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 Základní image
Řádek 108: Řádek 100:
     * nebo ručně v /etc/opkg.conf     * nebo ručně v /etc/opkg.conf
  
-==== HTTPS proxy ====+===== Wireguard =====
  
-FIXME - vyzkoušet+  * instalace
  
-  * rozjet wireguard na gw +<code
-    * funguje, ale když je v zóně LAN (ne WAN) =zalozit vlastni zonu +opkg install luci-proto-wireguard // podpora v LUCI WebUI + závislosti 
-  * nastavit fw 80/443 z pipi na gw wireguard +opkg install luci-app-wireguard // zobrazování stavu ve WebUI 
-    * to uz je vlastne nastaveno tim, ze jsem prehodil ip :) +</code>
-  * 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 +  * konfiguraci jsem provedl přes uci set, výsledek je v ''/etc/config/network'' 
-    a) uhttpd spustim jen nad 10.10.11.1 ngix pobezi nad wg0 IP +  musel jsem vytvořit vlastní firewall zónuKdyž jsem použil WAN tak to nějak zahazovalo odesílané pakety nenastal vůbec handshake 
-      nevyhoda je, ze zmnou IP prijdu o pristup do admin prostredi.. ale mam jeste ssh :) +  pro aplikaci změn konfigurace lze použít ''/etc/init.d/network restart'' 
-      * vyhoda je jednoduchost :) +  v konfiguraci wireguard lze zapnout debug 
-    * b) firewall pravidlo, co pristup na 80/443 z wg0 posle na ngix port 8080,8081 +  povolil jsem routování přes ''route_allowed_ips''ale ve firewall zóně jsem to nepovolil pro LAN
-      tohle pravidlo muze byt vlastne uz i na pipi +
-      kdybych presel z pipi na verejnou iptak 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: +<code> 
-    * rozjel jsem acme a ngix fw pro min, reality, wiky a default +config interface 'wg0' 
-    chyby acme / ngins jsou v logrotate.. hodne uzitecne +        option proto 'wireguard' 
-    * default server jde do /www/acme .. kde je index.html, prazdny +        option private_key '*****' 
-    tri domeny jdou na pi, je tam redirect na https a je tam platny cert z acme +        list addresses '10.0.0.2/24' 
-    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 +config wireguard_wg0 
-    mam port forwarding na obejidit nginx.. ale jsou disablovana +        option description 'peer1' 
-    nginx jsem konfiguroval pres conf.. vypnul jsem podporu uci.. neslo  +        option public_key '*****' 
-  * TODO +        option preshared_key '*****' 
-    * kdyz si udelam vlastni domenu.. neco jako domov.bari2.eu.. tak to muzu pres proxy a certifikat posilat na 8123 ..  +        list allowed_ips '10.0.0.1' 
-      * nebo muzu nechat aj ten port.. ale klicove je, at to ma platny cert :D +        list allowed_ips '172.17.17.0/24' 
-    cfg se dost opakuje.. slo by asi pres includy? nebo nejake shared sekce +        option route_allowed_ips '1' 
-    * chybi mi domeny lktbteplotv...  +        option endpoint_host 'peer1.example.com' 
-    * je na zvazenizda potrebuji ssl min, reality.. doma... mozna by stacilo to jen z venku :) obdobne HA.. mohl by byt bez z domaci site.. +        option persistent_keepalive '25' 
 +        option endpoint_port '51820' 
 +</code> 
 + 
 +===== ACME ===== 
 + 
 +  * pro testování je vhodně použít staging 
 +  používám ověření webroot s cestou /www/acme 
 +  * konfiguroval jsem přes uci 
 + 
 +<code> 
 +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' 
 +</code> 
 + 
 +  vypnul jsem notifikaci nginx při změně cert..  
 +    * měl jsem problém při přechodu ze stagingkdy po zpracování prvního certifikátu poslal notifikaci a nginx už nenastartovalprotož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 =====
  
 <code> <code>
 opkg install nginx-ssl luci-app-acme acme-dnsapi opkg install nginx-ssl luci-app-acme acme-dnsapi
 </code> </code>
 +
 +  * vypnout konfiguraci přes luca, protože nemá takové možnosti
  
 <code> <code>
-erver { +vim /etc/config/nginx 
-    listen 443 ssl; +config main global 
-    server_name wiki.example.com;+        option uci_enable 'false' 
 +</code>
  
-    ssl_certificate /etc/acme/wiki.example.com/fullchain.pem; +  * využít luca template jako základní konfigurák
-    ssl_certificate_key /etc/acme/wiki.example.com/privkey.pem;+
  
-    location / { +<code> 
-        proxy_pass https://10.10.10.1; +cp /etc/nginx/uci.conf.template /etc/nginx/nginx.conf 
-        proxy_set_header Host $host; +</code> 
-        proxy_set_header X-Real-IP $remote_addr; + 
-        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; +   * změnil jsem v něm akorát root na /www/acme, ve kterém jsem vytvořil prázdný index.html 
-        proxy_set_header X-Forwarded-Proto $scheme; +   * pro každý web jsem vytvořil následující config v /etc/nginx/conf.d/
-    } +
-}+
  
 <code> <code>
 server { server {
-    listen 443 ssl; 
-    server_name doma.example.com; 
  
-    ssl_certificate /etc/acme/doma.example.com/fullchain.pem+    listen 6666 ssl; 
-    ssl_certificate_key /etc/acme/doma.example.com/privkey.pem;+    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; 
 + 
 +    include conf.d/location-acme.inc; 
 +    include conf.d/location-pi-fwd.inc; 
 + 
 +
 + 
 +server { 
 + 
 +    listen 7777; 
 +    server_name wiki.bari2.eu; 
 + 
 +    include conf.d/location-acme.inc; 
 +    include conf.d/location-https-fwd.inc;
  
-    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; 
-    } 
 } }
 </code> </code>
  
 +  * location-acme.inc - slouží ke zpřístupněni adresáře, kam acme dává dočasné soubory pro ověření vlastnictví domény. Pro každou doménu mám stejnou složku, protože se to ověřuje vždy sekvenčně a navzájem se neovlivňuje.
 +
 +<code>
 +location /.well-known/acme-challenge/ {
 +        default_type "text/plain";
 +        root /www/acme/;
 +}
 +</code>  
 +
 +  * location-https-fwd.inc - slouží k přesměrování http požadavku na https. Má cenu jen pro domény, kterým spravuji certifikáty.
 +
 +<code>
 +location / {
 +  return 301 https://$host$request_uri;
 +}
 +</code>  
 +
 +  * location-pi-fwd.inc - přesměrování na pi s weby, na https port.
 +
 +<code>
 +location / {
 + proxy_pass https://192.168.0.5;
 + 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>  
 +
 +  * weby, kterým nespravuji certifikát, posílám na pi web server.
 +
 +<code>
 server { server {
-    listen 80+    listen 7777 ssl
-    server_name example.com;+    server_name _;
  
-    # Umístění ACME výzvy do složky webroot +    ssl_certificate conf.d/default.crt; 
-    location /.well-known/acme-challenge/+    ssl_certificate_key conf.d/default.key;
-        root /www/acme # Adresář, kde ACME klient uloží soubory pro ověření +
-    }+
  
-    # Nastavení reverzní proxy na jiný stroj v síti +    # mohl bych sem dat acme include, aby to umelo overit jakoukoliv domenu 
-    location / { +    # je to ale zbytecne, pokud ten ssl pak nepouzivam... tak jsem to zrusil 
-        proxy_pass http://192.168.1.100;  IP adresa strojena který chcete přesměrovat +
-        proxy_set_header Host $host; + 
-        proxy_set_header X-Real-IP $remote_addr+# pokud zadny server name nema exact mach (nebo regular/wildcard) 
-        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for+# vezme prvni unmatched server_name na tom portu 
-        proxy_set_header X-Forwarded-Proto $scheme; +# takze zalezi na poradi .. ten default musi byt prvni 
-    }+hodnota "_" je jen nikdy nematchnuta hodnotaco nejkratsi :) 
 + 
 +server { 
 +    listen 8080
 +    server_name _
 + 
 +    # vse co neznam poslu na pi 
 +    include conf.d/location-pi-http-fwd.inc;
 } }
 </code> </code>
 +
 +  * 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.1726780908.txt.gz · Poslední úprava: (upraveno mimo DokuWiki)

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki