Лаптоп има IPv6 адресу, тунел је подигнут преко IPv4, а ипак сваки IPv6 тест пада. Или још горе: тест успе и саобраћај изађе путем провајдера, а да никада није ушао у тунел. Оба исхода воде ка једној одлуци која недостаје: нико није дао рутеру префикс који би могао да рутира ка клијентима. Праћење пута од клијента ка споља открива који део недостаје.

Почните тамо где седи клијент

Погледајте клијента пре него што додирнете сервер. ip -6 addr треба да покаже тунелску адресу из пула, а ip -6 route треба да покаже гурнути префикс који показује на тунелски уређај. Када адреса постоји а рута не, гурање недостаје или га је клијент игнорисао. Када нема ниједног, сервер није доделио баш ништа.

Затим проверите шта клијент мисли о спољном свету. Подразумевана рута кроз тунел захтева сав IPv6 саобраћај, док рута за 2000::/3 захтева само глобални unicast. Обе могу бити тачне и одговарају на различита питања о цурењу.

Клијент без икакве подразумеване IPv6 руте пада на сваком јавном тесту иако је сам тунел потпуно здрав. То је празнина у политици, а не покварен тунел.

Проверите пул који сервер заиста може да рутира

Сервер може да додељује само из префикса који заиста контролише. Ако провајдер делегира /56, резервишите један /64 за тунел, а остатак оставите за LAN. Тамо где провајдер на WAN-у предаје само један /64 и ништа више не рутира, оставите LAN префикс на миру и дајте тунелу јединствен локални опсег, прихватајући да клијенти неће имати глобални излаз.

Пул и гурање иду заједно. server-ipv6 2001:db8:80:10::/64 додељује адресе, а push "route-ipv6 2000::/3" говори клијентима шта да шаљу у тунел. Гурање 2000::/3 покрива глобални unicast и оставља link-local и multicast опсеге изван тунела.

Упишите изабрани префикс у запис о постављању. Онај ко следећи пут промени предају провајдера мора да зна који /64 тунел већ заузима.

Укључите прослеђивање за другу фамилију

IPv4 прослеђивање не значи IPv6 прослеђивање. Поставите net.ipv6.conf.all.forwarding=1 и пресликајте све што IPv4 FORWARD политика већ дозвољава. На рутеру чији FORWARD ланац подразумевано одбацује, скуп правила који недостаје изгледа исто као мртав тунел.

Руковање успе, клијент добије адресу, а назад не долази ништа. Додајте правила за оба смера и за WAN крак, јер тунел који стигне до LAN-а али не до интернета пада на трећем тесту. Након неуспелог покушаја погледајте бројаче ланца, јер правило које никада није погодило је други проблем од онога које је погодило и одбацило.

ip6tables -A FORWARD -i br0 -o tun0 -j ACCEPT
ip6tables -A FORWARD -i tun0 -o br0 -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
ip6tables -A FORWARD -i tun0 -o wan0 -j ACCEPT

Један нежељени ефекат ухвати људе који на крају криве тунел. Укључивање прослеђивања тера језгро да прескочи конфигурацију адресе преко Router Advertisement, осим ако му се не каже другачије, а подразумевана рута тако научена нестаје с њом. Или прикујте изричиту подразумевану руту на WAN интерфејсу, или тамо намерно поставите accept_ra на 2. Након било које промене потврдите да рутер још има употребљив IPv6 пут ка споља пре него што поново тестирате клијенте.

Одговорите на откривање суседа када узводна страна не рутира

Опрема изнад понекад третира делегирани /64 као да припада његовој сопственој вези и одбија да рутира било који подпрефикс до VPN кутије. Када се то догоди, нешто мора да одговори на захтеве суседа за сваку клијентску адресу појединачно.

OpenVPN излаже додељену адресу client-connect куки, па записи могу да прате прави пул уместо листе која се одржава ручно. Кука додаје ip -6 neigh add proxy $ifconfig_pool_remote_ip6 dev eth0, а одговарајућа client-disconnect кука га уклања. Без уклањања proxy табела застарева и каснији клијент може да наследи запис за адресу коју никада није добио. Потврдите стање помоћу ip -6 neigh show proxy.

Третирајте proxy као заобилазно решење. Статична рута за тунелски /64 усмерена на рутер преживљава промене клијената и уопште не захтева привилеговану куку љуске.

Пратите пут ка споља, скок по скок

Тестирајте ка споља у три корака: прво тунелска адреса рутера, затим LAN домаћин и треће јавно одредиште преко traceroute6. Пул доказује први, прослеђивање и LAN заштитни зид други, а повратни пут преко горње стране трећи. Сваки неуспех сужава претрагу на један уређај уместо да поново отвори цео дизајн.

Пазите на MTU тунела, јер IPv6 рутери на путу неће фрагментирати уместо вас. Превелик MTU се појављује као packet-too-big грешка и заглављен TLS, а не као чист неуспех. Поставите га изричито и тестирајте са теретом близу границе.

Повезани чланци