Мртав слушалац OpenVPN 2.5 на DD-WRT? Прочитајте генерисану конфигурацију
OpenVPN 2.5 одбија конфигурације које су старије верзије прихватале. На DD-WRT прочитајте генерисани фајл и дневник демона пре него што дирате firewall.
Мртав слушалац на DD-WRT обично значи да је демон изашао док је парсирао своју конфигурацију, а не да је правило firewall-а блокирало порт. OpenVPN 2.5 је затегнуо неколико подразумеваних вредности на које су се старије конфигурације ослањале, и генерисана конфигурација која је радила на старијој верзији може бити одбијена пре него што се сокет уопште отвори. Разлог је у дневнику самог рутера, а улаз у генерисаном фајлу. Читање оба у том редоследу је брже од било каквог хватања пакета.
Демон није firewall
Разлика је важна јер споља обе грешке изгледају исто: клијент пошаље руковање и не добије ништа. Једна је процес који не ради, а друга је процес који ради и филтрира.
Одвојите их двема проверама пре него што било шта промените, јер измена firewall-а на мртвом демону само додаје другу променљиву.
Прочитајте конфигурацију коју је DD-WRT генерисао
DD-WRT не даје OpenVPN-у текст који сте унели у веб интерфејс. Он уписује генерисану конфигурацију у /tmp/openvpn/openvpn.conf и покреће демон са тим фајлом, па се поља интерфејса и било који текст у Additional Config спајају пре него што их OpenVPN уопште види. Ако дебагујете формулар уместо генерисаног фајла, читате намеру, а не стварни улаз. Копирајте тај фајл на трајно место пре него што рестарт /tmp обрише.
Упоредите генерисани фајл са оним што сте намеравали, посебно тамо где интерфејс уписује директиву коју никада нисте изабрали. Падајући мени који емитује застарелу опцију невидљив је у формулару и смртоносан за демон.
Ако је генерисани фајл празан или недостаје, демон није ни стигао до покретања, а проблем је изнад OpenVPN-а.
Шта је OpenVPN 2.5 престао да прихвата
OpenVPN 2.5 је заменио ncp-ciphers са data-ciphers, и подигао подразумевану минималну верзију TLS-а на 1.2. Променио је и обраду компресије, тако да се партнер који нуди компресију одбија осим ако конфигурација то изричито не дозвољава, и означио је као застарела старија имена опција као што је ns-cert-type у корист remote-cert-tls. Свака од тих промена претвара раније исправну конфигурацију у грешку парсирања или преговарања.
Начин грешке зависи од директиве. Непозната или уклоњена опција зауставља демон при покретању, то је ваш мртав слушалац. Неслагање у преговарању пушта демон да ради и одбија клијенте, што са клијентске стране изгледа као проблем firewall-а.
Читајте прву грешку у дневнику, а не последњу. Парсирање се зауставља на првој лошој директиви, а све после тога је шум од заустављања.
Предуслови специфични за Broadcom
На Broadcom верзијама тунелски уређај мора да постоји пре него што демон може да га користи. Проверите да ли је tun модул учитан и да ли /dev/net/tun постоји, јер уређај који недостаје изазива грешку при покретању која нема никакве везе са сертификатима. Исто важи за помоћне скрипте које DD-WRT генерише за руте и DNS: ако их нема или нису извршне, демон може да се покрене и ипак не заврши подешавање.
Покрените демон у предњем плану са већим нивоом детаља над генерисаном конфигурацијом када вам је потребна права порука. Покретање у предњем плану исписује грешку парсирања коју је init скрипта прогутала.
Затим вратите нормалну услугу, јер ће се демон у предњем плану и init скрипта препирати око порта.
Докажите да слушалац постоји пре него што дебагујете клијенте
Потврдите процес и сокет одвојено: једна команда за демон који ради, друга за везани UDP порт на очекиваној адреси. Процес без сокета значи да је још у подешавању или везан за погрешан интерфејс. Тај пар је користан тест управо зато што једна половина не може бити тачна без друге.
Дебаговање на клијентској страни има смисла само када слушалац постоји. Тада проверите да ли се шифра и TLS подешавања клијента поклапају са data-ciphers листом сервера и његовом минималном верзијом, и да ли је порт заиста прослеђен рутеру.
Сачувајте генерисану конфигурацију и линију дневника која је доказала исправку. Следеће ажурирање фирмвера може поново да промени подразумеване вредности, а управо тај запис претвара понављање у петоминутну проверу.