ვის ეკუთვნის OpenVPN-ის ჟურნალები: დემონს, rsyslog-ს თუ logrotate-ს?
ერთი მწერალი, ერთი მბრუნავი, ერთი შენახვის პოლიტიკა. ჯერ აირჩიეთ გზა, დაარქვით დემონს სახელი ვიწრო ფილტრისთვის და დაამტკიცეთ ხელახლა გახსნა ერთი დაბრუნებული ფაილით.
ჟურნალების ბრუნვა წინასწარმეტყველებად იშლება: სამი კომპონენტი თითოეული ფიქრობს, რომ ის ფლობს ფაილს, და შედეგია დაბრუნებული ჟურნალი, რომელიც აგრძელებს ზრდას, სანამ ახალი ცარიელი რჩება. დემონი ინახავს აღწერას, logrotate ცვლის ბილიკის სახელს, ხოლო rsyslog სულ სხვა ადგილას წერს. ჯერ აირჩიეთ ერთი მწერალი და ერთი მბრუნავი, სანამ კიდევ ერთ წესს დაამატებთ გროვას. ქვემოთ მოცემული სია ზუსტად ამ თანმიმდევრობით მიდის, რადგან ყოველი შემდგომი ნაბიჯი მასზეა დამოკიდებული.
გადაწყვიტეთ, ვინ წერს ფაილს
ორი დიზაინი ლეგიტიმურია. პირველში VPN პროცესი თავად წერს ფაილს თავისი log ან log-append პარამეტრით. მეორეში ის ჩანაწერებს სისტემურ ჟურნალში აგზავნის და rsyslog ან journald წყვეტს, სად დაჯდებიან.
ეს ალტერნატივებია, არა ფენები. ჰოსტი, რომელიც ორივეს რთავს, ბოლოს ორ ფაილს მიიღებს, რომლებიც არ ემთხვევა, და რომელსაც კითხულობთ, ხშირად მოძველებულია. აირჩიეთ გზა განზრახ და შემდეგ მოხსენით მეორე მწერალი.
სანამ რამეს შეცვლით, წაიკითხეთ სერვისის მოქმედი კონფიგურაცია, მათ შორის drop-in ფაილები, რომლებმაც შეიძლება გადაფარონ unit ფაილი. თქვენ მიერ რედაქტირებულ პროფილში არსებული დირექტივა არ არის მტკიცებულება, რომ სწორედ ის ის არის, რომელიც გაშვებულმა პროცესმა ჩატვირთა. შეადარეთ unit პროცესის არგუმენტებს, შემდეგ კი იმ ფაილებს, რომლებიც მან რეალურად გახსნა.
დაარქვით დემონს სახელი, რომ ფილტრი ვიწრო იყოს
syslog გზაზე მიეცით დემონს ცალკე იდენტობა და გაფილტრეთ მის მიხედვით. წესი, რომელიც ამ VPN ინსტანციის პროგრამის სახელს ემთხვევა, მის ჩანაწერებს საზიარო ფაილის გარეთ ინახავს, რომლის შენახვის პოლიტიკაც სხვას ეკუთვნის.
ვიწრო წესები შემდეგ კითხვასაც პასუხისმგებელს ხდის: რომელმა სერვისმა შექმნა ეს ხაზი? ფილტრი, რომელიც VPN სიტყვის შემცველ ყველაფერს ემთხვევა, სიამოვნებით შეაგროვებს მეორე გვირაბის ტრაფიკს და ორივეს დაბინდავს. შეესაბამეთ ზუსტ იდენტიფიკატორს, რომელსაც unit ჟურნალს გადასცემს.
დახურეთ წესი მოქმედების შემდეგ, რომ ჩანაწერები ნაგულისხმევ დანიშნულებაშიც არ ჩავარდეს. ორ ფაილში გამეორებული ხაზები ჟურნალის შეცდომას ჰგავს და სინამდვილეში დაკარგული გაჩერებაა. სწორედ ეს ერთი გამოტოვება აორმაგებს შენახვის პოლიტიკის დისკურ ღირებულებასაც.
დააბრუნეთ აღწერის დაკარგვის გარეშე
როცა დემონი ფაილს წერს, logrotate ბილიკს ახალ სახელს აძლევს, მაგრამ პროცესი თავის ღია აღწერას ინახავს. ახალი ჩანაწერები განაგრძობენ გადარქმეულ ფაილში შესვლას, სანამ რაღაც პროცესს აიძულებს თავდაპირველი ბილიკი ხელახლა გახსნას; ამიტომ ბრუნვა შეიძლება მუშაობად გამოიყურებოდეს, სანამ ახალი ფაილი ცარიელი რჩება.
გადაწყვეტა postrotate მოქმედებაა, რომელიც სერვისის დოკუმენტირებულ გადატვირთვის ან ხელახლა გაშვების ქცევას ააქტიურებს. ჟურნალისთვის სიგნალის გაგზავნა სულ სხვა მოქმედებაა და არაფერს აკეთებს დემონისთვის, რომელიც საკუთარ ფაილს ინახავს.
სადაც ხელახლა გახსნა შეუძლებელია, copytruncate სარეზერვო ვარიანტია: დააკოპირეთ ფაილი, შემდეგ ადგილზე მოჭერით. აღწერას ძალაში ტოვებს, მაგრამ კარგავს ყველაფერს, რაც კოპირებასა და მოჭრას შორის დაიწერა, ამიტომ ეს გაცვლაა და არა გადაწყვეტა. დატვირთვის ქვეშ ამ ნაპრალმა შეიძლება სწორედ ის ხარვეზი ჩაყლაპოს, რომლის დაჭერასაც ცდილობთ.
თითოეული ფაილისთვის აირჩიეთ ორიდან ერთი და ჩაწერეთ არჩევანი, რადგან ერთ ბილიკზე მათი შერევა ნაპრალებს ქმნის, რომელთა მიკუთვნებაც მოგვიანებით ძალიან რთულია. მკითხველი, რომელიც ერთ დირექტორიაში ორივე ნიმუშს იპოვის, ვერ იტყვის, რომელია ავტორიტეტული.
შენახვა განსაზღვრეთ ინციდენტის ფანჯრიდან
შენახვა, შეკუმშვა და მაქსიმალური ზომა უნდა გამომდინარეობდეს იქიდან, რამდენად შორს იკვლევთ სინამდვილეში. შეკუმშვითა და ზომის ზღვრით შვიდდღიანი ფანჯარა ბევრი განლაგებისთვის გონივრული საწყისი წერტილია; სახელმძღვანელოდან დაკოპირებული რიცხვი კი არა.
პოლიტიკა ერთ ადგილას შეინახეთ. თუ logrotate ფაილს აბრუნებს და rsyslog-იც აბრუნებს, მეორე ბრუნვა იმარჯვებს და პირველის სახელდების სქემა არეულობად რჩება. აირჩიეთ მფლობელი, გამორთეთ მეორე ბრუნვა და ეს გადაწყვეტილება პოლიტიკის გვერდით ჩაინიშნეთ.
rsyslog-ის დოკუმენტაცია მის მარშრუტიზაციისა და მოქმედების მოდელს მოიცავს, ხოლო OpenVPN სერვისის დოკუმენტაცია დემონის საკუთარი ჟურნალის პარამეტრებისთვის ავტორიტეტულად რჩება. არც ერთი მათგანი თქვენ ნაცვლად არ წყვეტს თქვენს შენახვის პოლიტიკას.
გამოსცადეთ ერთი ბრუნვა და ერთი ახალი მოვლენა
აიძულეთ ერთი ბრუნვა და შემდეგ შექმენით ერთი ახალი მოვლენა, მაგალითად წარუმატებელი ავთენტიფიკაცია. დაადასტურეთ, რომ ახალი ჩანაწერი ახალ ფაილში ჩნდება და რომ ძველმა ფაილმა ზრდა შეწყვიტა.
შეამოწმეთ ახალი ფაილის უფლებებიც, რადგან ბრუნვა, რომელიც მას სხვა მფლობელით ხელახლა ქმნის, შემდეგ ჩაწერაზე მწერალს ამტვრევს და კრახის მსგავს ნაპრალს ქმნის. სანამ წახვალთ, შეადარეთ მფლობელი და რეჟიმი სერვისის ანგარიშს. შემდეგ დაადასტურეთ, რომ შეკუმშული არქივი იკითხება, რადგან არქივი, რომელსაც ვერავინ გახსნის, შენახვა არ არის. ძველ ფაილში უახლესი ჩანაწერის სწრაფი წაკითხვა ამტკიცებს როგორც შეკუმშვას, ისე უფლებებს.
დაასრულეთ თითოეული ნაბიჯის მფლობელის ჩაწერით: რომელი კომპონენტი წერს, რომელი აბრუნებს და სად ცხოვრობს შენახვის პოლიტიკა. სწორედ ეს ჩანაწერი აქცევს შემდეგ ჟურნალის ინციდენტს ხუთწუთიან შემოწმებად, ნახევარი დღის გამოცნობის ნაცვლად, თუ რომელმა ფენამ დაკარგა ხაზი.