IPv6 трафиги VPN аркылуу өтүшү керекпи же түздөн-түзбү?
::/0 туннелдин ичиндеби же жокпу, үч шарт менен чечиңиз: чыгуунун колдоосу, акыркы чекитке жетүү жана гана жергиликтүү тармактар.
Өткөн айда эки адам менден карама-каршы жыйынтыктарды сурашты: бири IPv6 VPN менен капталышын кааласа, экинчиси кеңсе принтери иштешин улантышын каалады. Бир ::/0 маршруту экөөнү тең өз алдынча камсыздай албайт. Бул маршрут туннелдин ичиндеби, үч шартка байланыштуу, жана биринчиси аны коммерциялык чыгуулардын көбү үчүн четтетет. Эгер чыгуу IPv6 ташыбаса, демейки маршрутту ошол жакка багыттоо трафигиңизди жөнөтө турган жери жок туннелде жашырат.
Жоопту үч шарт аныктайт
Демейки маршрут — бир сап, ::/0, ал так маршруту жок ар кандай IPv6 багытына туура келет (RFC 4291). Аны орнотуу оңой. Муну кылыш керекпи же жокпу — үч шартка келип такалат.
Биринчи шарт: туташкан чыгууда иштеген IPv6 бар жана ал аны андан ары өткөрүүгө даяр. Экинчи шарт: кардарыңыз туннелдин акыркы чекитине жолду сактай алат, ал адатта маршруттай турган диапазондун ичинде болот. Үчүнчү шарт: туннелден тышкары калышы керек жергиликтүү IPv6 багыттарын атай аласыз.
Ар бир шарт өзүнчө ишке ашпайт, ошондуктан божомолдоо бүт кечти талап кылат. Ишке ашпаган биринчи шарт сизге тынчтык жана туура көрүнгөн маршрут таблицасын берет. Ишке ашпаган экинчи шарт башталгандан бир нече секунддан кийин кол кармашууну өлтүрөт. Ишке ашпаган үчүнчү шарт иштеген туннелди жана принтердин жанындагы нааразы кесиптешти калтырат.
| What you see | Decision |
|---|---|
| Exit answers IPv6 probes, no local IPv6 devices to protect | Route ::/0 into the tunnel |
| Exit answers IPv6 probes, printer or NAS reachable by a global address | Route ::/0, then give those prefixes a route of their own |
| Exit is IPv4-only inside the tunnel | Do not route ::/0; block IPv6 on the client |
Endpoint is reached over IPv6 and sits inside ::/0 | Install a host route for the endpoint first |
Чыгуу чын эле IPv6 ташыйбы?
IPv6 дареги бар туннел интерфейси аркы бет жөнүндө эч нерсени далилдебейт. Көптөгөн коммерциялык профилдер ичинен гана IPv4: сервер сизге v4 дарегин берет жана калганын таштайт. Анын үстүнө AllowedIPs-тен демейки маршрут орнотуңуз, ошондо ядро IPv6ны өнөктөшү эч качан көрбөгөн интерфейске кубаныч менен жөнөтөт.
Туннел көтөрүлгөндө кардардан текшериңиз. ping -6 -c 3 2001:4860:4860::8888 жана ip -6 route get 2001:4860:4860::8888 ар башка суроолорго жооп берет: жооп кайтабы, жана ядро кайсы түзмөнү тандады. Экинчиси сиздин туннелди атап, биринчиси эч нерсе кайтарбаса, көйгөй маршрутта эмес, чыгууда.
Чыгууну өзүңүз башкарсаңыз, кардар тести өтүшү мүмкүн, бирок жол баары бир туңгуюкка такалат. Шлюзда net.ipv6.conf.all.forwarding=1 күйүп турганын жана анын брандмауэри туннелден өткөрүлгөн пакеттерди кабыл аларын ырастаңыз. Кайра өткөрүүдөн баш тарткан чыгууга туура багытталган пакет кардар тараптан так маршруттоо катасындай көрүнөт.
Кардар акыркы чекитке чейинки жолун сактай алабы?
Бул мени WireGuard акыркы чекити гана IPv6 болгон ноутбукта кармаган учур. Акыркы чекиттин дареги кадимки глобалдык дарек, ошондуктан ал ::/0 ичине кирет. Бүт префиксти интерфейске багыттаңыз, ошондо кол кармашуу пакеттери али куруп жаткан туннелге өздөрүн кууп кирет. Туннел эч качан көтөрүлбөйт, жана кардардын чыгымында эмне үчүн экени айтылбайт.
wg-quick муну Linuxте чечет. Ал маршруттарды AllowedIPs-тен алып, өз таблицасына орнотот жана акыркы чекитке трафик адегенде негизги таблица аркылуу чечилиши үчүн саясат эрежесин кошот: suppress_prefixlength 0 эрежеси, аны ip -6 rule-тен табасыз. Ошондуктан wg-quick up кол менен жазылган ip -6 route add default dev wg0 сизди кесип салган жерде ийгиликтүү болот.
Эки абалды тең ip -6 route get <endpoint-v6> аркылуу текшериңиз, туннелди көтөрүүнүн алдында жана андан кийин. Эгер жооп туннел түзмөгүңүзгө өзгөрсө, туннелге керек жолду жок кылдыңыз. Маршруттарды өзүңүз жазганда, акыркы чекитке баштапкы шлюз аркылуу хост маршрутун кошуңуз, же акыркы чекитке IPv4 аркылуу туташып, IPv6ны жүккө калтырыңыз.
Туннелден тышкары эмне калышы керек?
Так маршруттар демейкиден басымдуу, ошондуктан звенодогу префикс же өз маршруту бар ULA диапазону кошумча күч жумшабастан иштей берет. Бул көптөгөн толук туннелдүү IPv4 конфигурацияларынын жашашынын тынч себеби: LAN префикстери демейкиден так жана туннелге эч качан кирбейт.
Бул жергиликтүү түзмөк глобалдык дарек аркылуу жеткиликтүү болгондо бузулат, бул ошол эле роутерден жарыя префикс алган принтер, NAS же телевизор үчүн кадимки көрүнүш. Ал даректер ::/0 менен гана дал келет, башка эч нерсе менен эмес, ошондуктан алар калгандар менен бирге туннелге өтүп, жоголот.
Протокол боюнча эмес, багыт боюнча чечиңиз. Эки-үч жергиликтүү хост маанилүү болсо, алардын префикстерине физикалык интерфейстен чыгуучу маршрут бериңиз, же келишилген топтомдон алып салыңыз. Тизме өсө берсе, акыйкат жооп — жазуу түрүндөгү өзгөчөлүктөр тизмеси менен IPv6 үчүн бөлүнгөн туннел, сиз тынымсыз жамап жүргөн демейки маршрут эмес.
Жооп жок болсо, аны бөгөттөңүз
IPv6ны маршрутсуз калтыруу аны жалгыз калтыруу менен бирдей эмес. Иштеген IPv6 демейкиси бар хост туннел IPv4 ташып жатканда да аны колдоно берет, ошондуктан трафик VPNдин жанынан чыгат жана IPv6ны артык көргөн ар бир кызмат сиздин чыныгы дарегиңизди көрөт. Бул агым, бөлүнгөн туннел эмес.
Бирин тандап, кайсыны тандаганыңызды жазыңыз. Демейки маршрутту багыттап, жогорудагы компромисстерди кабыл алыңыз, же туннел созулган убакытка IPv6ны өчүрүңүз. Префиксти AllowedIPs-тен алып салуу жалгыз өзү жетишсиз, анткени операциялык система өз демейкисин сактайт. Linuxте одо версия sysctl -w net.ipv6.conf.all.disable_ipv6=1; назик версия IPv6ны брандмауэр эрежеси менен туннелден тышкары таштайт. Телефон кардарларында ошол эле ишти аткарган ачык IPv6 бөгөттөө которгучу бар.
Аны агым катары текшериңиз
Туннелди көтөрүп, которгучка ишенүүнүн ордуна абалды окуңуз. ip -6 route show default бир демейки маршрутту көрсөтүшү керек, ал эми ip -6 route get LANыңыздан тышкаркы багыт үчүн туннел түзмөгүн аташы керек. Туташуу үзүлгөндөн кийин экөөнү тең кайталаңыз: туннелден узак жашаган демейки — сиз издеген ката.
Андан кийин каршы багытты текшериңиз. Жергиликтүү тармактагы хосттон кардарга анын жергиликтүү IPv6 дареги боюнча жетиңиз. Эгер бул иштебей калса, үчүнчү шарт эч качан аткарылган эмес, ошол учурда маршрут таблицасы эмне деп турса да.
Жыйынтыкты кийинки адам таба турган жерге жазыңыз: кайсы префикстер жергиликтүү бойдон калат, эмне үчүн, жана туташуу үзүлгөндөн кийин кардар эмне кылат. Runbookтагы эки сап кийинки инженерди түн ортосунда акыркы чекит циклин кайра ачуудан сактайт.