Ping ка пролазу ради, а приступ било чему иза њега не, и то је облик проблема са прослеђивањем, а не проблема са тунелом. Локална достава до пролаза доказује да се тунел подигао и да је додела адресе успела; она не говори ништа о томе да ли ће језгро пропустити пакет са једног интерфејса на други. Пре него што додирнете било који sysctl, потврдите да је машина намењена за усмеравање овог саобраћаја и пронађите мрежни контекст који држи интерфејс окренут ка клијенту. Затим прочитајте вредност тамо, а не тамо где је последњи прочитани водич случајно погледао.

Достизање пролаза није исто што и прослеђивање

Унутар језгра се доносе две одвојене одлуке. Достава на локалну адресу завршава путовање пакета; прослеђивање га поново шаље напоље кроз други интерфејс, а том другом одлуком се управља по мрежном простору имена. Пролаз може бити потпуно доступан док је прослеђивање искључено, а из ping командне линије обе неисправности изгледају исто.

Запишите на који интерфејс пристиже клијентски пакет и кроз који интерфејс излази даљи пут. Оба припадају једном простору имена, и управо тај простор држи важно подешавање.

Прочитајте вредност тамо где пакети заиста јесу

На пролазу који усмерава у простору имена домаћина, на питање одговара једна команда: sysctl net.ipv4.ip_forward. Када улазни и даљи пут живе у именованом простору имена, питајте тај простор: ip netns exec vpn-gw sysctl net.ipv4.ip_forward. Вредност домаћина не замењује вредност простора имена, а јединица на домаћину није доказ ни за шта.

Нема сваки контекст усмеравања ознаку која се може дати команди ip netns. Извршна окружења контејнера и сервиси стварају просторе имена који се никада не региструју под пријатељским именом, и за њих користите алате за преглед окружења. Замените vpn-gw правим именом или механизмом окружења који достиже исти контекст, и престаните да нагађате на нивоу домаћина.

Дајте подешавању једног власника

На уобичајеном домаћину-пролазу са systemd трајни облик је drop-in датотека са именом које изабере администратор, као што је /etc/sysctl.d/60-vpn-forwarding.conf, која садржи net.ipv4.ip_forward = 1. Напишите датотеку, затим учитајте управо ту датотеку да се промени и живо стање: sudo sysctl -p /etc/sysctl.d/60-vpn-forwarding.conf, након чега следи поновно читање. Име датотеке је пример, а не резервисана VPN путања, и почетни број је важан јер датотеке сортиране касније побеђују.

Приоритет је место где трајност тихо пуца. Проверите и учитавач дистрибуције и свој drop-in, јер procps sysctl --system на крају чита и /etc/sysctl.conf, док је редослед sysctl.d у systemd сасвим друга секвенца. Касније додељивање може исти кључ одмах вратити, остављајући вашу датотеку исправном, а ефективну вредност погрешном. Не преписујте постојећу администраторску датотеку да бисте добили тај спор; пронађите власника и промените тамо.

Простор имена створен после подизања система уопште не контролише drop-in домаћина. Његово подешавање припада ономе што га ствара, било да је то извршно окружење контејнера или јединица за припрему простора имена. Дати контејнеру широка права домаћина да би се избегло питање лошија је трговина од десет минута потрошених на проналажење правог власника.

Знајте колико прекидач кошта пре него што га окренете

ip_forward није безопасан boolean. Документација језгра напомиње да његова промена ресетује неколико других IPv4 параметара на подразумеване вредности домаћина или усмеривача, па дијагностичко окретање може одбацити подешавања учињена другде и никада то не поменути. Третирајте га као промену конфигурације са нуспојавама, а не као проверу која се може извести олако.

То такође искључује искључивање и укључивање сваки пут када клијент не може да стигне до домаћина. Ако је вредност већ јединица, квар је другде на путу, и треће преписивање истог кључа га неће померити.

Докажите трајност, затим тестирајте остатак пута

Прочитајте вредност поново у четири тренутка: одмах после промене, након што се појави VPN интерфејс, након поновног повезивања и након планираног рестарта. Вредност која се врати у било ком од тих тренутака има другог власника, а још један једнократни упис то само сакрива до следећег рестарта.

Укључено прослеђивање и даље оставља три ствари за проверу. Клијенту треба рута до одредишта, пролазу треба даља рута плус дозвола да је користи, а одредишту треба повратни пут до адресе клијентског тунела. Приватна усмерена LAN мрежа не захтева аутоматски NAT, зато не додајте masquerading пре него што сазнате која од три ствари недостаје, и тестирајте са предвиђеног клијента, а не са самог пролаза, јер захтев настао на пролазу никада не дотиче пут прослеђивања који сте управо укључили. IPv6 носи сопствену политику прослеђивања и усмеравања, па радни тест IPv4 не говори ништа о њој.

Држите заједно у runbook-у путању drop-in-а, власника простора имена и команду за поновно читање. Следећи који ово преузме треба да може да прочита вредност, види чија је и у року од минута одлучи да ли је проблем у трајности или у остатку пута.

Повезани чланци