Вашиот сервер за развој одговори пред една минута, а сега кога тунелот е кренат барањето истекува со име на хост што никогаш не сте го внеле. Речиси секој случај го објаснуваат два механизми, а однадвор изгледаат исто. Суфиксот за пребарување го претвора краткото име во корпоративно, додека проксито го праќа сообраќајот на loopback кон хост што не може да го достигне. Раздвојувањето на двете чини едно барање и ја штеди правилата на огнениот ѕид што се подготвувавте да ја напишете.

Кога localhost се разрешува во корпоративната зона

Проверете во што се разрешува името додека тунелот е кренат, потоа пуштете го истото барање со спуштен тунел и споредете ги двата одговори. Знакот е адреса во корпоративниот опсег таму каде што очекувавте 127.0.0.1. Запис како localhost.mycompany.corp победува над loopback записот штом клиентот го додаде тој суфикс во листата за пребарување, и барањето патува до приватен хост каде што ништо не слуша на тој порт. Читајте ја листата за пребарување наместо да погодувате, бидејќи клиентот може да додаде повеќе од еден домен и редоследот одлучува кој кандидат се пробува прв:

getent hosts localhost
resolvectl domain
ss -ltnp | grep 8080

Заменете го името на хостот со буквалната адреса во апликацијата, клиентот за база на податоци или URL-то на бележникот, потоа повторете го барањето. Ако грешката исчезне, имавте проблем со именување и тунелот беше само предизвикувачот. Ако опстои, слушачот или рутата е следниот осомничен, а името беше само лажна трага.

Прокси поставки што го фаќаат loopback

Системско прокси применето кога тунелот се крева ќе прими барање до 127.0.0.1 и ќе го проследи до далечинско прокси што нема поим што мислевте. Празна листа за исклучоци претвора локално барање во далечинско, а пораката за грешка ретко го кажува тоа. Додајте ги loopback адресите во листата за исклучоци за целата сесија, а не за една команда, потоа потврдете дека алатката го почитува тоа пред да заклучите нешто за мрежата.

Рамките за апликации ги читаат сопствените променливи на околината и понекогаш сопствената конфигурациска датотека, па исклучок што работи за една алатка не докажува ништо за следната. Браузерите додаваат нијанса: браузерите базирани на Chromium заобиколуваат проксито за loopback имплицитно, а токенот за исклучок може да го отстрани тоа однесување. Проверете ја фактичката одлука за прокси наместо да претпоставите дека поставката на оперативниот систем е целата приказна. Две команди го решаваат ова за сѐ што се стартува од школка:

curl --noproxy '*' http://127.0.0.1:8080/health
NO_PROXY=localhost,127.0.0.1,::1 your-tool

Адресата на bind одлучува кој може да се поврзе

Серверот стартуван на 127.0.0.1 прима врски само од таа машина, што обично е правилната стандардна поставка за развој. Сервер на 0.0.0.0 одговара на секој интерфејс, вклучително адаптерот на VPN, што е поголема изложеност отколку што повеќето луѓе имаат намера. Кога буквалната loopback адреса не успева, проверете го bind-от пред сѐ друго.

Погледнете го сокетот што слуша и забележете ја адресата на која е врзан, не само портата. Ако друг уред или контејнер треба да ја достигне услугата преку тунелот, врзете се на конкретниот интерфејс што ќе го користи и дозволете ја таа порта намерно. Ако само вашата машина го бара тоа, задржете го тесниот bind и поправете го клиентот наместо да го проширите серверот. Пренасочување на порта или слој од тунели може да ги поврзе двете, но секој додава компонента што подоцна ќе бара сопствено отстранување на грешки.

Каде алатка за отстранување на грешки очекува LAN

Алатките за отстранување на грешки носат претпоставки што тунелот тивко ги крши. Мостот за отстранување на грешки на телефон ја губи уредот кога VPN-от ја фаќа подмрежата на уредот, па повторното поврзување преку LAN адресата или кабел ја избегнува конфликтацијата. Центарот за автоматизација на браузер истекува кога центарот е достапен само преку проксито или кога локален огнен ѕид ја испушта неговата контролна порта. Далечински дебагер може да бара покачување и loopback адреса таму каде што клиентот ја препишал рутата.

Одделете ја контролната порта и портата за податоци, зашто често едната преживува, а другата не. Потоа одлучете дали поправката припаѓа на конфигурацијата на алатката, на рута за таа подмрежа или на правило за поделен тунел. Уредувањето на hosts датотека на секоја машина на развивач најлошо се скалира и најпрво се заборава. Претпочитајте ја поставката што живее со профилот и може да ја прегледа секој што го поседува тунелот.

Запрете на првата фаза што не успева

Минете низ три фази: разрешете го името, отворете сокет кон буквалната адреса, потоа оставете алатката сама да ја воспостави врската. Секоја фаза отстранува еден слој, па првата грешка го именува слојот што треба да се поправи и сѐ потоа останува непроверено. Запишете го резултатот пред да промените нешто, зашто поправка применета пред мерењето не се разликува од среќа. Ако првиот обид не успее, а повторувањето работи, тунелот веројатно не бил подготвен кога алатката стартувала.

Заменете го фиксното чекање со ограничена проверка на подготвеноста што ја чека рутата и задржете ја фазата што не успеа во дневникот за следниот човек да види каде запрело. Алатка што сама се опоравува не е поправена, туку има среќа, а среќата истекува на туѓа машина. Менувајте го тунелот последен и само за фазата што навистина не успеа. Тој редослед е и најкраткиот пат назад кон работоспособна градба, зашто ве спречува да преизградите компонента што никогаш не била вклучена.

Поврзани статии