Када локална мрежа стигне до VPC-а кроз Cloud VPN, одредиште за услугу на Compute Engine-у обично је интерна адреса VM-а. Спољна IPv4 адреса није друга адреса коју можете убацити у исту приватну руту. Већина забуне у овој области долази од тога да се три адресе са три посла третирају као заменљиве, па почните тако што ћете именовати коју од њих користи дати пакет.

Три адресе, три посла

Именујте све три пре него што почнете да отклањате грешке на било којој од њих, јер одговор мења објекат који следеће прегледате.

AddressJob
Cloud VPN endpointwhere the IPsec peers meet
Internal IPthe address your route and firewall must name
External IPv4the platform's inbound mapping, not a guest address

Прва припада тунелу. Друга припада вашем дизајну руте и заштитног зида. Трећа припада долазном интернет приступу и пресликава се, а не прикључује. Дизајн који ради за једну од њих не говори ништа о друге две.

Зашто спољна адреса није други интерфејс

Водич за адресирање је меродаван за то како се разликују интерна и спољна доступност на Compute Engine-у. Спољна IPv4 адреса на Compute Engine-у је пресликавање један-на-један на једини интерни NIC инстанце, па гост никада не види други интерфејс ни другу адресу на том NIC-у. Оно што VM изнутра пријављује и даље је једна примарна интерна адреса.

Зато су приватни клијент који усмерава саобраћај кроз тунел према 10.24.1.7 и клијент који циља спољну адресу VM-а на различитим путевима. Отварање правила заштитног зида за јавну адресу не мења ништа на VPC рути која мора да носи саобраћај тунела, а уређивање руте на госту не помера пресликавање платформе. Изаберите адресу коју ваша рута именује, па проверавајте само објекте који њоме управљају. Та дисциплина уклања већину нагађања са овог пута отклањања грешака.

Прођите пут са gcloud-ом

Почните од инстанце и прочитајте обе адресе из истог објекта, да бисте знали о којој говори ваша документација:

gcloud compute instances describe app-1 --zone=europe-west1-b \
  --format="value(networkInterfaces[0].networkIP,networkInterfaces[0].accessConfigs[0].natIP)"

Затим потврдите усмеравање и дозволу од којих пут заиста зависи:

gcloud compute routes list --filter="destRange:10.24.1.0/24"
gcloud compute firewall-rules list --filter="sourceRanges:10.99.0.0/24"
gcloud compute vpn-tunnels describe TUNNEL_NAME --region=europe-west1

Прочитајте објављене и научене опсеге тунела, VPC руту за подмрежу радног оптерећења и правило заштитног зида које дозвољава локални извор. То троје мора да се слаже пре него што је слушалац на госту уопште релевантан.

Затим проверите госта: да ли услуга слуша на интерној адреси и да ли се њен повратни пут враћа поново кроз VPC? Слушалац везан само за јавну адресу пашће овај тест чак и када је сваки објекат на страни облака исправан.

Јавни префикс је друго питање

Ништа од наведеног не значи да свака адреса ношена унутар VPN-а мора бити RFC1918. Удаљена мрежа може легитимно да се нумерише из јавног простора, под условом да платформа подржава усмеравање и да оператер има овлашћење над адресом. То је нормалан дизајнерски избор.

То није исто као третирати обичну спољну NAT адресу као да је још једна интерна адреса подмреже. Једно је префикс који усмеравате; друго је пресликавање које платформа примењује на долазни приступ.

Спољна IPv6 адреса и посебно осмишљени распореди адреса имају сопствену семантику. Ако ваш план зависи од нечега од тога, прочитајте документацију платформе за ту функцију уместо да генерализујете из случаја IPv4. Пресликавање IPv4 је уобичајен случај, али не и једини, а изузеци имају сопствена правила.

Преклапајући опсези су други проблем

Преклапајући приватни опсези су стварни разлог зашто људи посежу за јавном адресом, а то је погрешна полуга. Промена одредишта на NAT адресу VM-а не решава преклапање; мења за коју адресу пакет тврди да јесте, без дефинисања како повратни пут функционише.

Решите преклапање намерно: пренумеришите, употребите подржани дизајн превода или усмерите кроз мрежу у којој се префикси не сударају. Свако од тога је дизајн са власником. NAT адреса није дизајн.

Документујте два поља одвојено

Забележите партнера тунела и одредиште радног оптерећења као два одвојена поља у runbook-у, свако са рутом и правилом заштитног зида које га подржава. IPsec тунел који се подигне само говори да су се стране сложиле; не говори ништа о томе на којој је адреси радно оптерећење доступно, ни о томе да ли је његова приватна рута комплетна.

Проверите стварним клијентом на другој страни: разрешите име, потврдите да враћа интерну адресу, повежите се и проверите повратни саобраћај. Документација о IP адресама за Compute Engine је референца за разлику између интерног и спољног коришћену горе.

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