Ваша линија руте се враћа одбијена, а савет који налазите каже да укључите IP прослеђивање. Ове две ствари су на различитим фазама проблема. Прослеђивање одлучује да ли домаћин може да преноси пакете између интерфејса; нема мишљење о томе да ли је одредиште које сте унели ваљана мрежа. Прво поправите префикс, јер прослеђивање неће спасити адресу и маску које се не поклапају.

На шта се парсер заправо жали

Одредиште написано као адреса плус маска мора да опише мрежу, а мрежа почиње нулираним битовима домаћина. Када адреса коју дајете још увек носи вредност у делу за домаћина, пар је унутрашње противречан: 172.20.130.0 изгледа уредно зато што се завршава нулом, али нула у четвртом октету није једина важна ствар. Управо трећи октет овде држи залутале битове.

Алати ову противречност решавају различито. Строги парсери одбијају линију и именују битове домаћина. Благи парсери маскирају адресу и инсталирају нешто што нисте тражили, што је горе, јер конфигурација сада рутира опсег који никада нисте намеравали. Модул ipaddress у Python-у нуди избор директно: строго парсирање мреже подиже грешку, а strict=False маскира битове домаћина. Ваш клијент може бити строг, благ или недоследан између верзија, зато читајте поруку уместо да верујете навици.

Прођите пример ручно

Узмите тунел који треба да достигне 172.20.130.0 са маском /20. /20 позајмљује четири бита из трећег октета, па се тај октет броји само у корацима од 16: 0, 16, 32 и даље до 240. Вредност 130 пада између 128 и 143, што значи да мрежа која га обухвата почиње на 172.20.128.0, а не на 172.20.130.0 са нулираним последњим октетом.

Записано, блок иде од 172.20.128.0 до 172.20.143.255 и садржи 4,096 адреса. Давање истих вредности нестрогом парсеру показује замену коју би извршио у ваше име:

$ python3 -c "import ipaddress; n=ipaddress.ip_network('172.20.130.0/20', strict=False); print(n, n.num_addresses)"
172.20.128.0/20 4096

Одлучите које одредиште сте заиста имали на уму

Одбијена линија обично крије једну од три намере, а изабрати можете само ви. Ако тунелу треба цео блок, напишите 172.20.128.0/20, канонску мрежну адресу. Ако тунелу треба само сегмент 130, маска је била погрешна и 172.20.130.0/24 је искрена форма. Ако је циљ једна машина, рута до домаћина IPv4 је /32 и никаква аритметика маски није укључена.

Свака од њих дозвољава различиту количину саобраћаја, и то је прави разлог да не ширимо маску док се жалба не заустави. /16 прихвата линију готово свуда и шаље саобраћај ка одредиштима кроз која никад нисте намеравали да рутирате кроз тунел. Напишите најужу префикс који одговара намери, затим га потврдите према следећем хопу који очекујете, а не према ћутању парсера.

Зашто прослеђивање никада није било решење

Одбијена рута никада не стиже до пута прослеђивања, па пребацивање net.ipv4.ip_forward не може да промени исход. То подешавање је важно касније, када домаћин мора да пропушта пакете између интерфејса, а његово укључивање пре него што табела буде тачна мења само која ће фаза следећа да падне.

На истој тачки се често окривљују још две ствари. Рута може бити прихваћена и ипак изгубити од специфичније руте, а правило заштитног зида може одбацити саобраћај после исправне претраге. Држите фазе одвојено: синтакса, инсталација, избор, филтрирање. Рад на погрешној фази изгледа продуктивно јер свака промена поново покреће нешто.

Проверите инсталирану руту и пут који она добија

Када клијент прихвати линију, погледајте шта је инсталирао и коју руту језгро бира за репрезентативну адресу унутар блока. Ако се инсталирани префикс разликује од написаног, за вас је деловао нормализатор.

Питајте за адресу члана као и за једну изван блока, да поређење буде смислено, а не само једна смирујућа линија:

ip -4 route show 172.20.128.0/20
ip -4 route get 172.20.140.10
ip -4 route get 172.20.200.10

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

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