Претворете го 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 дефинира што враќа. Она што не го прави е да избере порта, да одлучи чии се адресите или да додели пристап до која било услуга зад нив.
Измерете што би фатил поширокиот префикс
Пред да прифатите кратенка, пресметајте колку чини. /28 што започнува на 198.51.100.96 покрива 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
Последните две наредби се тие што луѓето ги прескокнуваат. Првата внатрешна адреса треба да ја следи новата маршрута, а адресата веднаш надвор од интервалот не треба. Ако двете одат по истиот пат, интервалот бил проширен некаде помеѓу барањето и конфигурацијата.
Забележете ја првата адреса, последната адреса и префиксите што ги изразуваат. Следниот човек што ќе го прегледа правилото ќе може да го спореди барањето со конфигурацијата без да ја повторува аритметиката, а разликата помеѓу точна и удобна маршрута останува видлива.