Hanyar IPv6 tsakanin wurare biyu a kan VPN da ke akwai
WAN mai IPv4 kawai na iya ɗaukar IPv6 na ciki. Bi masu zaɓi, hanyoyin kernel, turawa da kari na dawowa wanda ke watsar da amsoshi a ɓoye.
Sa’ad da ka ƙara kari na IPv6 a ramin waje-zuwa-waje, fakitin ba ya tafiya yadda zanen ke nuna. Ƙofar gida tana ɗaukar dukan fakitin IPv6, tana ɓoye shi, sannan ta sa kan waje na IP a gabansa wanda iyalin adireshin sa ke ƙayyadewa da adireshin ƙarshen, ba abin da ke ciki ba. Ƙofar nesa tana cire wannan kan na waje sannan ta tura fakitin asali zuwa LAN ɗinta, inda ya sake zama fakitin IPv6 na yau da kullum. Ramin waje da zirga-zirgar ciki tattaunawa biyu ne daban waɗanda ke raba maɓalli, biyu na ƙarshe, ba wani abu ba.
Kansu biyu, iyalai biyu na adireshi
A yanayin rami na IPsec, fakitin IPv6 na ciki ya zama kaya a bayan kan ESP. Kan waje da ke ɗauke da wannan fakitin ESP na iya zama IPv4 ko IPv6, kuma yana bin local_addrs da remote_addrs. WireGuard yana yin haka da ƙarancin biki: fakitin ciki shine kaya na datagram na UDP zuwa ƙarshen abokin. Dukansu suna barin kan ciki ba a taɓa shi ba, shi ya sa gefen nesa zai iya tura shi bayan buɗewa.
Hanyar tsakanin wuraren tana ganin UDP 4500 kawai lokacin da IPsec ke amfani da NAT traversal, ko UDP 51820 ga mai sauraren WireGuard na yau da kullum. Kowane mai turawa a hanya na iya zama IPv4 kawai kuma zirga-zirgar IPv6 tana wucewa duk da haka, domin ba ya taɓa bayyana a matsayin fakitin IPv6 a wannan hanyar. Wannan yana ba da rabuwa ta farko mai tsafta: tcpdump -ni eth0 udp port 51820 yana nuna hanyar ɓoyayye, tcpdump -ni wg0 ip6 yana nuna zirga-zirgar ciki. Ɗaukar waje mai aiki tare da na ciki marar motsi yana nufin kernel ba ya saka IPv6 cikin ramin; wannan turawa ne ko manufa, ba yanayin haɗi ba.
Ƙofar kuma tana rage Hop Limit na ciki yayin da take turawa, don haka ana ƙididdige ƙarshen a matsayin masu turawa a hanyar IPv6. Adadin hops na waje da Hop Limit na ciki suna tafiya daban, kuma fakitin da ya mutu a ƙofar nesa ya mutu a turawa, ba a ɓoyewa ba.
Masu zaɓi da AllowedIPs sune jerin izini
IKEv2 yana tattaunawa game da waɗanne kari na ciki child SA zai iya ɗauka. A strongSwan 5.9 da bayan haka, rubuta su a cikin swanctl.conf yana kama da haka:
children {
net6 {
local_ts = 2001:db8:aa::/48
remote_ts = 2001:db8:bb::/48
mode = tunnel
esp_proposals = aes256gcm16-prfsha384-ecp384
start_action = trap
}
}
Ka bar local_ts da remote_ts kuma strongSwan yana samo su daga subnet ɗin interface da yake zaɓa. A kan mai masaukin dual-stack wannan gajeriyar hanya tana yawan samar da biyu na IPv4 kawai: SA yana tashi kuma ana ƙin IPv6 kafin ya isa lambar ESP. Rubuta duka karin yana sa SA ya cancanci ɗaukar su, kuma start_action = trap yana ɗaga shi a fakitin farko da ya dace.
WireGuard yana da jeri ɗaya da ke yin ayyuka biyu. A cikin block na abokin, AllowedIPs = 2001:db8:bb::/48, fd00:bb::/48 shine duka hanyar da ake girka lokacin aikawa da matatar da ake amfani da ita lokacin karɓa: fakitin da aka buɗe wanda tushensa na ciki ya faɗi waje da jerin wannan abokin ana watsar da shi a ɓoye. wg-quick yana ƙara hanya ga kowane shigarwa, don haka block na abokin da ke ƙasa ba ya buƙatar umarnin ip -6 route daban.
[Interface]
Address = 2001:db8:aa:ff::1/64, fd00:aa:ff::1/64
ListenPort = 51820
[Peer]
PublicKey = <site-b-public-key>
Endpoint = 203.0.113.20:51820
AllowedIPs = 2001:db8:bb::/48, fd00:bb::/48
Duka jerin dole su kasance a kwatance: waje B yana karɓar karin waje A a matsayin mai zaɓi na nesa kuma yana tura shi baya, kuma ramin yana aiki ne kawai lokacin da hanyoyin biyu suka yarda. Jeri marar daidaito yana ba da alamar da ke ɓatar da lokaci mafi yawa — handshake lafiyayye, ƙididdiga suna motsi a gefe ɗaya, da ping daga A zuwa B da ke yin nasara yayin da babu abin da ya fito daga B ya isa A.
Turawa, hanyoyi da kari na dawowa
Linux ba ya tura IPv6 sai ka ce, kuma saitin na kowane namespace ne ba na kowane interface ba:
sysctl -w net.ipv6.conf.all.forwarding=1
ip -6 route add 2001:db8:bb::/48 dev wg0
ip -6 route get 2001:db8:bb::10 from 2001:db8:aa::10
Layin na biyu shine wanda mutane ke mantawa a ƙirar da ta dogara kan hanyoyi. IPsec na tushen manufa yana girka manufar XFRM da ta dace da karin, amma tsarin da ya dogara kan hanyoyi tare da vti6 ko WireGuard yana buƙatar ainihin hanyar IPv6 da ke nuni ga wannan na'urar. Ci gaba da sysctl a ƙarƙashin /etc/sysctl.d/; in ba haka ba sake kunnawa yana mayar da turawa zuwa kashe a ɓoye.
Turawa yana da wani sakamako da ya kamata a sani: kernel sannan yana watsi da tallan mai turawa sai dai idan net.ipv6.conf.<wan>.accept_ra ya zama 2, don haka ƙofar da adireshin WAN ɗinta ke zuwa ta SLAAC na iya rasa hanyar ta ta yau da kullum a lokacin da ka kunna turawa. Saita accept_ra = 2 a wannan interface a cikin fayil ɗaya kuma hanyar tana rayuwa. Jikin waje B kuma dole ya koyi 2001:db8:aa::/48 daga ƙofar ramin, ta hanyar tsayayyiyar hanya ko ka'idar turawa a kan ramin, in ba haka ba amsar tana mutuwa cikin cibiyar sadarwar B kanta.
Bincike mai matakai huɗu da ke gano inda karyewar
Yi aiki a wannan tsari kuma ka tsaya a matakin farko da ya kasa, domin kowane mataki na gaba ya dogara da na baya.
- Masu zaɓi:
swanctl --list-sasya kamata ya nuna biyun kari na IPv6 a kan child SA, kowg show wg0 allowed-ipskarin na nesa tare dalatest-handshakesna kwanan nan. - Hanyar kernel:
ip -6 route get 2001:db8:bb::10dole ya amsa da na'urar ramin, ba interface na WAN ba. - Ɗaukar ciki:
tcpdump -ni wg0 ip6yayin da kake ping tsakanin ingantattun masaukin LAN. Fakitin da ke fita amma babu wanda ke dawowa suna nuni ga hanyar ko katangar wuta ta B; babu fakitin kwata-kwata da ke nuni baya ga mataki 1 ko 2. - Makoma: a kan masaukin B,
ss -6 -ltnyana tabbatar da cewa sabis ɗin yana saurare a kan IPv6, kuma ƙididdigar katangar wuta ta gida suna nuna ko an karɓi fakitin ko an watsar da shi.
MTU yana cikin wannan zagaye. Masu turawa na IPv6 ba sa rarrabuwa, don haka fakitin da ya yi girma ana watsar da shi kuma Packet Too Big yana dawowa zuwa mai aikawa. Idan handshake da ƙananan ping suna aiki amma canja wurin fayil ya tsaya, rage kaya har sai ya wuce: ping -6 -s 1400 -c 3 2001:db8:bb::10. Ƙofofin WireGuard suna da MTU na bytes 1420 ta yau da kullum kuma IPsec a kan IPv4 yana cire fiye da haka, don haka saita MTU na ciki ya fi kyau fiye da fatan gano MTU ta hanya ta cikin katangar wuta da ke watsar da ICMPv6.
Yanayin gazawa da suke kama da matsalolin katangar wuta
Wanda ya fi yawa ba katangar wuta ba ce kwata-kwata: sabis ɗin yana ɗaure ga 0.0.0.0 maimakon ::, rikodin AAAA yana nan, kuma abokin ciniki yana samun ƙin sauri ta IPv6 wanda mai binciken dual-stack ke ɓoyewa ta hanyar komawa IPv4. Idan wasu aikace-aikace ne kawai ke kasawa, duba iyalin saurare kafin ka taɓa saitin dokoki.
Na biyu shine tacewar ICMPv6. Neighbor Discovery da Packet Too Big wani ɓangare ne na aiki na yau da kullum, ba bincike ba, kuma manufar da ke watsar da duk ICMPv6 tana samar da rami da ke haɗawa, yana tabbatarwa, sannan ya tsaya a kan duk abin da ya fi ƙaramin fakitin girma. Ba da izini ga nau'ikan da hanyar ta dogara da su kuma bar ƙididdiga a kunne domin watsi ya kasance a bayyane.
Na uku kari ne da aka ƙara wa ramin amma ba a taɓa ƙara shi a cikin shirin adireshi na wurin da ya mallaki ba, don haka babu mai turawa da ke sanar da shi kuma babu mai masauki da zai iya amsawa daga gare shi. Fara da kari ɗaya da biyu na masauki, tabbatar da hanyoyin biyu da matakai huɗu, sannan ƙara sauran; karyewar kari ya kasance layi ɗaya a cikin tsari maimakon sake ƙira. Ikilisiyar hukuma ɗaya tilo da ta cancanci a buɗe ita ce RFC 8200, wadda ke bayyana kan da ramin ke ɗauka.