UFW-ის გამომრთველი VPN-ს ბლოკავს? დაუშვით თანატოლი
თქვენი გასვლითი აკრძალვის წესი გვირაბის ხელის ჩამორთმევას აგდებს. ერთი თანატოლის გამონაკლისი, რომელიც ufw enable-მდე ემატება, პოლიტიკას გამომრთველად აქცევს.
თქვენ მიჰყევით საკონტროლო სიას: აკრძალეთ გასვლითი, დაუშვით გვირაბი, ჩართეთ ufw. შემდეგ კლიენტი ხელის ჩამორთმევაზე ელოდება და არასდროს უკავშირდება, ან უკავშირდება და არც ერთი გვერდი არ იტვირთება. ორივე წარუმატებლობა ერთი და იმავე ხარვეზიდან მოდის. აკლია წესი, რომელიც გვირაბს არსებობის საშუალებას აძლევს, რადგან გვირაბი არ არის ინტერფეისი, საიდანაც თქვენი პაკეტები გადის.
რატომ არ ემთხვევა tun0-ზე ნებართვა თავიდან არაფერს
tun0-ს კლიენტი ქმნის მას შემდეგ, რაც სესია არსებობს. ის დატაგრამები, რომლებიც ამ სესიას აშენებენ, ჩვეულებრივი UDP პაკეტებია, რომლებიც მიმართულია პროვაიდერს 1194 პორტზე, და ისინი გადიან wlan0-ით ან eth0-ით ფიზიკური წყაროს მისამართით. allow out on tun0 ემთხვევა მხოლოდ იმ ტრაფიკს, რომლის გასვლითი ინტერფეისი tun0-ია, ამიტომ ხელის ჩამორთმევის დროს ის საერთოდ არაფერს არ ემთხვევა.
დაადეთ default deny outgoing ზემოდან და გარე პაკეტები იშლება მანამ, სანამ ინტერფეისი გამოჩნდება. კლიენტი ხელახლა ცდილობს, დრო იწურება და აცხადებს TLS-ის ან ხელის ჩამორთმევის ჩავარდნას, რაც ადამიანებს სერტიფიკატებსა და MTU-ში ძებნისკენ უშვებს, მაშინ როცა ფაირვოლი ჩუმად ჭამს კავშირს. წესი, რომელსაც თქვენი ტრაფიკი უნდა შეეკავებინა, ხელს უშლის ამ ტრაფიკის შეკავებას.
რეფლექსური შესწორება გაჟონვას მუდმივს ხდის. sudo ufw allow out on wlan0, ან ნაგულისხმევის ნებართვაზე დაბრუნება, გვირაბს ასწევს და მანქანას გამომრთველის გარეშე ტოვებს: შემდეგ ჯერზე, როცა გვირაბი დაეცემა, ყველაფერი ფიზიკური ადაპტერით განაგრძობს მუშაობას. მე დავკარგე შუადღე ზუსტად ამ წყვილ ცვლილებაზე, სანამ გავიგე, რომელ პაკეტს ვფილტრავდი სინამდვილეში.
რა სჭირდება პაკეტების ორ კრებულს
თქვენი ტრაფიკი ფაირვოლს ორჯერ, ორი ფორმით კვეთს. შიდა პაკეტი გვირაბის მისამართიდან გარეთ მიდის tun0-ით. გარე პაკეტი ფიზიკური მისამართიდან თანატოლთან მიდის და ეს არის ერთადერთი, რაც მავთულზე ჩანს. ერთი წესი თითო ფორმაზე:
sudo ufw allow out on tun0
sudo ufw allow out to 203.0.113.10 port 1194 proto udp
sudo ufw allow out to 203.0.113.10 port 443 proto tcp comment 'tcp fallback'
შეცვალეთ მისამართი და პორტი თქვენივე პროფილის შესაბამისით. WireGuard-ის თანატოლები ჩვეულებრივ პასუხობენ 51820/udp-ზე; OpenVPN-ის პროფილებს, რომლებიც TCP 443-ით მიდიან, ნაცვლად ეს პორტი სჭირდებათ. დეტალები განსხვავდება, ფორმა არა: ორივე წესი ვიწროა და ერთად განსაზღვრავენ ერთადერთ დანიშნულებებს, სადაც მანქანა გვირაბის გამორთვისას მოხვდება.
თანმიმდევრობა მეორე მითია. ნედლი iptables-ით თქვენ ჯაჭვს ზემოდან ქვემოთ კითხულობთ და ფიქრობთ, რომელი წესი იმარჯვებს. ufw არ არის თქვენი აკრეფილი სიის თხელი გარსი; ის თქვენს წესებს საკუთარ ჯაჭვებში კომპილირებს და ჩასმის წერტილებს ირჩევს. ufw status ბეჭდავს მათ ufw-ის რიგით, და არა თქვენით. როცა წესი უგულებელყოფილად გამოიყურება, შეადარეთ ufw show added კომპილირებულ კრებულს iptables -S | grep ufw -დან, სანამ რამეს გადაწერთ.
გამონაკლისი ერთი მისამართის სიგანეზე უნდა დარჩეს
თანატოლის წესი სწორია მხოლოდ მანამ, სანამ ის ასახელებს იმ მისამართს, რომელზეც კლიენტი ზარებს. პროვაიდერები ბრუნავენ ბოლო წერტილებს და ჰოსტის სახელს ამომხსნელი პროფილი მიჰყვება DNS-ის ცვლილებას ახალ მისამართზე, სანამ წესი კვლავ ძველზე მიუთითებს. როცა თვეების განმავლობაში მომუშავე გვირაბი შეწყვეტს ასვლას, სანამ რამეს გააფართოვებთ, შეადარეთ წესში არსებული მისამართი იმას, რასაც კლიენტი ეძებს.
მთელ ქვექსელზე ან 1194 პორტის ყველა დანიშნულებაზე გაფართოება პოლიტიკას ისევ ხვრელიან ფაირვოლად აქცევს. გამონაკლისი გამომრთველია; როცა ის ფართოა, გამოსართავი აღარაფერი რჩება. შეინახეთ ის ერთ მისამართზე და დატოვეთ კომენტარი, რომელიც ასახელებს პროფილსა და პროვაიდერს, რომელსაც ის ეკუთვნის, რადგან ექვს თვეში მისამართი თვითნებურად გამოჩნდება.
სახელების ამოხსნა ცალკე სტრიქონს იმსახურებს. ძებნა ხდება გვირაბის არსებობამდე, ფიზიკური ინტერფეისით, ამიტომ მკაცრმა გასვლითი აკრძალვის პოლიტიკამ კლიენტს შეიძლება საკუთარი სერვერის პოვნა აუკრძალოს. დაუშვით 53 პორტი თქვენი ამომხსნელის მისამართზე, ან ერთხელ ამოხსენით და მისამართი პროფილში ჩაამაგრეთ. DNS-ის დაშვება ყველა ინტერფეისზე გადაწყვეტილებაა, არა ნაგულისხმევი.
ააშენეთ პოლიტიკა სანამ გვირაბი დაგჭირდებათ
ufw enable მთელ პოლიტიკას ერთდროულად იყენებს და საკუთარ ჯაჭვებს ხელახლა ტვირთავს, ხოლო მომუშავე ფაირვოლზე ნაგულისხმევი პოლიტიკის შეცვლა მათაც ხელახლა ტვირთავს. ufw-ის სახელმძღვანელო აფრთხილებს, რომ ამან შეიძლება ჩამოაგდოს არსებული კავშირები, როგორიცაა SSH. ამიტომ ბრძანებები ამ რიგით მიდის, SSH-ის წესით გააქტიურებამდე და ღია კონსოლის სესიით:
sudo ufw default deny incoming
sudo ufw default deny outgoing
sudo ufw allow out on tun0
sudo ufw allow out to 203.0.113.10 port 1194 proto udp
sudo ufw allow 22/tcp
sudo ufw enable
sudo ufw status verbose
ufw reset განზრახ დატოვებულია ამ ბლოკის გარეთ. ის შლის ყველა წესს და გამორთავს ფაირვოლს, ხოლო დისტანციურ ჰოსტზე სწორედ შემდეგი გააქტიურება ჩამოაგდებს თქვენს სესიას. თუ მაინც გადააყენებთ, დაამატეთ SSH-ის წესი და სანამ გააგრძელებთ, კონსოლის მეშვეობით დაბრუნების მეორე გზა დაადასტურეთ.
თანმიმდევრობა დეკორატიული არ არის. ufw-ის მუშაობისას დამატებული წესები არაფერს ლეწავს, მაგრამ იმ წუთას, როცა ნაგულისხმევ პოლიტიკას აბრუნებთ, ჯაჭვები ხელახლა იტვირთება და ძველი პოლიტიკის მიერ ნებადართული სესიაც მათთან მიდის. გააკეთეთ ნაგულისხმევები, ნებართვები და გააქტიურება ერთ გავლაში, სანამ ჯერ კიდევ გაქვთ შიგნით შესვლის გზა, რომელიც მანქანაზე არ არის დამოკიდებული.
გამოსცადეთ დაბლოკილი მდგომარეობა და შეინახეთ გაუქმება
გამოუცდელი გამომრთველი ვარაუდია. განზრახ გათიშეთ კლიენტი და სცადეთ გვერდის ჩატვირთვა: ეს უნდა ჩავარდეს. ხელახლა დაუკავშირდით და ის უნდა აღდგეს რომელიმე წესის შეხების გარეშე. sudo ufw status verbose ადასტურებს ნაგულისხმევებს და ჟურნალის მდგომარეობას, და ufw status numbered გვიჩვენებს, რომელი სატესტო წესი უნდა წაიშალოს, როცა ის თავის დანიშნულებას გადააჭარბებს.
შეინახეთ საპირისპირო სკრიპტი წინას გვერდით. მანქანა, რომელსაც გასვლითი აკრძალვა და მკვდარი გვირაბი აქვს, საკუთარ შეკეთებას ვერ ჩამოტვირთავს, ამიტომ გაუქმება დისკზე უნდა იყოს და კონსოლიდან იკითხებოდეს:
sudo ufw reset
sudo ufw default deny incoming
sudo ufw default allow outgoing
sudo ufw enable
გაუშვით ის, როცა გვირაბი უკვე ჩამოშვებულია და წესები უნდა მოიხსნას, და არა როგორც ჩვეულებრივი ნაბიჯი. სანამ ტერმინალს დახურავთ, ოთხი რამ უნდა იყოს ჭეშმარიტი: თანატოლის წესი ასახელებს ზუსტად ერთ მისამართს, DNS-ს აქვს დასახელებული გამონაკლისი, გააქტიურება ნებართვების შემდეგ მოვიდა და გვირაბის გამორთვა კლავს ჩვეულებრივ ტრაფიკს ისე, რომ კლიენტი სამუდამოდ არ კვდება.