OpenWrt-ის VPN ზონა, გადაგზავნა და მისამართების ნიღაბი: რომელია საჭირო?
ზონის შემავალი, გადაგზავნა და მისამართების ნიღაბი სხვადასხვა კითხვას პასუხობს. გადაწყვიტეთ, რა სჭირდება თქვენს VPN ტრაფიკს WAN ზონის გახსნამდე.
სამი ცვლილება ერევა ერთმანეთს ყოველ ჯერზე, როცა VPN OpenWrt-ს ხვდება: პორტის გახსნა, გადაგზავნის დაშვება და მისამართების ნიღბის ჩართვა. ისინი სხვადასხვა კითხვას პასუხობენ და ჩვეულებრივ მხოლოდ ერთი მათგანია ნამდვილი მოთხოვნა. თითოეული კონტროლის წაკითხვა იმ ტრაფიკის როლის მიხედვით, რომელსაც ის მართავს, ვარაუდს გადაწყვეტილებად აქცევს და ასევე გეუბნებათ, რა სიმპტომს უნდა ელოდოთ, როცა ცვლილება არასწორია. დაიწყეთ იმ როლის დასახელებით, რომელიც ვერ შესრულდა, და არა იმ მოსანიშნი უჯრის, რომელიც გახსოვთ.
დაასახელეთ ტრაფიკის როლი კონტროლზე შეხებამდე
ზონის შემავალი განსაზღვრავს, რა შეიძლება მივიდეს თავად როუტერთან. ზონის გამავალი მოიცავს ტრაფიკს, რომელსაც როუტერი თავად ქმნის, ზონის გადაგზავნა ნაგულისხმევია ზონაში გამავალი ტრაფიკისთვის, ხოლო მისამართების ნიღაბი განსაზღვრავს, გადაიწერება თუ არა წყაროს მისამართი გასვლისას. ეს ოთხი სხვადასხვა კითხვაა და ზონის პოლიტიკა ოთხივეს ერთდროულად, იმავე მნიშვნელობით პასუხობს, ამიტომ მთელ ზონაზე ცვლილება უხეში იარაღია. დასახელებულ წესს შეუძლია ერთ-ერთ მათგანს უპასუხოს დანარჩენებზე შეხების გარეშე.
სასარგებლო რუკა ტრაფიკის როლის მიხედვითაა, რადგან სწორედ ამას აკვირდებით, როცა რაღაც ვერ მუშაობს. ქვემოთ თითოეულ როლს აქვს ერთი კონტროლი, რომელიც მას განსაზღვრავს, და ერთი სიმპტომი, რომელიც მასზე მიუთითებს:
| Traffic role | Control that decides it | Where it lives in the config | Symptom when it is wrong |
|---|---|---|---|
| A client reaching a listener on the router | Input policy of the zone that carries the connection, or a rule for the port | option input in the zone stanza, or a named rule | The handshake never completes and the tunnel log says nothing |
| A tunnel client reaching the router itself | Input policy of the tunnel zone | option input in the VPN zone | A ping to the gateway fails |
| A tunnel client reaching another LAN host | Forwarding from the tunnel zone to the LAN zone | config forwarding plus the zone assignment | The gateway answers and the file share times out |
| The router's own traffic leaving the WAN | Output policy, and translation if the far side needs it | option output and option masq | The tunnel never establishes, or replies vanish |
როუტერზე მსმენელს ერთი ვიწრო შემავალი წესი სჭირდება
როუტერზე არსებული OpenVPN სერვერი იღებს როუტერზე მისამართებულ ტრაფიკს, ამიტომ მისი გარე კავშირი დამოკიდებულია იმ ზონის შემავალ პოლიტიკაზე, რომელიც მას ატარებს. დაუშვით კონფიგურირებული ტრანსპორტი და პორტი, ხოლო დანარჩენი ყველაფერი ამ ზონაში უარყოფილად დატოვეთ. ერთი პორტის წესი გაცილებით მცირე ცვლილებაა, ვიდრე მთელი ზონის დაშვება, და სწორედ ის არის, რისი ახსნაც ერთი წლის შემდეგაც შეძლებთ.
ორი რამ ხდის ამ წესს უსაფრთხოდ შესანარჩუნებლად: ის ასახელებს პორტს, რომელსაც სერვისი რეალურად იყენებს, და დგას ზონის განსაზღვრების გვერდით, რათა შემდეგმა ადამიანმა დაინახოს, რატომ არსებობს. ქვემოთ მოცემული სტრიქონები მხოლოდ ფორმაა, სადაც პორტი წარმოადგენს სერვერზე კონფიგურირებულს. შეცვალეთ ეს პორტი ორივე ადგილას, როცა სერვისი გადავა, რადგან ძველზე დარჩენილი წესი აუდიტამდე უხილავია.
config zone
option name 'wan'
option input 'REJECT'
option forward 'REJECT'
option output 'ACCEPT'
option masq '1'
config rule
option name 'allow-openvpn'
option src 'wan'
option proto 'udp'
option dest_port '1194'
option target 'ACCEPT'გადატვირთვამდე გადაამოწმეთ, რადგან firewall ფაილში სინტაქსური შეცდომა შეიძლება როუტერი სამუშაო წესების ნაკრების გარეშე დატოვოს. fw4-ის მქონე გამოშვებაში შემოწმება ცალკე ბრძანებაა და ის ხმამაღლა ვარდება, ნაცვლად იმისა, რომ ჩუმად მიიღოს გატეხილი ბლოკი. ხელახლა ჩატვირთეთ მხოლოდ შემოწმების გავლის შემდეგ და შეინახეთ წინა ფაილი იქ, საიდანაც შეგიძლიათ მისი დაბრუნება.
fw4 check
service firewall reloadკლიენტის მოთხოვნა გადაგზავნაზე გადის, არა შემავალზე
აუთენტიფიკაციის შემდეგ, LAN სერვისის მოთხოვნა გვირაბის კლიენტისგან წარმოქმნის გადაგზავნილ ნაკადს, ამიტომ მისი განმსაზღვრელი კონტროლი გვირაბის ზონასა და LAN ზონას შორის გადაგზავნის ურთიერთობაა. მიანიჭეთ გვირაბის ინტერფეისი სასურველ ზონას, შემდეგ გამოაცხადეთ მიმართულება, წყაროები და სერვისი. ზონის მინიჭება არის ის, რაც გადაგზავნის წესს აზრს აძლევს, და ორივე მხოლოდ ერთად წაკითხვისას აქვს აზრი. გადაგზავნის ურთიერთობა, რომელიც გვირაბის ზონას წყაროდ, ხოლო LAN ზონას დანიშნულების ადგილად ასახელებს, იკითხება როგორც ერთი განზრახ გადაწყვეტილება, მაშინ როცა მთელი ზონის ორი დაშვება შემთხვევად იკითხება.
თავად როუტერთან მისვლა კვლავ შემავალ გზას იყენებს, ამიტომ შესასვლელისკენ ping არაფერს ამბობს მის უკან არსებულ ფაილების გაზიარებაზე. ეს ორი მარცხი სხვადასხვა ბლოკში ცხოვრობს და სხვადასხვა ცვლილებით სწორდება. დაწერეთ ორივე გზა ცალ-ცალკე, სანამ რომელიმეს შეცვლით.
მისამართების ნიღაბი მარშრუტიზაციის გადაწყვეტილებაა, არა ნებართვა
მისამართების ნიღაბი გადაწერს შერჩეული გამავალი ტრაფიკის წყაროს მისამართს. მას შეუძლია იხსნას გასასვლელი კონსტრუქცია, სადაც შორეულ მხარეს დაბრუნების მარშრუტი არ აქვს, და ასევე მალავს ცალკეული კლიენტების მისამართებს ნებისმიერი სერვისისგან, რომელიც მისამართებს აღრიცხავს ან მისამართით ავტორიზაციას აკეთებს. მისი გამორთვა დაბრუნების გზის შესახებ მარშრუტიზაციის არჩევანია, არა უსაფრთხოების ჩამრთველი, რომელიც შიდა ხვრელს კეტავს. გვირაბს, რომელიც თარგმანის ჩართულობით მუშაობს და იშლება მისი გამორთვის წამს, ჩვეულებრივ აკლია დაბრუნების მარშრუტი და არა firewall წესი.
მარშრუტიზებული ალტერნატივა თარგმანის ნაცვლად შორეულ მხარეს დაბრუნების მარშრუტს მოითხოვს. არც ერთი ვარიანტი არ იძლევა firewall-ის ნებართვას ან აპლიკაციის ანგარიშს, ამიტომ ნიღბის გამორთვა თითქმის არასოდეს არ ასწორებს გვირაბის კლიენტს, რომელიც ვერსად აღწევს. IPv4-ისა და IPv6-ის პოლიტიკასაც ცალკე მოეპყარით, რადგან ერთი თარგმანის პარამეტრი ორივე ოჯახს არ აღწერს.
დაამტკიცეთ გადაწყვეტილება დაშვებული და უარყოფილი მოთხოვნით
გააგზავნეთ ერთი მოთხოვნა, რომელიც უნდა დაიშვას, და ერთი, რომელიც უნდა უარყოფილ იქნას, შემდეგ დაადგინეთ კონტროლი, რომელმაც ყოველი გადაწყვეტილება მიიღო. გვერდი, რომელიც შემთხვევით იტვირთება, მტკიცებულება არ არის; მტკიცებულებაა წესი, რომელიც დაემთხვა, იმ ჯაჭვში, სადაც დაემთხვა. უარი ისევე მნიშვნელოვანია, როგორც წარმატება, რადგან აჩვენებს, რომ პოლიტიკა რაღაცას აკეთებს და არა ის, რომ ყველაფერი დაშვებულია.
მიმდინარე გამოშვებაზე ორი ბრძანება გაძლევთ ამ მტკიცებულებას. შესაბამის წესზე მრიცხველი იძვრება, როცა მოთხოვნა მიიღება, და ჟურნალი აჩვენებს ჩამოგდებას, თუ წესისთვის ჟურნალირება ჩართეთ:
nft list chain inet fw4 forward_wan
logread -f | grep -i -E 'DROP|REJECT'შეინარჩუნეთ მართვის გზა, რომელსაც ჯერ კიდევ შეგიძლიათ გამოიყენოთ, სანამ რომელიმე firewall პოლიტიკას შეცვლით, და მიჰყევით კონფიგურაციის მფლობელის შემოწმებისა და დაბრუნების პროცესს. ცვლილება, რომელიც როუტერიდან გკეტავთ, ტესტის შედეგი არ არის, ეს მეორე ინციდენტია. ჩაწერეთ ზონა და ტრაფიკის როლი ყოველი დაკვირვების გვერდით, რათა შედეგების წყვილმა ახსნას პოლიტიკა და არ აღწეროს იღბლიანი გვერდის ჩატვირთვა.