Біріншіден соңғыға дейінгі IP ауқымын дәл VPN маршруттарына айналдырыңыз
Бірінші мен соңғы мекенжай аралығы сирек бір префикске сыяды. Оны дәл CIDR блоктарына айналдырыңыз, сонда маршрут аралықтан тыс мақсаттарды қамтымайды.
Біреу сізге бірінші және соңғы мекенжайды беріп, VPN маршрутын сұрайды. Еліктіргіш қадам — екі шетті де қамтитын ең қысқа префиксті таңдау, бірақ бұл қадам ешкім сұрамаған мақсаттарды үнсіз қосады. CIDR блогының өлшемі әрқашан екінің дәрежесі және бастапқы мекенжайы соған тураланған, сондықтан кездейсоқ аралыққа әдетте біреуі жетпейді. Аралықты аралап шығыңыз, оны дәл бөліңіз, содан кейін оның сыртындағы мекенжайларды тексеріңіз.
Префикстен емес, аралықтан бастаңыз
Басқа нәрсе жазбас бұрын бірінші мекенжай мен соңғы мекенжайды жазып қойыңыз. Жұп — талаптың өзі; префикс оның тек бір мүмкін өрнегі, кейде қате өрнегі. Екі санды тексеру маскадан әлдеқайда оңай.
Тураланған аралық бір блокқа жинақталады. Тураланбаған аралық бірнеше блокқа ыдырайды, және ыдырау жуық емес, дәл. Істемеу керек нәрсе — сыртқа қарай дөңгелектеп, оны жеткілікті жақын деп атау, өйткені қосымша мекенжайлар маршрут алып жүрген саясатты алады.
Қатенің екі бағыты да маңызды. Туннельге баратын маршрут үшін қосымша мекенжайлар VPN-ге тартылады. Айналып өту ерекшелігі үшін қосымша мекенжайлар оны өткізіп жібереді. Нәтижелердің ешқайсысы тек сіз орнатқан префиксті көрсететін маршрут кестесінде көрінбейді.
Бірінші жағдай: аралық кездейсоқ тураланған
198.51.100.64-тен 198.51.100.127-ге дейін алыңыз. Бірінші мекенжай 64 мекенжай шекарасына тураланған және аралық дәл 64 мекенжай, сондықтан бір /26 оны қалдықсыз сипаттайды.
Бұл оңай жағдай және оны таныған жөн, өйткені бұл талапты префикстермен ойлайтын адам жазғанын білдіреді. Бұл тексерудің қысқа екенін де білдіреді: өлшемнің екінің дәрежесі екенін және бастауы сол өлшемнің еселігі екенін растаңыз.
Құжаттама ауқымдары жақсы мысалдар болады, өйткені олардың иесі жоқ. Бұл мекенжайларды нақты туннельге орнатпаңыз және сізге берілген ауқымды тек біртүрлі көрінгені үшін құжаттама кеңістігі деп ойламаңыз.
Екінші жағдай: тураланбаған, сондықтан бөліңіз
Енді 198.51.100.100-ден 198.51.100.107-ге дейін алыңыз. Бұл сегіз мекенжай, яғни екінің дәрежесі, бірақ 100 сегізге еселік емес. Осындай өлшемдегі бір блок содан бастала алмайды, сондықтан аралықты біреуден көбірек жабу керек.
Дәл жабын — екі /30 блок: 198.51.100.100/30 100-ден 103-ке дейінгілерді, ал 198.51.100.104/30 104-тен 107-ге дейінгілерді жабады. Барлығы сегіз мекенжай, аралықтан тыс ештеңе жоқ, ал ыдырау берілген аралық үшін бірегей.
python3 -c "from ipaddress import ip_address, summarize_address_range as s; print(*s(ip_address('198.51.100.100'), ip_address('198.51.100.107')), sep='\n')"
Стандартты кітапхана функциясы арифметиканы сіз үшін жасайды, ал ipaddress құжаттамасы оның не қайтаратынын анықтайды. Оның жасамайтыны — шлюз таңдау, мекенжайлардың кімге тиесілі екенін шешу немесе олардың артындағы кез келген қызметке рұқсат беру.
Неғұрлым кең префикс нені қамтитынын өлшеңіз
Қысқа жолды қабылдамас бұрын оның қанша тұратынын есептеңіз. 198.51.100.96-дан басталатын /28 96-дан 111-ге дейінгілерді жабады, бұл сегіздің орнына он алты мекенжай. Қосымша сегіз — 96-дан 99-ға және 108-ден 111-ге дейінгілер, және олардың әрқайсысы маршрутты мұра етер еді.
python3 -c "from ipaddress import ip_network as n; w=set(n('198.51.100.96/28')); t=set(n('198.51.100.100/30'))|set(n('198.51.100.104/30')); print(len(w), len(t), sorted(w-t))"
Сегіз қосымша мақсат — өзгеріс сұранысына жазуға болатын нақты сан. Бұл сондай-ақ қысқа жолдың қабылдануын шешетін сан, ал бұл арифметика емес, саясат мәселесі.
Арифметика мен анықтауды бөлек ұстаңыз. Желі операторы берген аралық дәл түрлендіріледі. Өзгеретін қызметтің бір DNS жауабы сол қызметтің толық немесе тұрақты ауқымын бекітпейді, ал байланыссыз атаулар бір мекенжайды бөлісе алады.
Дәл жиынтықты орнатып, шеттерін тексеріңіз
Әрбір алынған префиксті VPN конфигурациясының иесіне беріп, оны қолдау көрсетілетін механизм арқылы орнатуға рұқсат етіңіз. Егер талап екі жазба қажет етсе, форманы қысқарту үшін біреуін кеңейтудің орнына екі жазбаны ұстаңыз.
sudo ip route add 198.51.100.100/30 via 10.90.0.1 dev tun0 sudo ip route add 198.51.100.104/30 via 10.90.0.1 dev tun0 ip route get 198.51.100.101 ip route get 198.51.100.97
Соңғы екі команда — адамдар өткізіп жіберетін командалар. Бірінші ішкі мекенжай жаңа маршрутты ұстануы керек, ал аралықтың дәл сыртындағы мекенжай ұстанбауы керек. Егер екеуі де бір жолмен жүрсе, аралық талап пен конфигурацияның арасында бір жерде кеңейтілген.
Бірінші мекенжайды, соңғы мекенжайды және оларды өрнектейтін префикстерді жазып алыңыз. Ережені келесі қарайтын адам арифметиканы қайталамай-ақ талапты конфигурациямен салыстыра алады, ал дәл маршрут пен ыңғайлы маршруттың айырмашылығы көрінеді.