Бір сынақ LAN-ға өз WireGuard шығуын қалай беруге болады
Бір LAN-ды арнайы маршруттау кестесімен және қолжетімсіз күзетшімен WireGuard шығуына шектеңіз, ал шлюз өзінің қалыпты WAN әдепкі маршрутын сақтайды.
Үш жоба бір зертханалық мәселені шешеді: шағын LAN WireGuard серіктесі арқылы шығуы керек, ал шлюздің өзі әдеттегі жоғарғы арнасын сақтайды. Азғырғыш қысқа жол — маршрутизатордың әдепкі маршрутын туннельге көшіру, бірақ бұл қораптың өз басқару жолын және ол қайта жіберетін барлық нәрсені бұзады. Қызықты нұсқа — бір интерфейс пен бір префикспен шектелген саясат бойынша маршруттау. Нақты қолыңыздағы машина туралы үш сұраққа жауап беріп, олардың арасынан таңдаңыз.
Шығу қайда тұратынын шешіңіз
Бірінші сұрақ: бұл хост тағы бір нәрсе үшін қайта жібере ме? Арнайы зертханалық шлюз әдепкі бойынша бәрін тастайтын қайта жіберу саясатымен өмір сүре алады. Өндірістік міндеттері бар маршрутизатор бұлай істей алмайды, ал басқарылатын брандмауэрдің үстіне бәсекелес ережелер жиынтығын қою — үзілістерді жоспарлаудың дәл сол тәсілі. Екінші: қайта жүктеулер арасында екі саясат нысанын және олардың ретін ұстай аласыз ба? Үшінші: сіздің серіктесіңіз туннельдің бастау мекенжайына рұқсат бере ме және интернетке шығуды ұсына ма? Тек жеке желіні ашатын серіктес — басқа өнім, және ешбір жергілікті маршруттау өзгерісі оны түзетпейді. Қандай да бір жауап жоқ болса, шығуды оның орнына аттар кеңістігіне немесе бір реттік виртуалды машинаға қойыңыз.
Аттар кеңістігі немесе VM жадыны жұмсайды және таза жарылыс радиусын береді. Саясат бойынша маршруттау екі ережені жұмсайды және сізге жөндеуге бір қорап қалдырады.
Бастау көзіңізге рұқсат беретін шығуды таңдаңыз
Бұл зертханадағы сәтсіздіктердің көбі бір брандмауэр ережесі пайда болмай тұрып болады. Шығу операторы сіздің пакеттеріңіз аудармадан кейін алып жүретін бастау мекенжайын қабылдауы керек, ал бұл жобада ол LAN префиксі емес, туннель мекенжайы. Сондықтан маскарадтау жобаға басынан бастап кіреді, кеш қосымша ретінде емес.
Оператормен үш нәрсені растаңыз: серіктес туннель мекенжайыңызға рұқсат береді, ол өзіне қарай аяқталмай IPv4-ті қайта жібереді және шығыс NAT-ын қолданады. Біріншісіз пакеттеріңіз жетіп, жоғалады. Үшіншісіз олар жеке бастаумен шығып, келесі секірісте өледі. Содан кейін wg-quick өзінің әдепкі маршрутын орнатпайтынын тексеріңіз, мұны Table = off болдырмайды; бұл параметр маршрут жасауды басады, серіктестің AllowedIPs тексерістерін немесе оның DNS өңдеуін емес.
Екі саясат нысаны бағыттауды жасайды
Бағыттауға кесте мен ереже керек. Кесте екі маршрутты ұстайды: LAN интерфейсінен шығатын LAN префиксі және туннельден шығатын әдепкі маршрут. Ереже LAN интерфейсіне келетін және сол префиксті алып жүретін трафикті кестеге жібереді. Бастау сәйкестігімен қатар iif селекторын қолданыңыз, өйткені шлюздің өз WireGuard пакеттері жергілікті жерде пайда болады және кірме интерфейспен ешқашан сәйкеспейді.
Күзетші іздеуден бұрын келеді, кейін емес. Дәл осы рет — жобаның бүкіл қауіпсіздік қасиеті.
Күзетші сол селектордағы екінші ереже, оның үкімі unreachable. Оған жоғарырақ сандық басымдық беріңіз, сонда туннель көтерілген кезде іздеу жеңіске жетеді. Туннель маршруты жоғалғанда іздеу ештеңе қайтармайды және күзетші іздеуді тоқтатады, оны негізгі кестедегі WAN әдепкісіне түсуге жібермейді.
ip rule add from 192.168.50.0/24 iif lan0 lookup 51861 pref 1000
ip rule add from 192.168.50.0/24 iif lan0 unreachable pref 1001
ip route add table 51861 default dev wg0
Шегіну саңылауын ашпас бұрын жабыңыз
Алдымен күзетшіні, содан кейін іздеуді орнатыңыз. Керісінше жасау секундтарға созылатын терезені қалдырады, оның ішінде сынақ клиентінің трафигі жоғарғы арнаға жете алады.
Сүзгі суретті толықтырады. forward ілмегінде сынақ префиксі үшін LAN-нан туннельге бағытты және орныққан қайту бағытын қабылдаңыз, содан кейін қалғанының бәрін тастаңыз; сол префикстің туннель интерфейсіне NAT-ы postrouting-ке түседі. Дәл policy drop-ні қайта жіберу тізбегінде қалдыру жоқ маршрутты ағуға емес, тыныштыққа айналдырады. Кері жол сүзгісі туннель интерфейсінде бос режимді қажет етеді, өйткені декапсуляциядан кейін келген жария бастаудың ең жақсы кері маршруты WAN жағында болады. Linux all және әр интерфейс мәндерінің жоғарысын алады, сондықтан туннель интерфейсін орнату барлық жерде тексеруді әлсіретумен бірдей емес.
Мұны ақау жағдайымен дәлелдеңіз
Ядродан нақты сұрақ сұраңыз: клиенттің бастау мекенжайын және ол келетін интерфейсті атаңыз. Екеуі жоқ іздеу басқа сұраққа жауап береді және екі жағдайда да дұрыс көрінеді. Содан кейін брандмауэр санағыштарына, серіктестің беріліс күйіне және клиенттің өз қызметіне қараңыз.
Жоюды дұрыс сынаңыз. Ереже мен сүзгіні орнында қалдырып, туннельді тоқтатыңыз: клиент тоқтап қалуы керек, ал шлюздің өз трафигі жұмысын жалғастыруы керек. Содан кейін жергілікті интерфейске тимей серіктесті тоқтатыңыз, дәл осы жағдай тек маршруттың болуына сүйенетін жобаларды ұстайды. Соңында қайта жүктеп, ережелер ретін қайта тексеріңіз, өйткені күзетшіні алып тастайтын бөлшектеу ілмегі бүкіл жобаны негізгі кестеге қайтарады. Кесте нөмірін, басымдықтарды және интерфейс атауларын өзгеріс билетіне жазыңыз, өйткені ереже қосатын келесі адам — осыны бұзатын адам.