IPv6 туннелиңиздин өнөктөшүнө ping ишке ашпай жатабы? :: дарегин текшериңиз
Бүт нөлдөн турган интерфейс идентификатору — бул ички тармак маршрутизаторунун anycast дареги, хост эмес. ::1 жана ::2 дайындаңыз, префиксти маршруттаңыз жана маршруттарды күнөөлөөдөн мурун multicast текшериңиз.
IPv6 туннелиңиздин бир учу экинчисине ping жөнөтөт, жана дайыма бир гана багыт жооп берет. Интерфейс күйүп турат, маршрут туура көрүнөт, журналда аны түшүндүргөн эч нерсе жок. Сиз дайындаган дарек — ички тармак маршрутизаторунун anycast дареги, ал такыр хост дареги эмес, жана эки учтуу байланышта анын так бир жеткирүү максаты бар: жөнөтүүчү. Таймауттун эч бир мааниси муну оңдобойт, анткени дарек сиз ойлогон ишти аткарбайт.
Даректи көрсөткөн белги
Байланыштагы ар бир хост жооп берет, интерфейс идентификатору толук нөл болгон хосттон башкасы. Ошол формага адресделген пакет аныктама боюнча ички тармактагы маршрутизаторго жеткирилет, ошондуктан чекит-чекит туннелинде ал өзүн жөнөткөн машинага кайтат. Алыс учтан бул жетүүгө мүмкүн болбогон өнөктөш катары окулат; жакын учтан тынчтык катары. Ошол эле префикстин башка идентификаторун койсоңуз, башка эч өзгөрүүсүз белги жоголот, жана маршруттарга тийүүдөн мурун алынуучу тастыктоо ушул.
Толук нөл идентификатор anycast катары корголгон
RFC 4291 толук нөл интерфейс идентификаторун ички тармак маршрутизаторунун anycast дареги катары сактайт, ошондуктан /64 сыяктуу 2001:db8:4a::/64 ичинде 2001:db8:4a:: дарегинде пайдалуу хост жок. Бул коргоо өз ордун актайт: маршрутизатор жарыялоолору жана кошуналарды издөө ошол формага адрес берет, ал эми маршрутизатор өзү тейлеген префикс үчүн жооп берет. Бул маанини туннелдин учуна дайындоо жалбыракка маршрутизатор ролун берет, ошондуктан эч нерсе кайтпайт. Префикстеги башка ар кандай идентификатор хост катары иштейт, ошондуктан оңдоо адатта бир сан.
Коргоону туннелдин учунда ээлей албаган рол катары кабыл алыңыз, маршрут менен айланып өтүүчү кызыктай нерсе катары эмес.
Хост даректерин дайындаңыз жана префиксти маршруттаңыз
Эки уч үчүн ::1 жана ::2 тандаңыз, бирин бул команда менен кошуңуз: ip -6 addr add 2001:db8:4a::2/64 dev tun0, анан алыс префиксти адресоо аракетинен тышкары аны маршруттаңыз. 2001:db8:4a::/64 үчүн туннелден чыгуучу маршрут алыс тарапты жеткиликтүү кылат; даректин өзү гана жергиликтүү интерфейсти конфигурациялайт.
Толук туннел үчүн үчүнчү кадам бар, түзмөк аркылуу глобалдык unicast үчүн демейки маршрут, бул баарын туннелге жөнөтүүнүн IPv6 барабардыгы. Аны өткөрүп жиберсеңиз, IPv4 туннелдин ичинде жүргөндө IPv6 физикалык байланышты колдоно берет, ошондуктан хост сиз жабылган деп ойлогон трафикти так ошону агызат. Муну менен ырастаңыз: ip -6 route get 2001:4860:4860::8888 жана жоопту болжолдоонун ордуна кайсы түзмөктү атаганын окуңуз.
multicast маршруттоодон мурун четке кагылат
Android VpnService.Builder үчүн даректерди жана маршруттарды LinkAddress аркылуу текшерет, жана бул конструктор multicastты түз эле четке кагат. Ага маршрут катары multicast префиксин берсеңиз, натыйжа маршрут эмес, жаман LinkAddress параметрлеринин ийгиликсиздиги болот, бул тармактын эмес, текшерүүнүн жообу. Баш тартуу алып жүрүүчүгө туура келет: чекит-чекит tun түзмөгүндө байланыш катмарынын multicastы жок, ошондуктан анын үстүндөгү топтук маршруттун орнотулуучу жеткирүү модели жок. Топтук даректерди кол менен конфигурациялоонун ордуна стек өзү түзөт жана керектейт.
IPv6 all-nodes жана solicited-node даректери ошол эле эрежеге кирет. Интерфейс аларды стек ошол жерге койгондуктан алып жүрөт, кандайдыр бир саясат аларды көздөгөндүктөн эмес.
Туннел анын ордуна эмнени алып жүрө алат
туннел аркылуу multicast издөөнү жылдыруу үчүн топ мүчөлүгүн түшүнгөн катмар керек: Ethernet сегментин көрсөткөн TAP көпүрөсү, колдонмо деңгээлиндеги реле же кайсы өнөктөштөргө көчүрүү керектиги ачык айтылган маршруттоо протоколу. VpnService моделинде алардын эч бири жок, анда колдонмо пакеттерди окуп-жазат жана туннел үчүн топко кошулуучу чакыруу жок. Же топторду түшүнгөн компонентти кошуңуз, же талапты долбоордон алып салыңыз.
Unicast, тескерисинче, жогорудагы даректер жана маршруттардан башка эч нерсе талап кылбайт, ошондуктан туннелдер аны алып жүрөт деп күтүлөт, ал эми издөө протоколу ишке ашпаганда алар күнөөлөнөт.
Бир нерсени дайындоодон мурун үч текшерүү
Дарек anycast формасы эмес экенине, ал multicast эмес экенине жана префикс түзмөккө гана дайындалып калбастан маршрутталганына ынаныңыз. Анан сынагыңызды чыныгы хост болгон жерге жөнөтүңүз, анткени anycast дарегине багытталган ping жөнөтүүчүнү өлчөйт жана жол тууралуу эч нерсе айтпайт. Ошол үч текшерүүнү өзгөртүүлөр жазуусунда сактаңыз, кийинки жайгаштыруу аларды кайра ачпасын.
Платформа эч качан орнотпогон маршрутту узагыраак күтүү менен оңдоого болбойт, ал эми эч качан хост болбогон даректи жакшыраак ping менен оңдоого болбойт.