დაზიანებული WireGuard კონფიგების უმეტესობა მნიშვნელობაში არ ცდება; ისინი სწორ მნიშვნელობას არასწორ მხარეს ათავსებენ. პირადი გასაღები ამ მანქანას ეკუთვნის, peer მეორე მანქანის საჯარო გასაღებს ატარებს, ხოლო მისამართი interface ბლოკში ზის, მიუხედავად იმისა, რომ აღწერს, სად ცხოვრობს გვირაბი. წაიკითხეთ ფაილი, როგორც ორი შემხვედრი მიმართულება, შემდეგ შეამოწმეთ, რა დაამატა ზემოდან დამხმარე სკრიპტმა. პროტოკოლს თავად ნაკლები ველი აქვს, ვიდრე ფაილს, და დამატებითი ველები ცალკე ღირს იცოდეთ.

interface-ის გასაღებები ამ მანქანას აღწერენ

interface ბლოკი ამ ბოლოს საკუთარ იდენტობას ინახავს. PrivateKey ეს იდენტობაა და არასდროს ტოვებს ჰოსტს; მისგან მიიღება შესაბამისი საჯარო გასაღები და სწორედ მას ჩამოთვლიან სხვა peers. ListenPort არის ადგილი, სადაც ეს მხარე ხელის ჩამორთმევებს იღებს, ამიტომ ერთი მისამართის უკან მდგარ ორ კლიენტს განსხვავებული პორტები სჭირდება.

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

დანარჩენი ყველაფერი [Interface] ბლოკში რეალურ კლიენტთან ჩვეულებრივ wg-quick-ს ამატებს: DNS, MTU, Table, და კაუჭის სტრიქონები. ეს პროტოკოლის ველები არ არის და შიშველი wg კონფიგურაცია მათ სრულიად უგულებელყოფს.

თითოეული peer ჩანაწერი ერთ მეორე მხარეს აღწერს

[Peer] ბლოკი შორეული მხარეა. PublicKey ამ მხარის წარმოებული გასაღებია, არასდროს მისი პირადი გასაღები, და PresharedKey არასავალდებულო დამატებითი საიდუმლოა, რომელიც ორივე მხარემ იდენტურად უნდა შეინახოს. Endpoint არის სადაც უნდა გაიგზავნოს, და PersistentKeepalive სთხოვს ამ ჰოსტს, ინტერვალის შემდეგ პაკეტი გაგზავნოს, როცა სხვა არაფერი გადის.

აქაური დაბნეულობის უმეტესობას ორი შეცდომა ხსნის. საკუთარი პირადი გასაღების peer ბლოკში კოპირება ორ ბოლოს ერთ იდენტობას აზიარებს და ხელის ჩამორთმევა ისე ცდება, რომ ცუდად ილოგება. Endpoint-ის კლიენტზე გამოტოვება ჩვეულებრივ განზრახ ხდება, რადგან სერვერი მისამართს შემომავალი ხელის ჩამორთმევიდან სწავლობს; მისი გამოტოვება სერვერზე, რომელმაც უნდა დაიწყოს, ასე არ არის. გაითვალისწინეთ ასევე, რომ keepalive NAT-ის ასახვას ღიად ინახავს და ის არ აუმჯობესებს გამტარობას და არ ამცირებს დაყოვნებას, ამიტომ ოცდაათი წამით მეტი პაკეტი არაფერს ყიდულობს, როცა ტრაფიკი უკვე მიედინება.

AllowedIPs მარშრუტიზაციაა, არა ნებართვების სია

AllowedIPs WireGuard-ის კრიპტოგასაღები მარშრუტიზაციაა. გარეთ, ის განსაზღვრავს, რომელი peer მიიღებს პაკეტს დანიშნულების მიხედვით. შიგნით, ის განსაზღვრავს, მიიღება თუ არა ამ peer-იდან მომავალი პაკეტი წყაროს მიხედვით. ერთი და იგივე ველი ორივე საქმეს ასრულებს, ამიტომ ეს არ არის წვდომის კონტროლის სია და არც დაშვებული ვებსაიტების სია.

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

რას ამატებს wg-quick პროტოკოლის გარშემო

wg-quick კითხულობს იმავე ფაილს და ასრულებს ქსელურ ნაბიჯებს, რომლებსაც პროტოკოლი ოპერაციულ სისტემას უტოვებს. ის ანიჭებს interface-ის მისამართს, ამატებს AllowedIPs-იდან წარმოებულ მარშრუტებს, წერს გადამწყვეტის პარამეტრებს და თანმიმდევრობით ასრულებს კაუჭის ბრძანებებს.

ეს ფენა ხსნის კლასიკურ ასიმეტრიას. 0.0.0.0/0 და DNS სტრიქონის მქონე ფაილი კლიენტს აძლევს ნაგულისხმევ მარშრუტს და გადამწყვეტს, და ის საერთოდ არაფერს აკეთებს სერვერის გადაცემის ან NAT-ის წესებზე. ისინი სერვერის საკუთარ კონფიგს ეკუთვნის და ვერც ერთი კლიენტის ფაილი ვერ უზრუნველყოფს მათ.

ფაილს ერთი მფლობელი ჰყავდეს. მისი ხელით რედაქტირება, სანამ SaveConfig ჩართულია, ნიშნავს, რომ თქვენი ცვლილება გაქრება შემდეგ ჯერზე, როცა interface ჩამოვა, და interface არ გეტყვით, რომ ეს მოხდა.

შეამოწმეთ გამოყენებული მდგომარეობა და არა ფაილი

ფაილი განზრახვაა. გამოყენებული მდგომარეობა ის არის, რასაც ბირთვი ინახავს, და ისინი იშლება ყოველ ჯერზე, როცა დამხმარემ, drop-in-მა ან კაუჭმა აქტივაციის შემდეგ რაღაც შეასწორა.

წაიკითხეთ ცოცხალი მდგომარეობა და მისამართირება ერთად, შემდეგ შეადარეთ ორივე იმას, რაც დაწერეთ:

sudo wg show
ip -4 addr show dev wg0
ip -4 route show dev wg0
grep -v "^#" /etc/wireguard/wg0.conf

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

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