Неко вам да прву и последњу адресу и тражи 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

Последње две наредбе су оне које људи прескачу. Прва адреса унутар интервала треба да следи нову руту, а адреса непосредно изван интервала не треба. Ако обе иду истим путем, интервал је негде између захтева и конфигурације проширен.

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

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