Адрас з дыяпазону IPv6 з'яўляецца на тэставай старонцы, тунель яго відавочна не перадае, а самая папулярная парада ў інтэрнэце — адключыць IPv6 усюды. Гэтая каманда сапраўды робіць панэль ціхай. Яна таксама выдаляе пратакол, ад якога можа залежаць сетка доступу, і пакідае вас без уяўлення, ці быў адрас сапраўднай уцечкай, адрасам інтэрфейса link-local ці рэзалверам, які робіць сваю працу. Тры ўмовы вызначаюць правільнае кіраванне, і толькі адна з іх вядзе да блакавання.

Вызначце, што насамрэч вымераў інструмент

Самая частая ілжывая трывога — гэта адрас link-local, які пачынаецца з fe80: і існуе на кожным інтэрфейсе, здольным да IPv6, незалежна ад таго, ці можа машына дасягнуць інтэрнэту праз IPv6. Ён з'яўляецца ў спісах інтэрфейсаў і ў некаторых дыягностыках праграм і нічога не кажа пра ваш шлях трафіку.

Другая ілжывая трывога — унікальны лакальны адрас у fc00::/7, гэта прыватны дыяпазон, які выкарыстоўваецца ўнутры сеткі. Інструмент, які друкуе кожны адрас, які мае хост, ахвотна пакажа яго побач з публічным. Хто чытае хутка, называе гэта ўцечкай і потым марнуе гадзіну на праблему, якой не існуе.

Трэцяя зусім не ілжывая трывога. Глабальны адрас, які дасягае інтэрнэту па-за тунелем, — гэта сапраўдная ўцечка, і яго варта вымераць, перш чым нешта вырашаць:

ip -6 addr show scope global
ip -6 route show default
curl -6 -sS --max-time 6 https://ifconfig.co

Калі першая каманда друкуе глабальны адрас, а трэцяя вяртае публічны адрас IPv6, які не належыць тунелю, у вас ёсць сапраўдны шлях па-за тунелем. Калі першая друкуе толькі запісы link-local, уцечкі, якую трэба выпраўляць, ніколі не было.

Тры ўмовы вызначаюць кіраванне

Рашэнне не «IPv6 добры» ці «IPv6 дрэнны». Рашэнне ў тым, у якой з трох сітуацый вы знаходзіцеся, і ў кожнай свой правільны адказ з розным коштам, калі памыліцца.

SituationCorrect controlCost if you disable IPv6 instead
Exit has no IPv6, host doesBlock IPv6 deliberately in the tunnel policySame visible result, no documentation of intent
Exit carries IPv6, host leaksRoute IPv6 into the tunnel and verifyYou lose IPv6 reachability entirely
Access network is IPv6-onlyChange nothing; use the tunnel's IPv6Machine loses connectivity completely

Першы радок — гэта тое, што звычайна маюць на ўвазе, і гэта слушна. Кліент, чый выхад не падтрымлівае IPv6, не павінен моўчкі выпускаць уласны трафік IPv6 хоста, бо гэта дакументаваная ўцечка двайнога стэка. Сэнс у тым, каб блакаваць гэта як абвешчаную палітыку, а не адключаць пратакол у ядры. Бачны вынік аднолькавы, і толькі адзін з іх можна потым правесці рэвізію.

Трэці радок — гэта месца, дзе агульная парада робіцца актыўна шкоднай. Мабільныя аператары і некаторыя хатнія злучэнні трымаюць сеткі IPv6-only з трансляцыяй для прызначэнняў IPv4. Выдаліце там IPv6 — і вы выдаліце адзіны транспарт, які прапануе сетка, што дае значна горшы збой, чым той, які вы дыягнаставалі.

Калі выхад не мае IPv6, блакуйце яго свядома

Аддайце перавагу ўласнаму механізму кліента, бо ён дзейнічае менавіта пакуль тунель узняты і вяртаецца, калі той падае. OpenVPN мае для гэтага опцыю, а iptables мае эквівалентнае правіла для іншых кліентаў:

block-ipv6
ip6tables -A OUTPUT -o eth0 -j REJECT --reject-with ipv6-port-unreachable

Дырэктыва належыць профілю; правіла — файрволу, які вы можаце прагледзець і выдаліць. Абодва адмаўляюць закрыта, што і патрэбна, і абодва бачныя ў дыфе канфігурацыі, чаго не скажаш пра sysctl ядра, пахаваны ў стартавым скрыпце.

Запішыце, чаму гэта там. Правіла блакавання без каментара выдаліць наступны чалавек, якому IPv6 спатрэбіцца для нечага іншага, і тады ўцечка ціха вернецца.

Калі выхад перадае IPv6, маршрутызуйце яго і праверце абодва сямействы

Перадача IPv6 — лепшы адказ, калі сервер яго падтрымлівае, і гэта не нашмат цяжэй. Патрабаванне: інтэрфейс тунеля мае адрас у гэтым сямействе, а маршрут па змаўчанні для яго вядзе ў тунель, а не з фізічнага інтэрфейса:

ip -6 route get 2606:4700:4700::1111
ip -6 route show default
curl -6 -sS --max-time 6 https://ifconfig.co
curl -4 -sS --max-time 6 https://ifconfig.co

Пошук маршруту — вырашальны тэст: калі ён называе інтэрфейс тунеля, трафік IPv6 перадаецца. Два выклікі curl затым пацвярджаюць, што бачыць кожнае сямейства, і іх параўнанне — гэта спосаб даказаць, што абодва шляхі цяпер выходзяць праз адзін выхад.

Не спыняйцеся на паспяховым злучэнні. Перападключыце тунель і праверце зноў, бо прасунуты маршрут IPv6 можа згубіцца пры пераўсталяванні, калі сервер дасылае яго толькі ў пачатковай канфігурацыі. Затым праверце адзін выключаны пункт прызначэння, бо правілы split-tunnel — гэта месца, дзе два сямействы найчасцей разыходзяцца.

Калі сетка доступу толькі IPv6, пакіньце яе ў спакоі

Некаторыя сеткі даюць толькі IPv6 і чакаюць, што прылада дасягне службаў IPv4 праз механізм трансляцыі на баку аператара. Адключэнне IPv6 на такой машыне — не паляпшэнне бяспекі; яно выдаляе адзіны маршрут да ўсяго. Гэта збой, які вы самі сабе ўчынілі дзеля выніку тэсту, які нікому не быў патрэбны.

Сімптом памылкі тут адметны і непрыемны: тунель нібы ўсталёўваецца, развязанне імёнаў працуе, а нічога не загружаецца. Калі вы бачыце гэта пасля змены IPv6, неадкладна аднавіце наладу і працягвайце дыягностыку ў іншым месцы.

Што б вы ні выбралі, трымайце рашэнне яўным у профілі або файрволе, прывяжыце яго да таго, што выхад насамрэч падтрымлівае, і адзначце паводзіны двайнога стэка, якія апісвае абмеркаванне двайнога стэка RFC 7359 . Абвешчанае блакаванне — гэта палітыка. Адключаны пратакол — гэта абыход, які ніхто не можа праверыць, і з тэставай старонкі яны выглядаюць аднолькава.

Падобныя артыкулы