OpenVPN 3 Linux: წაიკითხეთ D-Bus შეცდომა, სანამ უკან დააბრუნებთ
ხუთი სერვისი, ერთი წინა ნაწილი. მიაკუთვნეთ D-Bus შეცდომა იმ კომპონენტს, რომელმაც უარი თქვა, შეამოწმეთ, არსებობს თუ არა სესია, შემდეგ კი გაასწორეთ იმ საზღვარზე.
OpenVPN 3 Linux-ის წარუმატებლობები მოდის როგორც D-Bus მეთოდის შეცდომა უცნობი სახელით, და ცდუნება არის პაკეტის ვერსიის დაქვეითება და იმედი. კლიენტი ერთი პროგრამა არ არის: ბრძანების ხაზის წინა ნაწილი ავტობუსით ესაუბრება სერვისებს, რომლებიც ფლობენ პროფილებს, სესიებს, VPN ძრავას და პრივილეგირებულ ქსელურ ცვლილებებს. იმის გადაწყვეტა, თუ ამ ხუთიდან რომელი ფლობს წარუმატებელ გამოძახებას, დიაგნოსტიკის უდიდესი ნაწილია და ერთი ბრძანება ღირს უკან დაბრუნების ნაცვლად. შემდეგი არის სწორედ ეს გადაწყვეტილება, იმ თანმიმდევრობით, რომლითაც წარუმატებლობები ჩვეულებრივ ჩნდება.
ხუთი მფლობელი ერთი ბრძანების უკან
ხუთი პროცესი მნიშვნელოვანია და თითოეულს აქვს საკუთარი ავტობუსის სახელი: წინა ნაწილი, რომელიც იღებს თქვენს ბრძანებას, კონფიგურაციის მენეჯერი, რომელიც ინახავს პროფილებს და მათი წვდომის პოლიტიკას, სესიების მენეჯერი, რომელიც ფლობს სესიის სიცოცხლის ხანგრძლივობას, უკანა ნაწილი, რომელიც ატარებს კავშირს OpenVPN 3 Core Engine-ის მეშვეობით, და ქსელის კონფიგურაციის სერვისი, რომელიც აყენებს ინტერფეისს, მარშრუტებს და DNS პარამეტრებს. კონფიგურაციის ობიექტის დამამხელელი შეცდომა ამიტომ უკანა ნაწილის შეცდომა არ არის, და არდაწყებული უკანა ნაწილი ავთენტიფიკაციის წარუმატებლობა არ არის. შეტყობინების ერთ-ერთ იმ სტრიქონში მოთავსება უნდა მოხდეს მანამ, სანამ რაიმე შეიცვლება, რადგან ყოველი შემდგომი ნაბიჯი დამოკიდებულია იმაზე, თუ რომელი სტრიქონია ჭეშმარიტი. სტრიქონის გამოცნობა არის გზა, რომლითაც მოკლე შესწორება იქცევა პაკეტებთან გატარებულ შუადღედ.
ჰკითხეთ სისტემურ ავტობუსს, რომელი სერვისები არსებობს, სანამ სხვა რამეს იკითხავთ, შემდეგ დაადასტურეთ, რომ დაყენებული ნაწილები ერთ ვერსიაზე თანხმდებიან. OpenVPN 3 Linux ამ სერვისებს სისტემურ ერთეულებად არეგისტრირებს, ამიტომ მოსაკითხი ავტობუსი სისტემურია, ვერსიის მოთხოვნას ადმინისტრაციული უფლება სჭირდება, და --user-ით შედგენილი სია კითხულობს თქვენს შესვლის სესიას, სადაც ერთეულები არასოდეს ჩნდება. სერვისები მოთხოვნით აქტიურდება და ზოგი უმოქმედობისას წყვეტს მუშაობას, ამიტომ თქვენს პირველ მოთხოვნამდე დაკარგული სერვისი უბრალოდ ჯერ არაფერზე არ იკითხებოდა. ქვემოთ მოცემული სამი ბრძანება პასუხობს არსებობაზე, ვერსიასა და ერთეულის მდგომარეობაზე VPN სესიის გახსნის გარეშე.
sudo busctl list | grep -i openvpn
sudo openvpn3-admin version --services
systemctl list-units 'openvpn3*'რას ამტკიცებს სინამდვილეში თითოეული სია
თავად კლიენტის ხედები ყველაზე იაფი ხელმისაწვდომი მტკიცებულებაა და თითოეული მათგანი ნაკლებს ამტკიცებს, ვიდრე ჩანს. კონფიგურაციის სიაში პროფილი აჩვენებს, რომ პროფილი იმპორტირებულია და არაფერს იმის შესახებ, შეიძლება თუ არა ვინმემ მასთან დაკავშირება. სესიების სიაში სესია აჩვენებს, რომ სესიის ობიექტი არსებობს და არაფერს იმის შესახებ, დასრულდა თუ არა დისტანციური ავთენტიფიკაცია.
openvpn3 configs-list
openvpn3 sessions-listამ გამონატანებში ობიექტის ბილიკები აღნიშნავენ ავტობუსზე მართულ ობიექტებს და არა ფაილებს, ამიტომ მათი რედაქტირება შეუძლებელია, და ადრე ჩაწერილი ბილიკი მოძველდება იმ წუთას, როცა ეს სესია გაითიშება. თქვენი ჩანაწერებიდან ერთის ხელახლა გამოყენება წარმოქმნის "no such object" შეცდომებს, რომლებსაც VPN-თან არაფერი აქვთ საერთო. ქვემოთ მოცემული ეტაპების ცხრილი გამოყოფს, რას ამყარებს კავშირის თითოეული ნაბიჯი იმისგან, რას ტოვებს ღიად, და უკან დაბრუნების გადაწყვეტილება სწორედ ამ განსხვავებას ეყრდნობა. წაიკითხეთ თქვენს მტკიცებულებას შესაბამისი სტრიქონი, შემდეგ კი კიდევ ერთხელ წაიკითხეთ შეცდომის ტექსტი.
| Stage | What exists | What proves it | What it does not prove |
|---|---|---|---|
| Profile imported | A configuration object held by the configuration manager | The profile is listed by the client | That the profile owner permits a connection |
| Session requested | A session object held by the session manager | The session appears in the session list | That the remote side accepted the credentials |
| Connect dispatched | An asynchronous attempt on the VPN backend | Status changes arrive for that session | That an interface was configured |
| Tunnel configured | An interface, routes and DNS settings | The network service reports success and routes appear | That traffic reaches the peer |
კავშირის გამოძახება ბრუნდება მანამ, სანამ გვირაბი არსებობს
კავშირის გამოძახება გაძლევთ დასაკვირვებელ სესიას და ბრუნდება, ამიტომ გარეგნულად წარმატებული გამოძახება, რომელსაც სიჩუმე მოსდევს, ნორმალური შუალედური მდგომარეობაა და არა წინააღმდეგობა. წინა ნაწილმა მაინც უნდა თვალყური ადევნოს მდგომარეობის ცვლილებებს და უპასუხოს ინტერაქციის ყოველ მოთხოვნას. პროფილი, რომელსაც რწმუნება სჭირდება და პასუხს არ იღებს, ელოდება მდგომარეობაში, რომელიც ზუსტად ჩამოკიდებულ უკანა ნაწილს ჰგავს. ეს ლოდინის მდგომარეობა აღიარებას იმსახურებს, რადგან ადამიანებს არასწორ კომპონენტთან აგზავნის.
სანამ ცდა მიმდინარეობს, დააკვირდით სესიების სიას და წინა ნაწილის საკუთარ ჟურნალს იმ პროფილისთვის. სესია, რომელიც არასოდეს ტოვებს საწყის მდგომარეობას, ასახელებს კომპონენტს, რომელიც გაჩერდა, და ჟურნალი ჩვეულებრივ მას უკვე პირველ სტრიქონებში ასახელებს. ხელთ გქონდეთ პროფილის სახელი, რადგან ჟურნალის ბრძანება იღებს პროფილს და არა სესიის ბილიკს, რაც კიდევ ერთი მიზეზია სიის ხელახლა წაკითხვისა ბილიკის ხელახლა გამოყენების ნაცვლად.
openvpn3 sessions-list
openvpn3 log --config <profile> --level 6ერთი კომპონენტის ჟურნალის კითხვა სესიის გახსნის გარეშე
როცა წინა ნაწილი არაფერ სასარგებლოს არ იუწყება, გადადით კომპონენტთან, რომელმაც წარუმატებლობა ჟურნალში ჩაწერა, ახალი კავშირის დაწყების ნაცვლად. კონფიგურირებული systemd-journald ჩამწერით ადმინისტრატორის შემოსაზღვრული ჟურნალის ხედი კითხულობს ერთი კომპონენტის მოვლენებს ავტობუსის პოლიტიკაზე ხელის შეუხებლად და სესიის გახსნის გარეშე, რაც მნიშვნელოვანია, რადგან დიაგნოსტიკა, რომელიც ცვლის გასაზომ სისტემას, ძალიან ცოტას ამტკიცებს. გაფილტრეთ ერთეულის მიხედვით და არა syslog ტეგის მიხედვით: ცალკეული სერვისის ერთეულები საერთო იდენტიფიკატორს არ იძლევიან გარანტიას, ამიტომ ტეგით მოთხოვნამ შეიძლება ცარიელი გვერდი დააბრუნოს, სანამ თავად ერთეულმა წარუმატებლობა ჩაწერა.
ჩაწერეთ ოთხი ველი, სანამ ვინმეს დახმარებას სთხოვთ: შეცდომის სრული სახელი, ჩართული სერვისი და ობიექტი, დროის ნიშა და დაყენებული პაკეტების ვერსიები. ეს არის ის, რაც მომვლელს სჭირდება, და არც ერთი მათგანი არ მოითხოვს პროფილის ან რწმუნების ბილეთში ჩასმას. ავტობუსზე წვდომის პოლიტიკის გაფართოება შეცდომის ჩასახშობად დიაგნოსტიკა არ არის, ის შლის იმ საზღვარს, რომელიც კომპონენტს თქვენთვის ასახელებდა. პროფილების პირადი შიგთავსი დარჩება საერთო ანგარიშების გარეთ იმავე მიზეზით, როგორც რწმუნებები.
journalctl -u 'openvpn3-service-*' -n 50 --no-pager
openvpn3-admin journal --service <name>იმ საზღვრის გასწორება, რომელმაც უარი თქვა
რუკის თითოეულ სტრიქონს აქვს საკუთარი შესწორება და სტრიქონები ერთმანეთს არ ცვლის. პროფილზე უარყოფილი ოპერაცია პოლიტიკისა და საკუთრების საკითხია, მაშინ როცა არააქტიური უკანა ნაწილი სერვისებისა და შეფუთვის საკითხია. სერვერი, რომელიც ავთენტიფიკაციაზე უარს ამბობს, არც ერთია და არც მეორე, ამიტომ განმეორებითი პაროლის შეცვლა ვერ შეასწორებს ლოკალურ გააქტიურების პრობლემას. არასწორი შესწორების არჩევა არის გზა, რომლითაც პოლიტიკის პრობლემა გადაყენებად იქცევა.
პაკეტების ცვლილების შემდეგ შეამოწმეთ თანმიმდევრული და მხარდაჭერილი ინსტალაცია, ძველი ორობითი ფაილის ადგილზე კოპირების ნაცვლად. კონტროლირებული უკან დაბრუნება დადასტურებულ რეგრესიაზე ლეგიტიმური პასუხია, თუ პაკეტები თავსებადი რჩება და არსებობს გზა მხარდაჭერილ მოვლაზე დაბრუნებისთვის. ჩამოაყალიბეთ ეს გზა მანამ, სანამ სერვისი შეწყვეტს გაშვებას, და არა შემდეგ.
სხვა პლატფორმამ შეიძლება გაიზიაროს იგივე ბირთვული VPN ბიბლიოთეკა Linux-ის ავტობუსური სერვისების გაზიარების გარეშე, ამიტომ Windows-ზე მსგავსი წარუმატებლობა ამაზე არაფერს ამბობს. D-Bus-ის მიმოხილვა აღწერს კონფიგურაციებისა და სესიებისთვის გამოქვეყნებულ ობიექტის ბილიკებს, და სწორედ არქიტექტურის ამ ნაწილს ეყრდნობა ეს დიაგნოსტიკა. წაიკითხეთ ერთხელ, და შემდეგი შეცდომა უკვე მიმაგრებული კომპონენტით მოვა.