Mŕtvy listener na DD-WRT zvyčajne znamená, že démon skončil pri parsovaní svojej konfigurácie, nie že pravidlo firewallu zablokovalo port. OpenVPN 2.5 sprísnil niekoľko predvolených hodnôt, na ktoré sa staršie konfigurácie spoliehali, a vygenerovaná konfigurácia, ktorá fungovala na staršom builde, môže byť odmietnutá skôr, než sa socket vôbec otvorí. Dôvod je v logu samotného routera a vstup vo vygenerovanom súbore. Čítať oboje v tomto poradí je rýchlejšie než akékoľvek zachytávanie paketov.

Démon nie je firewall

Rozdiel je dôležitý, pretože zvonku obe zlyhania vyzerajú rovnako: klient pošle handshake a nič nedostane. Jedno je proces, ktorý nebeží, a druhé je proces, ktorý beží a filtruje.

Oddeľte ich dvoma kontrolami, skôr než čokoľvek zmeníte, pretože úprava firewallu na mŕtvom démonovi len pridá druhú premennú.

Prečítajte si konfiguráciu, ktorú DD-WRT vygeneroval

DD-WRT neodovzdáva OpenVPN text, ktorý ste napísali do webového rozhrania. Zapíše vygenerovanú konfiguráciu do /tmp/openvpn/openvpn.conf a spustí démona s týmto súborom, takže polia rozhrania a akýkoľvek text v Additional Config sa zlúčia skôr, než ich OpenVPN vôbec uvidí. Ak ladíte formulár namiesto vygenerovaného súboru, čítate zámer a nie skutočný vstup. Skopírujte ten súbor na trvalé miesto, kým ho reštart /tmp nevymaže.

Porovnajte vygenerovaný súbor s tým, čo ste zamýšľali, najmä tam, kde rozhranie zapisuje direktívu, ktorú ste nikdy nevybrali. Rozbaľovací zoznam, ktorý vydáva zastaranú voľbu, je vo formulári neviditeľný a pre démona smrteľný.

Ak je vygenerovaný súbor prázdny alebo chýba, démon sa vôbec nedostal k štartu a problém je nad OpenVPN.

Čo OpenVPN 2.5 prestal prijímať

OpenVPN 2.5 nahradil ncp-ciphers za data-ciphers, a zvýšil predvolenú minimálnu verziu TLS na 1.2. Zmenil aj spracovanie kompresie, takže protistrana, ktorá ponúka kompresiu, je odmietnutá, ak to konfigurácia výslovne nepovoľuje, a označil za zastarané staršie názvy volieb, ako je ns-cert-type v prospech remote-cert-tls. Každá z týchto zmien mení predtým funkčnú konfiguráciu na zlyhanie parsovania alebo vyjednávania.

Režim zlyhania závisí od direktívy. Neznáma alebo odstránená voľba zastaví démona pri štarte, to je váš mŕtvy listener. Nesúlad pri vyjednávaní nechá démona bežať a odmieta klientov, čo z klientskej strany vyzerá ako problém firewallu.

Čítajte prvú chybu v logu, nie poslednú. Parsovanie sa zastaví na prvej zlej direktíve a všetko po nej je šum z ukončenia.

Predpoklady špecifické pre Broadcom

Na buildoch pre Broadcom musí tunelové zariadenie existovať skôr, než ho démon môže použiť. Skontrolujte, či je modul tun načítaný a či /dev/net/tun existuje, pretože chýbajúce zariadenie spôsobí zlyhanie štartu, ktoré nemá nič spoločné s certifikátmi. To isté platí pre pomocné skripty, ktoré DD-WRT generuje pre trasy a DNS: ak chýbajú alebo nie sú spustiteľné, démon môže naštartovať a napriek tomu nedokončiť svoje nastavenie.

Spustite démona na popredí s vyššou podrobnosťou na vygenerovanú konfiguráciu, keď potrebujete skutočnú správu. Beh na popredí vypíše chybu parsovania, ktorú init skript prehltol.

Potom obnovte bežnú službu, pretože démon na popredí a init skript sa budú hádať o port.

Dokážte, že listener existuje, skôr než začnete ladiť klientov

Potvrďte proces a socket oddelene: jeden príkaz pre bežiaceho démona, druhý pre naviazaný UDP port na očakávanej adrese. Proces bez socketu znamená, že je ešte v nastavovaní alebo naviazaný na nesprávne rozhranie. Táto dvojica je užitočný test práve preto, že jedna polovica nemôže platiť bez druhej.

Ladenie na strane klienta má zmysel až po tom, čo listener existuje. Potom skontrolujte, či šifra a nastavenia TLS klienta zodpovedajú data-ciphers zoznamu servera a jeho minimálnej verzii, a či je port skutočne presmerovaný na router.

Uchovajte vygenerovanú konfiguráciu a riadok logu, ktorý opravu dokázal. Ďalšia aktualizácia firmvéru môže predvolené hodnoty znova zmeniť a práve tento záznam mení opakovanie na päťminútovú kontrolu.

Súvisiace články