OpenVPN სერვერი nopool-ით: გამოაცხადეთ პულის ცალსახა დიაპაზონი
შეინარჩუნეთ ქვექსელი და აიღეთ განაწილება თქვენს ხელში. გამორთეთ ავტომატური პული, გამოაცხადეთ ჩამკეტი საზღვრები და შეამოწმეთ, რას იღებს სინამდვილეში ახალი კლიენტი.
სერვერის დამხმარეები აწყობენ ქვექსელს და შემდეგ ავსებენ მას საკუთარი არჩევანის დინამიკური პულით. ეს ნაგულისხმევი მოსახერხებელია მანამ, სანამ ზოგიერთი მისამართი განაწილების გარეთ უნდა დარჩეს — იქნება ისინი ფიქსირებული მინიჭებებისთვის დაცული თუ მომავალი სეგმენტისთვის შენახული. ავტომატური პულის გამორთვა და დიაპაზონის თავად გამოცხადება მოითხოვს ორ სტრიქონს და ერთ გააზრებულ გადაწყვეტილებას იმის შესახებ, რომელი მისამართები არ არის განაწილებისთვის. დანარჩენი ოპერაციული დისციპლინაა: ინვენტარიზაცია, გამოყენება, შემოწმება, უკუქცევა.
ეს ცვლილებაა მომუშავე სერვისში, ამიტომ მოეპყარით მას როგორც ოპერაციულ ამოცანას: ჯერ ინვენტარიზაცია, შემდეგ გამოყენება ჩვეულებრივი სასიცოცხლო ციკლით, შემოწმება ახალი კლიენტით და მზა უკუქცევა.
დაიწყეთ იმ ქვექსელიდან, რომელიც უკვე გაქვთ
წაიკითხეთ სერვერის მიმდინარე კონფიგურაცია და ის მისამართები, რომლებსაც კლიენტები რეალურად ფლობენ. პულის ცვლილებას აზრი აქვს მხოლოდ ამ საფუძვლის მიმართ, და საფუძველი ყოველთვის არ არის ის, რასაც ფაილი გვთავაზობს, რადგან მართული პროდუქტი ან კონფიგურაციის გენერატორი შეიძლება იყოს თქვენს მიერ წაკითხული ფაილის მფლობელი.
grep -nE '^(topology|server|ifconfig-pool|max-clients|client-config-dir)' /etc/openvpn/server/lab.conf
ip -4 addr show tun0დაადასტურეთ მოქმედი ტოპოლოგია. ქვექსელის ტოპოლოგიაში თითოეული კლიენტი იღებს ერთ მისამართს პულიდან; ძველი net30 განლაგებები თითოეულ კლიენტს ანიჭებენ პატარა ბლოკს და არითმეტიკა სრულიად განსხვავებულია. თუ სერვერი ჯერ კიდევ net30-ზეა, ეს გვერდი არასწორი მიგრაციის სახელმძღვანელოა და პულის რიცხვები არ ნიშნავს იმას, რასაც ელით. შეამოწმეთ ეს სტრიქონი, სანამ მისამართების არითმეტიკას სხვა ადგილიდან გადააკოპირებთ.
ჩამოწერეთ თავად სერვერის მისამართი, ყოველი ფიქსირებული მინიჭება კლიენტური კონფიგურაციების საქაღალდეში და ყოველი მისამართი, რომელზეც დამოკიდებულია მარშრუტი ან წვდომის წესი. სწორედ ეს მისამართები უნდა დარჩეს დინამიკური დიაპაზონის გარეთ. მათი წინასწარ ჩაწერა აქცევს დიაპაზონს გადაწყვეტილებად და არა ვარაუდად. ის ასევე აძლევს უკუქცევას რაღაც კონკრეტულს აღსადგენად.
დაამატეთ nopool და გამოაცხადეთ დიაპაზონი
დამხმარე საკვანძო სიტყვა იღებს nopool-ს, რომელიც ინარჩუნებს ქვექსელის კონფიგურაციას და თრგუნავს ავტომატურ დინამიკურ პულს, როგორც აღწერს OpenVPN 2.6-ის სახელმძღვანელო. შემდეგ ცალსახა ifconfig-pool სტრიქონი იძლევა თქვენ მიერ განზრახულ ჩამკეტ დიაპაზონს და მისი ქსელის ნიღაბი ემთხვევა ქვექსელს. ორივე სტრიქონი ერთსა და იმავე სერვერის ბლოკს ეკუთვნის, რადგან პულს თავისი ქვექსელის გარეშე მნიშვნელობა არ აქვს. მათ შორის თანმიმდევრობა მხოლოდ წაკითხვადობისთვისაა მნიშვნელოვანი, ვინაიდან დამხმარე წყვილს სერვისის გაშვებისას აფართოებს.
topology subnet
server 10.70.0.0 255.255.255.0 nopool
ifconfig-pool 10.70.0.50 10.70.0.120 255.255.255.0ორივე საზღვარი ჩამკეტია, ამიტომ მაგალითი გთავაზობთ სამოცდათერთმეტ მისამართს. შეინახეთ სერვერის მისამართი და ყოველი ფიქსირებული მინიჭება ამ შუალედის გარეთ; დინამიკური დიაპაზონის შიგნით მოხვედრილი ფიქსირებული მინიჭება ქმნის შეჯახებას, რომელიც დამოკიდებულია კავშირის რიგზე, და ეს გამართვისთვის ყველაზე ცუდი სახეა. თუ ფიქსირებული მინიჭებები სავარაუდოდ გაიზრდება, დატოვეთ ზღვარი დაცულ სიმრავლესა და დიაპაზონს შორის.
დიაპაზონის ზომა და ერთდროულობა ცალკე ლიმიტებია. ასი მისამართი არ ნიშნავს ას ერთდროულ კლიენტს, თუ max-clients სხვას ამბობს, და ერთდროულობის ლიმიტზე დიდი პული ნორმალურია და არა ფუჭი ხარჯვა. მთავარია, რომ ორივე ლიმიტი შეგნებულად შეირჩეს და არ იყოს ნაგულისხმევიდან მემკვიდრეობით მიღებული.
შეინახეთ ფიქსირებული მინიჭებები დინამიკური დიაპაზონის გარეთ
კლიენტისთვის სპეციფიკური ifconfig-push პულიდან განაწილებისგან განსხვავებული მექანიზმია და უნდა გამოიყენოს აქტიური ტოპოლოგიის შესაფერისი პარამეტრები. ქვექსელის რეჟიმში ეს არის ერთი მისამართი და ქსელის ნიღაბი; net30 წყვილის გადატანა მხოლოდ იმიტომ, რომ ის ძველ მაგალითში გამოჩნდა, გავრცელებული შეცდომაა.
განაწილების ისტორია მინიშნებაა და არა ხელისუფლება. persist ფაილი იმახსოვრებს, რომელ კლიენტს რომელი მისამართი ჰქონდა, ამიტომ ხელახლა დაკავშირებული კლიენტები, როგორც წესი, იღებენ იმავეს, და ის არ იტოვებს მისამართებს, არ ათავისუფლებს მათ და არ ცვლის ფიქსირებულ მინიჭებას. თუ კონკრეტულ მოწყობილობას ყოველთვის კონკრეტული მისამართი უნდა ჰქონდეს, გამოიყენეთ ფიქსირებული მინიჭება persist ფაილზე დაყრდნობის ნაცვლად.
შემდეგ შეამოწმეთ მისამართებზე დამოკიდებული ბილიკები. კლიენტებისკენ გაგზავნილი მარშრუტი, ქვექსელის დაშვებული firewall-ის წესი ან კონკრეტული ჰოსტის მოლოდინში მყოფი მონიტორინგის შემოწმება შეიძლება ძველ დიაპაზონს გულისხმობდეს. პულის შეცვლა მათი წაკითხვის გარეშე ხარვეზს გადაიტანს ისეთ ადგილზე, რომელიც უკავშირო ჩანს.
გამოიყენეთ სასიცოცხლო ციკლით, შემდეგ შეამოწმეთ
გამოიყენეთ ცვლილება ისე, როგორც სერვისი ჩვეულებრივ იღებს კონფიგურაციას — პირდაპირი ფაილი და გადატვირთვა, ან ფაილის ხელახლა გენერირების მართვის შრე. გენერირებულ ფაილში ხელით შეტანილი ცვლილება ძლებს შემდეგ გენერაციამდე და აღარ. ჩაწერეთ, რომელი მექანიზმი ფლობს ფაილს, რადგან შემდეგ ოპერატორს უნდა იცოდეს, სად შეიტანოს იგივე ცვლილება. შემდეგ გადატვირთეთ ერთხელ და წაიკითხეთ ჟურნალი, სანამ კლიენტს მოიწვევთ.
systemctl restart openvpn-server@lab
journalctl -u openvpn-server@lab -n 30 --no-pager
# on a fresh client
ip -4 addr show tun0დააკავშირეთ კლიენტი, რომელიც ადრე არ იყო დაკავშირებული, და დაადასტურეთ, რომ მისამართი ხვდება გამოცხადებულ დიაპაზონში და დაცული სიმრავლის გარეთ. შემდეგ დაადასტურეთ დაბრუნების გზა: კლიენტმა უნდა მიაღწიოს იმას, რასაც პოლიტიკა უშვებს და მეტს არა. მისამართი, რომელიც გეგმას შეესაბამება, მაგრამ სამუშაო მარშრუტი არ აქვს, წარმატებული ცვლილება არ არის.
ხელახლა დააკავშირეთ კლიენტი, რომელსაც ძველი დიაპაზონიდან მისამართი ჰქონდა. მან უნდა მიიღოს მისამართი ახალი დიაპაზონიდან, და ძველ მისამართზე მიბმული ნებისმიერი სესიის დონის მდგომარეობა უნდა გაქრეს. თუ ის ძველ მისამართს ინარჩუნებს, მას სხვა რამ ანიჭებს და პული არ არის ის მფლობელი, რომელსაც თქვენ ფიქრობთ.
დიაპაზონის ცვლილების უკუქცევა
შეინახეთ წინა სამი სტრიქონი თქვენს ცვლილების ჩანაწერში და არა მხოლოდ წინა ფაილი. მათი აღდგენა და გადატვირთვა განაწილებას ძველ ქცევას უბრუნებს, და შემდეგ ხელახლა დაკავშირებული კლიენტები მისგან მიიღებენ მისამართებს.
ჩანაწერს ორი გაფრთხილება ეკუთვნის. უკუქცევის დროს უკვე დაკავშირებული კლიენტები ინარჩუნებენ მიმდინარე მისამართებს ხელახლა დაკავშირებამდე, ამიტომ უკუქცევა მთელ პარკში მყისიერი არ არის. და თუ ძველი დიაპაზონი ფიქსირებულ მინიჭებას ემთხვეოდა, მისი აღდგენა შეჯახებასაც აღადგენს; სწორედ ეს გადაფარვა იყო ცვლილების მიზეზი და ის უკუქცევისგან განსხვავებულ გამოსწორებას მოითხოვს.
პულის ცვლილება დასრულებულია, როცა ახალი კლიენტი იღებს დიაპაზონში მოქცეულ მისამართს, დაცული მისამართი არასოდეს გაიცემა და იმ მისამართებს მოიხმარენ მარშრუტები და წესები კვლავ განზრახულად იქცევიან. ყველაფერი ნაკლები შემდეგ ადამიანს უტოვებს გაარკვიოს, სამიდან რომელი არ არის მართალი.