WireGuard: эки жарым маршрут жана wg-quick ичиндеги 0.0.0.0/0
Эки /1 диапазону /0 сыяктуу эле адрестерди камтыйт, бирок wg-quick аларды башкача маршруттайт. Түзөтүүдөн мурун саясат эрежелерин, белгилерди жана акыркы чекиттин жолун текшериңиз.
Эки /1 префикси бир /0 сыяктуу эле так ошол IPv4 адрестерин камтыйт, жана бул барабардык өнөктөштүн уруксат берилген префикстеринин тизмесинин ичинде гана күчүндө. Орнотуу куралы кантип маршруттоону чечкен учурда ал күчүн жоготот, анткени Linux ичиндеги wg-quick демейки префиксти арифметика катары эмес, өзгөчө учур катары карайт. Атайын бутак өзүнчө таблицаны, эки саясат эрежесин, сокет белгисин жана кайтарым жолдун жөндөөлөрүн орнотот, аларды жарым маршруттардын жубу эч качан албайт. Ошондуктан түзөтүүдөн кийин прокси же браузер иштебей калганда, префикстер өзгөрүүнүн эң кызыксыз бөлүгү болуп калат.
Префикстер тизмеси бүт конфигурация эмес
AllowedIPs бир убакта эки иш аткарат, алардын бири гана камтууга тиешелүү. WireGuard үчүн тизме криптоачкыч маршруттоо болуп саналат: кайсы багыттар өнөктөшкө карай шифрленерин жана ошол өнөктөш кайсы булак адрестерин колдоно аларын аныктайт. wg-quick үчүн ошол эле тизме маршрут спецификациясы катары да кызмат кылат, ал эми ал түзгөн маршрут тизме кокустан кайсы бутакка туура келишине жараша болот. Ошондуктан эки башка тизме формасында бирдей камтуу бирдей хост абалы тууралуу эч нерсе айтпайт.
Демейки конфигурация бул чечимди сиздин колуңуздан алат, анткени Table демейки боюнча автоматтык жана маршруттардын кайда түшөрүн курал өзү тандайт. Башка тармак менеджери, таратуу каптамасы же ыңгайлаштырылган Table мааниси натыйжаны кайра өзгөртөт, ошондуктан бир хост үчүн жазылган кеңеш кийинкисинде туура эмес көрүнүшү мүмкүн.
Демейки бутак маршруттан тышкары эмнени кошот
/0 жазуусу wg-quick куралын демейки маршрут жолуна жиберет: өзүнчө маршруттоо таблицасы демейкини кабыл алат, бир саясат эрежеси белгиленбеген трафикти ошол жакка жиберет, экинчи эреже негизги таблицанын так маршруттарын ыйгарым укуктуу кылып кармайт, ал эми интерфейс өз сокетине тармактык калкан белгисин алат. Ошол белги — циклдин сакчысы. Туннелдин трафигин ташыган шифрленген датаграммалар белги коюлган бойдон чыгат, ошондуктан калганын баарын туннелге багыттаган эреже туннелдин өзүнүн ташуу пакеттерин жутуп койбойт.
Анын ордуна /1 жазууларынын жубу кадимки маршрут жолун тандайт. Конфигурацияланган таблицага эки маршрут түшөт, ал эми айланадагы механизмдердин эч бири көрүнбөйт, бул анын ашыкча экендигинен эмес, ошол код жолуна эч качан кирбегендиктен.
Эки жайгашуу кайда ажырайт
Айырмачылык адегенде рекурсия катары көрүнөт. Жарым маршруттар негизги таблицада болгондо, өнөктөштүн өз ташуу адреси туннелдин префиксинин ичине түшөт, ошондуктан туннелди ташышы керек болгон пакет туннелдин ичине багыттаган маршрутка туура келет. Бир нерсе аны бөлүп чыгарышы керек: учурдагы акыркы чекит үчүн хост маршруту, кол менен коюлган белги же интерфейске таандык эреже. Хост маршруту акыркы чекиттин адреси өзгөргөнгө чейин иштейт, бул DNS негизиндеги акыркы чекиттерде, кыдырма кардарларда жана көп өнөктөштүү конфигурацияларда болот.
Экинчиден, белгилер жөнүндө ой жүгүрткөндүн баары жүрүм-турумун өзгөртөт. Байланыштарды жергиликтүү түрдө кайра багыттаган ачык прокси жаңы сокеттерди түзөт, алардын белгилери жана булактары баштапкы кардар агымынан өзгөчөлөнөт, ал эми демейки бутак түзгөн саясат эрежелери ошол агымдарды ажыратуунун бир бөлүгү болчу. Проксинин өзүнүн чыгуучу байланышын окуу — баштапкы багытка жетүү мүмкүнбү, аны текшерүүдөн башка көнүгүү.
Түзөтүүдөн мурун эрежелерди жана белгилерди окуңуз
Туннел соо кезде учурдагы абалды жазып алыңыз, анан өзгөрүүдөн кийин дагы, жана конфигурация файлынан ой жүгүртүүнүн ордуна эки дампты салыштырыңыз. Саясат эрежелерин, ар бир таблицаны, интерфейс белгисин жана жазылган акыркы чекиттерди кошуңуз.
ip rule show
ip -4 route show table all | grep -E 'default|wg1'
wg show wg1 fwmark
wg show wg1 endpoints
Эгер чыгуунун биринчи сабы белгиленбеген трафик эрежесин жоготкон болсо жана өзүнчө таблица бош болсо, демейки бутак иштебейт, ал эми префикс арифметикасы анын таасирлерин калыбына келтирбейт. Мурун белгиси бар интерфейсте нөл белги — ошол эле сигнал, бир мааниде көрүнөт.
Чыгаруудан мурун туннелдин жоголушун көнүгүңүз
Эгер жарым маршруттардын жайгашуусу атайын тандоо болсо, ал жетишпеген бөлүктөрдү ачык берүүгө тийиш: адрес өзгөрүүлөрүнө туруштук берүүчү акыркы чекит жолу, туннел кулаганда көздөлгөн жүрүм-турум жана IPv6 үчүн барабар иштетүү. Аларды үзгүлтүк учурунда ачуунун ордуна талап катары жазыңыз. Анан ишке жарабасты көнүгүңүз, анткени физикалык жогорку каналга үнсүз кайтып түшкөн толук туннел иштешин токтоткондон жаман.
sudo ip -4 route add 198.51.100.20/32 via 192.0.2.1 dev eth0
ip -4 route get 198.51.100.20
sudo wg-quick down wg1
Маршрут издөө акыркы чекитти туннелден өтпөй физикалык интерфейстен чечиши керек, ал эми интерфейсти түшүрүү хостту дизайн убада кылган абалда калтырышы керек. Алмаштыруудан кийин иштеген прокси түзүлгөн хост абалынын маанилүү болгонун далилдейт; бирок циклды болтурбоо жана өчүрүлгөн абалдагы жүрүм-турум түзөтүүдөн аман калганын далилдебейт.