strongSwan peer-ის გადატვირთვის შემდეგ გამორთული რჩება: ერთი გვირაბის აღდგენა
დატოვეთ daemon-ის გადატვირთვა. დაწყება და DPD დააყენეთ იმ კავშირზე, რომელიც უნდა დაბრუნდეს, შემდეგ გადაამოწმეთ სახელით და დაამტკიცეთ სერვისი და არა daemon.
დისტანციური კარიბჭე გადაიტვირთება, ერთ წუთში ბრუნდება, და ლოკალური strongSwan daemon აგრძელებს მუშაობას, მაშინ როცა გვირაბი ჯერ კიდევ გამორთულია. cron დავალება, რომელიც ESTABLISHED-ს ეძებს და daemon-ს გადატვირთავს, საბოლოოდ დაფარავს ამას, და ასევე შეწყვეტს მანქანაზე ყველა დაუკავშირებელ გვირაბს, შესაძლოა გამოტოვოს ის, რომელიც ჩავარდა. აღდგენა ეკუთვნის იმ კავშირს, რომელიც უნდა დაბრუნდეს, გამოხატული პარამეტრებში, რომლებიც reload-ს გადაურჩება. ეს runbook ამას აყენებს ერთი კავშირისთვის და ამტკიცებს შედეგს სახელით.
დატოვეთ გლობალური გადატვირთვა, შეინახეთ მისი მტკიცებულებები
daemon-ის გადატვირთვას ორი კონკრეტული ნაკლი აქვს: ანადგურებს ყველა კავშირის მდგომარეობას, და არაფერს გეუბნებათ იმაზე, თუ რომელი მოვლენა ჩავარდა სინამდვილეში. სტატუსის ტექსტი, რომელიც მოძებნეთ, შესაძლოა სხვა კავშირიდან იყოს, მაშინ როცა საჭირო child უმოქმედოდ იჯდა, რადგან ვერაფერმა ის არ გააქტიურა.
წაიკითხეთ ჩატვირთული კავშირები და აქტიური ასოციაციები, სანამ რამეს შეცვლით, რათა გქონდეთ „მანამდე“ სურათი, რომელსაც peer-ის დაბრუნების შემდეგ შეადარებთ.
swanctl --list-conns
swanctl --list-sas
დაწყება და განმეორებითი ცდები დააყენეთ დაბრუნებულ კავშირზე
swanctl.conf განლაგებაში ეს პარამეტრები კავშირისა და child-ის დონეზე ცხოვრობს და არა გლობალურ პოლიტიკაში. ქვემოთ მოცემული ფრაგმენტი ინიციატორის მხრიდან მაგალითია, რომელიც ვარაუდობს, რომ შეთავაზებები, ავთენტიფიკაცია და სელექტორები უკვე სწორია.
connections {
branch {
keyingtries = 0
dpd_delay = 30s
children {
private-lan {
start_action = trap|start
dpd_action = restart
}
}
}
}
start_action განსაზღვრავს, რა ხდება child-ის ჩატვირთვისას: start დაუყოვნებლივ იწყებს, ხოლო trap აყენებს პოლიტიკას, რომელიც დაწყებას ააქტიურებს შესაბამისი ტრაფიკის გამოჩენისას. trap|start-ის დასაწერად საჭიროა strongSwan 5.9.6 ან უფრო ახალი, ამიტომ ხაზის კოპირებამდე შეამოწმეთ ვერსია. dpd_action=restart ითხოვს ახალ მოლაპარაკებას, როგორც კი peer მკვდრად გამოცხადდება, და კავშირის დონეზე keyingtries=0 საშუალებას აძლევს დამატებით ცდებს წარმატებამდე ან მუდმივ შეცდომამდე. IKEv2-ის ქვეშ dpd_timeout-ს საერთოდ არ აქვს ეფექტი, რადგან ჩვეულებრივი ხელახალი გაგზავნა წყვეტს, როდის არ პასუხობს peer.
აღნიშნულ მაგალითში დაყოვნება საწყისი წერტილია და არა უნივერსალური ვადა. შეარჩიეთ იგი იმის მიხედვით, თუ რამდენ ხანს გრძელდება peer-ის გადატვირთვა და რამდენი ხელახალი გაგზავნის ატანა შეგიძლიათ.
იცოდეთ, რომელი მოვლენისგან აღადგენთ
სამი ხარვეზი დაფაზე იდენტურად გამოიყურება და სხვადასხვა პარამეტრს მოითხოვს. არასდროს ამომავალი საწყისი კავშირი კონფიგურაციის ან ხელმისაწვდომობის პრობლემაა. peer, რომელმაც პასუხის გაცემა შეწყვიტა, DPD-ის შემთხვევაა. child, რომელიც peer-მა ცალსახად დახურა, პოლიტიკის მოვლენაა თავისი close_action-ით, რომელსაც DPD არასდროს ამჩნევს. შეწყვეტის ირგვლივ ლოგის წაკითხვა გეტყვით, სამიდან რომელი გაქვთ, და პასუხი ცვლის გამოსწორებას.
ნუ დაამატებთ აგრესიულ ხელახალ დაწყებას იმ კავშირს, რომელსაც ოპერატორები განზრახ ხურავენ ტექნიკური მომსახურებისთვის, თორემ გვირაბი ისევ გამოჩნდება ფანჯრის შუაში. მოთხოვნაზე დაფუძნებული დიზაინებისთვის საკმარისია შენახული trap, რადგან შესაბამისი ტრაფიკი child-ს ტაიმერის გარეშე აღადგენს.
გადაამოწმეთ სახელით და არა daemon-ის სტატუსით
წაიკითხეთ კავშირი და მისი child სახელით, სანამ peer ჯერ კიდევ გამორთულია, შემდეგ კი ისევ, როცა დაბრუნდება; ამ ორ გამოსავალს შორის სხვაობაა მტკიცებულება.
swanctl --initiate --child private-lan
swanctl --terminate --ike branch
შემდეგ დაადასტურეთ სერვისი და არა ასოციაცია. ახალი child უსაფრთხოების ასოციაცია და მის უკან არსებულ კერძო დანიშნულებაზე წარმატებული მოთხოვნა ის ორი ფაქტია, რომელიც მნიშვნელოვანია, და მომუშავე daemon ჯანსაღი დაუკავშირებელი გვირაბით არც ერთს არ ამტკიცებს.
თუ child არასდროს იწყებს, შეამოწმეთ, რომ სატესტო ტრაფიკი ზუსტად ემთხვევა კონფიგურირებულ სელექტორებს, პროტოკოლისა და პორტის ჩათვლით. თუ იწყებს და ვარდება, წაიკითხეთ ავთენტიფიკაციის ან შეთავაზების შეცდომა უსასრულო ციკლის მიღმა დამალვის ნაცვლად, რადგან keyingtries=0 სიამოვნებით გაიმეორებს მუდმივ უარყოფას სამუდამოდ.
ჩატვირთეთ ცვლილება ფანჯარაში და ხელახლა გამოსცადეთ
reload უფრო უსაფრთხოა, ვიდრე daemon-ის გადატვირთვა, და მაინც უფასო არ არის: child-ის შეცვლამ ან გადმოტვირთვამ შეიძლება დახუროს დაწყებული ასოციაცია ან ჩამოაგდოს მისი trap.
ჩატვირთეთ ტექნიკური მომსახურების ფანჯრის დროს, შეინახეთ წინა ფაილი და დაადასტურეთ, რომ კავშირი თქვენ მიერ განზრახული პარამეტრებით ჩნდება და არა ნაგულისხმევებით.
swanctl --load-conns
swanctl --list-conns
დააბრუნეთ უკან წინა ფაილის აღდგენით და ხელახალი ჩატვირთვით, შემდეგ გაიმეორეთ იგივე ორი ბრძანება. გვირაბი, რომელიც მხოლოდ daemon-ის გადატვირთვის შემდეგ ბრუნდება, არ არის შეკეთებული, არამედ გადატუმბულია.