OpenVPN се повезује, али ништа не тече: пронађите слој на ком пакет пада
Повезан тунел без саобраћаја има најмање пет узрока. Докажите пријемник, ухватите спољни пакет, а затим нека бројачи или траг именују правило.
OpenVPN каже повезано, а саобраћај се не креће, реченица која покрива најмање пет неповезаних кварова. Уређивање правила заштитног зида пре него што знате који слој отказује умножава непознанице и оставља следећем инжењеру неред. Радите уместо тога од процеса ка споља, јер сваки корак испод или чисти једну фазу или сужава место где пакет умире. Редослед је овде важан: снимак узет пре него што знате која је адреса везана доказаће нешто, само не оно што вам треба.
Сокет је или везан или није
Услуга која пријављује активност и даље може бити везана за адресу или транспорт који никада нисте намеравали. Питајте сам сокет: ss -lunp наводи UDP слушаоце, а ss -ltnp наводи TCP, и колона коју вреди читати је локална адреса, а не стање.
Празан одговор обично значи једно од три: процес је изашао после покретања, учитао је другу конфигурациону датотеку или слуша на адреси различитој од оне на коју се позива.
ss -lunp | grep 1194
ss -ltnp | grep 1194
Директива local прикива слушаоца на једну адресу, па клијент усмерен другде на истом домаћину бива одбијен док услуга споља и даље изгледа здраво. Назив инстанце такође може показивати на датотеку коју никада нисте уредили, што се дешава на домаћинима који покрећу два профила упоредо.
Ухватите спољни пакет, а не тунел
Филтрирајте на физичком интерфејсу и стварном порту, уз свој интерфејс: tcpdump -ni eth0 udp port 1194. Одлазни пакети без ичега што се враћа упућују на оно што је узводно: филтрирање провајдера, NAT уређај или удаљену адресу која није она коју мислите. Тишина у оба смера упућује на клијентско рутирање или локални заштитни зид. Одговори који стижу без напретка тунела упућују на контролни канал, односно неслагање кључа или шифре, а не на филтрирање.
Ухватите оба смера и држите датотеку кратком. Дуги снимак закопава занимљиве три секунде, а одговор готово увек лежи у првој размени.
Прво бројачи, траг само када лажу
Почните са бројачима, јер не коштају ништа. Или nft list ruleset или iptables -L -n -v одговара на једино питање које је овде важно: да ли се правило поклопило? Редослед одлучује исход, јер прво поклапање побеђује, зато широки DROP пре каснијег ACCEPT оставља тај ACCEPT мртав и зато додавање правила тако ретко поправља нешто.
Власништво такође спотиче људе. Језгро локално створене пакете приписује процесу који је отворио сокет, а OpenVPN обично ради као root, па правило везано за обичан кориснички ID никада не види саобраћај самог тунела. Проверите UID власника пре него што закључите да је правило погрешно.
Само када бројачи остану двосмислени, дневник је вредан буке, и то само за узак део: iptables правило које ограничава брзину и додаје префикс својим линијама, или nftables правило са meta nftrace set 1 док nft monitor trace ради. Траг именује ланац и правило које је прихватило или одбацило пакет. Затим уклоните обоје и држите евидентирање терета изван тога.
Проверите и транспорт. Услуга заштитног зида ограничена на TCP не говори ништа о UDP слушаоцу на том броју, па правило које изгледа исправно и даље може одбацити сваки пакет.
Рутирање и пут назад
Прихваћен пакет који ипак нестаје захтева преглед путање до одредишта. ip route get пријављује руту изабрану за једну адресу, а филтрирање обрнутог пута може одбацити одговор који стиже преко интерфејса који главна табела никада не би изабрала. Симптом изгледа тачно као одбацивање заштитног зида, зато ова провера долази пре још једног NAT правила.
На пролазној тачки проверите прослеђивање и forward ланац, а не input ланац. Затим потврдите да удаљена страна зна како да достигне изворну адресу, јер радни одлазни пут без ичега што се враћа је тишина у оба случаја.
Шта запис мора да каже
За сваку промену забележите тестирану фазу, прочитани доказ и вредност бројача са обе његове стране. Управо тај запис чини "сада ради" преживљивим на следећем прегледу.
Две пречице држе запис искреним. Пакет који никада није напустио домаћин није могао бити одбачен правилом негде другде, колико год уверљиво изгледала конфигурација удаљене стране. Пакет који је отишао и вратио се помера питање изнад мрежног слоја, где бројачи заштитног зида више немају шта да вам кажу.