Маршрут сабыңыз четке кагылып кайтат, ал эми тапкан кеңешиңиз IP кайра жөнөтүүнү күйгүзүңүз дейт. Бул эки нерсе маселенин ар башка баскычтарында. Кайра жөнөтүү хост интерфейстердин ортосунда пакеттерди жылдыра алабы же жокпу чечет; ал сиз терген дарек жарактуу тармакпы дегенге пикири жок. Адегенде префиксти оңдоңуз, анткени кайра жөнөтүү бири-бирине туура келбеген дарек менен масканы куткарбайт.

Талдоочу чындыгында эмнеден даттанат

Дарек кошуу маска түрүндө жазылган багыт тармакты сүрөттөшү керек, ал эми тармак нөлгө толтурулган хост биттеринен башталат. Берилген даректе дагы эле хост бөлүгүндө маани болсо, жуп ички жактан карама-каршы: 172.20.130.0 тартып көрүнөт, анткени нөл менен бүтөт, бирок төртүнчү октеттеги нөл гана маанилүү нерсе эмес. Бул жерде ашыкча биттерди так үчүнчү октет кармап турат.

Куралдар бул карама-каршылыкты ар кандай чечет. Катуу талдоочулар сапты четке кагып, хост биттерин атайт. Жумшак талдоочулар даректи маскалап, сиз сурабаган нерсени орнотот, бул жаман, анткени конфигурация эми эч качан көздөбөгөн диапазонду маршруттайт. Python'дун ipaddress модулу тандоону түз көрсөтөт: катуу тармактык талдоо ката чыгарат, ал эми 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-ди алмаштыруу натыйжаны өзгөртө албайт. Бул параметр кийинчерээк, хост интерфейстердин ортосунда пакеттерди өткөрүшү керек болгондо маанилүү, ал эми таблица туура боло электе аны күйгүзүү кийинки кайсы баскыч ишке ашпай каларын гана өзгөртөт.

Ошол эле жерде дагы эки нерсе көп айыпталат. Маршрут кабыл алынып, ошого карабастан такыраак маршрутка утулушу мүмкүн, ал эми firewall эрежеси туура издөөдөн кийин трафикти ташташы мүмкүн. Баскычтарды бөлүп кармаңыз: синтаксис, орнотуу, тандоо, чыпкалоо. Туура эмес баскычта иштөө продуктивдүү сезилет, анткени ар бир өзгөртүү бир нерсени кайра баштайт.

Орнотулган маршрутту жана анын жеңген жолун текшериңиз

Клиент сапты кабыл алгандан кийин, ал эмнени орнотконун жана ядро блоктун ичиндеги өкүл дарек үчүн кайсы маршрутту тандаарын караңыз. Эгер орнотулган префикс жазганыңыздан башкача болсо, нормалдаштыргыч сиздин ордуңузга аракет кылган.

Блоктун ичиндеги мүчө даректи жана сыртындагы бир даректи сураңыз, салыштыруу бир гана сооротуучу сап эмес, маанилүү болушу үчүн:

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

Үчүнчү суроо префиксиңиз туура болсо туннелден тышкары түшүшү керек, ал эми түшпөсө, курган маршрутуңуз ойлогонуңуздан кененирээк. Кийинки параметрге кол тийгизээрден мурун префикс эмнени камтышы керек болгонун жазып коюңуз, анткени талдануучу маршрут менен иштеген жол өзүнчө байкоолор бойдон калат.

Тектеш макалалар