Неге сіздің GCP VM OpenVPN IPv6 пулына жауап бере алмайды
OpenVPN ішіндегі мекенжай Google Cloud қосалқы желісі емес. Пулға VPC маршрутын қосыңыз, қайта жіберуді қосыңыз және интернет шығысын бөлек ұстаңыз.
IPv6 VPN клиентіңіз жұмыс жүктемесіне жетеді, жұмыс жүктемесі туннельге жауап береді, бірақ жауап ешқашан келмейді. Бірінші инстинкт — файрволды немесе туннельді кінәлау, және әдетте екеуі де кінәлі емес. OpenVPN тарататын мекенжай — тек туннель ішінде ғана бар ішкі желі; Google Cloud fd42:90::/64-тің белгілі бір VM артында болуы керектігін сіз айтпайынша білмейді.
Бұл фактіні екі бөлек жүйе үйренуі керек, және олардың тек біреуі ғана OpenVPN. VPC бірдеңені кері жіберу үшін маршрутқа мұқтаж, ал VM-ге келгенді қайта жіберуге рұқсат берілуі керек. Кез келген жартысында қателессеңіз, симптом бірдей көрінеді.
Пул — ішкі желі, қосалқы желі емес
OpenVPN сіз таңдаған диапазоннан IPv6 мекенжайларын бере алады, және бұл диапазон — туннельдің екі ұшы келісетін қиял. Ол Google Cloud қосалқы желісі емес, VPC қосалқы желілерінің тізімінде көрінбейді және VM-нің желілік интерфейсі бұл мекенжайларды алмайды. Сондықтан клиентке жауап беретін жұмыс жүктемесі желі маршрутталмайды деп санайтын мекенжайға пакет жібереді.
Пулды VPC қазірдің өзінде пайдаланатын әрбір диапазоннан тыс ұстаңыз. Оны басқа туннельдеріңіздің артындағы диапазондардан да тыс ұстаңыз. Қабаттасу таза маршруттау ақауын тек жүктеме кезінде көрінетін үзілісті ақауға айналдырады.
fd42:90::/64 сияқты бірегей жергілікті мекенжайлау осы ішкі желі үшін орынды таңдау. Префикс дизайнның табиғаты бойынша жеке екенін де еске салады. ULA пулында ешнәрсе оны қоғамдық интернетте заңды дереккөз етпейді.
VPC-ге баратын жер мен келесі қадам беріңіз
Жауапқа баратын жері пул, келесі қадамы VPN VM болатын VPC маршруты қажет. Ағымдағы статикалық маршрут құжаттамасы IPv6 баратын жер диапазондарын қамтиды және қандай келесі қадам түрлері жарамды екенін тізімдейді, сондықтан ескі IPv4 мысалын көшірудің орнына топологияңыз үшін қолдау көрсетілетін пішімді тексеріңіз.
Келесі қадам мекенжайы инстанстың бұлттық интерфейсіне шынымен тағайындалған болуы керек. VM-нің ішкі туннель мекенжайы ол мекенжай емес. Оны бәрібір пайдалану таза орнатылатын және ешқашан пакетке сәйкес келмейтін маршрут жасайды. Маршрутты жазбас бұрын интерфейстер тізімін оқыңыз.
Маршрут басымдығы жазбаның өзі сияқты маңызды. Қосалқы желі маршруттары сіз қосатын реттелген маршруттарға қарағанда нақтырақ, сондықтан бар қосалқы желі диапазонынан кесілген пул реттелген маршрут қалай жазылғанына қарамастан қосалқы желі маршрутына жоғалтады. Бөлек пул таңдаңыз, содан кейін маршруттың инстансты келесі қадам және дұрыс баратын жер префиксі ретінде көрсететінін растаңыз:
gcloud compute routes create vpn6-return \
--network=vpn-vpc \
--destination-range=fd42:90::/64 \
--next-hop-instance=openvpn-vm \
--next-hop-instance-zone=europe-west1-bҚайта жіберу екі рет қосылуы керек
Маршрут пакетті инстансқа жеткізеді. Ол инстансты өзіне арналмаған нәрсені қайта жіберуге дайын етпейді, және бұл рұқсат екі деңгейде бар.
Бұлттық жаққа инстанстың қайта жіберу мүмкіндігі қосылуы керек; бұл VM-ге өзіне тиесілі емес мекенжайларға арналған трафикті қабылдап, оны әрі қарай жіберуге мүмкіндік беретін параметр. Қонақ жаққа өзінің IPv6 қайта жіберуі қажет, өйткені ядро пакет келгеннен кейін бөлек шешім қабылдайды. Бір жауап туннельден өтпес бұрын екеуі де қосылуы керек.
sysctl -w net.ipv6.conf.all.forwarding=1Содан кейін файрвол ережелері ішкі дереккөз диапазонын екі бағытта да рұқсат етуі керек. Google Cloud декапсуляцияланған пакетті бағалайды, сондықтан тек VPC қосалқы желісін қамтитын ереже туннель сәтті болғаннан кейін пул трафигін тастайды. Пулды кіру ережесіне дереккөз диапазоны ретінде қосыңыз және ешбір реттелген шығыс саясаты жауапты бөгемейтінін тексеріңіз. Жасырын рұқсат ережесі әдепкі жағдайды қамтиды, қолмен жазылған шығыс ережесі қамтымайды.
OpenVPN-ге кімнің неге ие екенін айтыңыз
OpenVPN клиентке, сол клиент баратын жерге ие екенін білгенде қайта жібереді. Пулдан келетін клиент мекенжайларын пулды анықтайтын сервер директивасы басқарады, бірақ клиенттің артындағы қосалқы желі басқа орналасу және сол клиент үшін айқын иелік жазбасын талап етеді.
Екеуін шатастыру серверге пинг жұмыс істейтін, ал оның артында ештеңе істемейтін туннель жасайды. Қай жағдайды салып жатқаныңызды шешіңіз, содан кейін екінші push жолын қосып үміттенудің орнына сәйкес жазбаны жазыңыз.
Интернет шығысын бұл дизайннан тыс ұстаңыз
Жеке қатынас пен интернет қатынасы — бөлек жоспарлар. ULA пулы маршруттау мен қайта жіберу келіскеннен кейін туннель арқылы VPC жұмыс жүктемелеріне жете алады, ал сол пулдың VPC арқылы қоғамдық интернетке жолы жоқ, өйткені бұлттық шлюз кездейсоқ туннель дереккөзін өзінікі ретінде қабылдамайды.
Егер клиенттерге интернет шығысы да қажет болса, ол үшін қолдау көрсетілетін мекенжайлау және маршруттау дизайнын жоспарлаңыз, оны жеке пулдан тәуелсіз ұстаңыз және екі жолды бөлек тексеріңіз. Бір жұмыс істейтін жол екіншісі туралы ештеңе айтпайды, ал екеуін араластыратын дизайн сынған туннельге ұқсайтын түрде сәтсіздікке ұшырайды.