ვიღაც გაძლევთ პირველ და უკანასკნელ მისამართს და ითხოვს 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

ბოლო ორი ბრძანებაა ის, რასაც ხალხი გამოტოვებს. პირველი შიდა მისამართი ახალ მარშრუტს უნდა მიჰყვეს, ხოლო ინტერვალის გარეთ მყოფი მისამართი არ უნდა. თუ ორივე ერთი გზით მიდის, ინტერვალი სადღაც მოთხოვნასა და კონფიგურაციას შორის გაფართოვდა.

ჩაწერეთ პირველი მისამართი, უკანასკნელი მისამართი და პრეფიქსები, რომლებიც მათ გამოხატავენ. წესის გადამამოწმებელ შემდეგ ადამიანს შეეძლება მოთხოვნა კონფიგურაციას შეადაროს არითმეტიკის გამეორების გარეშე და განსხვავება ზუსტ და მოსახერხებელ მარშრუტს შორის დარჩება ხილული.

დაკავშირებული სტატიები