Сиз туннелди көтөрүп, туннелди булак интерфейс катары колдонуп fe80::1 дарегине ping жөнөтөсүз, бирок эч нерсе кайтпайт. Бул сиз унутуп калган firewall эрежеси эмес. Link-local дареги ал түзүлгөн бир гана шилтемеде мааниге ээ, ал эми маршрутталган VPN ал шилтеме эмес. Алыскы маршрутизатордун fe80::1 дареги алыскы LAN сегментинде жашайт; сиз башка сегментте бир секирик алыстыкта отурасыз, ал эми IPv6да маршрутизатордун link-local пакеттерди өткөрүп берүү механизми такыр жок.

fe80 префикси диапазонду эмес, камтууну сүрөттөйт

Link-local unicast — fe80::/10, ал эми аныктагыч касиет сан эмес, камтуу. Дарек бир гана шилтемеде жарактуу, жана ар бир интерфейс өз идентификаторунан бирөөнү түзөт, ошондуктан эки байланышсыз тармактагы эки байланышсыз машина эч кандай кагылышсыз fe80::1ге жооп бере алат. Префикс чындыгында «кайсы бир шилтемеде» дейт; шилтеменин өзү контекстен келет.

Хосттодо бул контекст — пайыз белгисинен кийин кошулуучу аймак, башкача айтканда scope ID: Linuxта fe80::1%eth0, Windowsта жана интерфейс индекстерин көрсөткөн куралдарда fe80::1%3 же fe80::1%12. Ядро даректи интерфейс индекси менен бирге чечип, анан жөнөтөт. Аймакты алып салсаңыз, барар жер эки ачык эмес болуп калат, ошондуктан стекке сегментти тандоонун жолу жок.

Маршрутталган туннел аны эмнеге жеткире албайт

Маршрутталган VPN — өз даректерин алып жүргөн чекит-чекит интерфейси, адатта туннелдин ичиндеги unique-local же жеке IPv6 мейкиндигинин /64. Алыскы LAN — өзүнчө шилтеме, ага туннелдин акыркы чекити сиздин атыңыздан маршруттоо жана өткөрүп берүү аркылуу жетет. Булар эки бөлөк сегмент, ошондуктан биринин дареги экинчисинде жарактуу барар жер эмес.

Өткөрүп берүү эрежеси стандартта ачык жазылган, бул клиентиңиздин кырсыгы эмес: маршрутизаторлор link-local булагы же барар жери бар пакеттерди өткөрүп бербейт. Ошондуктан маршрут таблицасы туура көрүнсө да пакет өлөт. fe80::/64 үчүн туннелге багытталган маршрут кошсоңуз, стандартка ылайык стек аны же четке кагат, же кабыл алып, дал келген ар бир пакетти таштайт: барар жердин камтуусу «ушул шилтеме гана» дейт, ал эми чыгуучу интерфейс ал шилтеме эмес.

Кошуналарды табуу ошол эле чекти бекемдейт. Хосттор link-local кийинки секириктерди 255 секирик чеги менен шилтеме камтуусундагы multicastка жөнөтүлгөн кошуна суроосу менен чечишет, ошондуктан маршрутизаторлор өткөрүлгөн нерсенин баарын четке кага алат. Муну туннел аркылуу иштетүү алыскы сегмент үчүн табууну проксилөөнү билдирет, бул башка калпак кийген Layer 2 көпүрөсү.

Экинчи, тынчыраак бузулуу бар, жана ал маршрутту баары бир мажбурлоого аракет кылгандарды кармайт: аймак. Жергиликтүү жерде кандай аймакты терсеңиз да, ал туннелдин интерфейсин атайт, ал эми сиз каалаган дарек алыскы LAN интерфейсине байланган. Экөө эч качан дал келбейт, ошондуктан пакетти алыскы учунда туура интерфейске багыттоо мүмкүн эмес.

Иш жүзүндө бузулуу кандай көрүнөт

Камтуу катасынын курал чыгарылышы маршруттоо же firewall катасындай окулат, ошондуктан адамдар туура эмес катмарда жарым күн өткөрүшөт.

What you runWhat you seeWhat it means
ping fe80::1 with no zoneInvalid argument on Linux, or a transmit failure on WindowsThe stack cannot pick an interface for an ambiguous destination
ping -6 -I tun0 fe80::1Destination unreachable, or a silent timeoutThe address is not on the tunnel link, so there is nothing on-link to answer
ssh user@fe80::1 after the tunnel is upHangs, then no route to hostThe SYN never left the machine in a deliverable form; the server logs nothing
ip -6 neigh show dev tun0Empty tableNo neighbor entry can exist for a link-local host that is not on this link
fe80::/64 inside AllowedIPs or route-ipv6Config accepted, traffic still droppedThe tunnel carried the packet; the receiving stack refused to forward it

Үчүнчү сап эң көп убакытты текке кетирет, анткени чыгарылышы жок ssh клиенти угуп жаткан кызматтын көйгөйүнө окшош. Ичке кирүүнүн кандайдыр бир жолу болсо, алыскы тарапты текшерип, sshd бардык даректерге байланганбы же бирөөнө ганабы, аны тастыктаңыз.

Маршруттоого арналган даректи колдонуңуз

Туннел аркылуу жетүү керек болгон нерсенин баары үчүн кызматка дал ушул максатта берилген даректи колдонуңуз: глобалдык unicast дарек, же fc00::/7 ичинен unique-local дарек, дал ушул ички учур үчүн бөлүнгөн диапазон. Угуучу аны чындыгында байланыштырарын тастыктаңыз, кайтаруу жолун жана хосттун каалаган firewall эрежесин текшериңиз.

Божомолдоонун ордуна алыскы хостту караңыз. ip -6 addr show бар даректерди тизет, ал эми ss -6 -ltn демон эмнени угуп жатканын тизет. fe80:: гана байланган кызмат өз сегментинен гана жеткиликтүү, бул адатта эч ким атайылап тандабаган демейки маани жана администратордун макулдугу менен өзгөртүлүшү мүмкүн.

Кызматты чындыгында кайра байлоо мүмкүн болбосо, көпүрөнү тармактык катмардын ордуна колдонмо катмарына көтөрүңүз. Алыскы хосттогу, маршрутталуучу даректе угуучу жана link-local дарекке туташкан реле маселени эч кандай сегментти кеңейтпей чечет:

socat TCP6-LISTEN:8080,bind=[fd00:1:2::10] TCP6:[fe80::1%eth0]:80

Бул жерде аймак туура тарапта, ошол шилтемеде чындыгында eth0 бар хостто турат. Клиентиңиз fd00:1:2::10 менен сүйлөшөт, ал кадимкидей маршрутталат, ал эми реле link-local секиригин жергиликтүү жерде аткарат. Ошол эле амал түзмөктүн веб UI же link-local даректи гана жарнамалаган эски BMC үчүн да иштейт.

Көпүрөлөө чындыгында жооп болгондо, жана эмнени текшерүү керек

Айрым жайгаштыруулар чындыгында бир жалпы сегментке муктаж: link-local табууну гана сүйлөгөн түзмөк, multicastка көз каранды аппарат, тегиз LANды кайталаган лаборатория. Бул Layer 2 маселеси жана ага Layer 2 жообу керек, мисалы алыскы интерфейске көпүрөлөнгөн tap түзмөгү же айкын көпүрө режими бар клиент продуктусу. Буга туннелден өткөн broadcast жана multicast трафиги, кошумча уштан ушка чейин иштеши керек болгон кошуналарды табуу талап кылынат.

Муну маршрутталган профилге fe80::/64 кошуу менен жакындатпаңыз. Бул эң начар абалды жаратат: конфигурация бүткөндөй көрүнөт, маршрут таблицасында жазуу көрүнөт, ал эми ар бир пакет экөө тең туура иштеп жаткан эки стектин ортосунда бир жерде ташталып кала берет.

ping эмес, интерфейс менен тастыктаңыз. ip -6 addr show tun0 туннелдин шилтемеси өзүнүн link-local дарегин түздүбү, аны айтат, ал эми ip -6 route get fe80::1%tun0 ядро камтууланган барар жер менен чындыгында эмне кыларын айтат. Ядро ошол интерфейсте барар жерге жетүү мүмкүн эмес десе, эч кандай туннел жөндөөсү муну өзгөртпөйт, жана профилди оңдоону токтотууга убакыт келди.

Суроону чечкен кыска иреткич:

  • Алыскы хосттогу даректи окуп, анын fe80:: же маршрутталуучу префикс экенин белгилеңиз.
  • Эгер fe80:: болсо, кызматты кайра байлаңыз, ошол хостто реле жасаңыз же сегментти көпүрөлөңүз; эгер маршрутталуучу болсо, маршрутту, firewallды же байлоо дарегин оңдоңуз.
  • Ар бир кайра текшерүүдө аймакты кайра текшериңиз, анткени көчүрүлгөн буйрук адатта туура эмес интерфейсти сактайт.

Булактар: RFC 4291, IPv6 дарек архитектурасы.

Тектеш макалалар