IPv6 في AWS وAzure وGCP
مكّن IPv6 في البنية التحتية السحابية الخاصة بك. أدلة تكوين عملية لـ AWS وAzure ومنصة جوجل السحابية.
لا تزال معظم أعباء العمل السحابية تعمل على IPv4 فقط. هذا يصبح مشكلة.
TL;DR - ملخص سريع
النقاط الرئيسية:
- الشبكات المحمولة IPv6 أولاً: إجبار الترجمات يضيف زمن انتقال لمعظم المستخدمين
- تكلف عناوين IPv4 مالاً في السحابة بينما IPv6 مجاني
- التكوين مشابه عبر AWS وAzure وGCP مع دعم المكدس المزدوج
- يمكن لمجموعات Kubernetes العمل بمكدس مزدوج على جميع مزودي السحابة الرئيسيين
انتقل إلى: تكوين AWS | تكوين Azure | تكوين GCP | Kubernetes
لماذا تمكين IPv6 في السحابة#
كانت الشبكات المحمولة IPv6 أولاً لسنوات. عندما يصل مستخدمو الهاتف المحمول إلى خدمتك، فإنهم يأتون من عنوان IPv6. تشغيل IPv4 فقط يعني إجبار ترجمة في مكان ما في المسار، مما يضيف زمن انتقال وتعقيد.
انتقل بعض مزودي خدمة الإنترنت إلى شبكات IPv6 فقط مع NAT64 لخدمات IPv4 القديمة. إذا لم تكن قابلاً للوصول عبر IPv6، فأنت تضيف قفزة ترجمة إضافية لهؤلاء المستخدمين.
تكلف عناوين IPv4 مالاً الآن. يفرض مزودو السحابة رسوماً على عناوين IPv4 العامة في معظم المناطق. عناوين IPv6 مجانية ووفيرة.
المعمارية أبسط أيضاً. لا NAT، لا قواعد إعادة توجيه المنافذ، لا استنفاد عناوين للإدارة. يحصل كل مثيل على عنوان قابل للتوجيه عالمياً.
تكوين AWS IPv6#
لدى AWS دعم قوي لـ IPv6 عبر معظم الخدمات. ابدأ بـ VPC الخاص بك.
إعداد VPC بمكدس مزدوج#
أضف كتلة CIDR لـ IPv6 إلى VPC الحالي:
aws ec2 associate-vpc-cidr-block \
--vpc-id vpc-abc123 \
--amazon-provided-ipv6-cidr-blockتخصص AWS كتلة /56. اربط شبكات فرعية /64 بكل منطقة توفر:
aws ec2 associate-subnet-cidr-block \
--subnet-id subnet-xyz789 \
--ipv6-cidr-block 2600:1f13:123:4500::/64حدّث جداول المسارات. يحتاج IPv6 إلى مساره الخاص إلى بوابة الإنترنت:
aws ec2 create-route \
--route-table-id rtb-abc123 \
--destination-ipv6-cidr-block ::/0 \
--gateway-id igw-xyz789عنونة EC2 لـ IPv6#
المثيلات الموجودة لا تحصل تلقائياً على IPv6. خصص العناوين يدوياً:
aws ec2 assign-ipv6-addresses \
--network-interface-id eni-abc123 \
--ipv6-address-count 1تحصل المثيلات الجديدة في شبكات فرعية مزدوجة المكدس على IPv6 تلقائياً إذا ضبطت --ipv6-address-count 1 عند الإطلاق.
داخل المثيل، تحقق من أن IPv6 مكوّن. تتعامل Amazon Linux وUbuntu مع هذا تلقائياً عبر cloud-init، لكن تحقق مع ip -6 addr show.
مجموعات الأمان#
تستخدم حركة مرور IPv6 قواعد منفصلة. إذا كان لديك قاعدة HTTP لـ 0.0.0.0/0، فلن تنطبق على IPv6. أضف ::/0:
aws ec2 authorize-security-group-ingress \
--group-id sg-abc123 \
--ip-permissions IpProtocol=tcp,FromPort=443,ToPort=443,Ipv6Ranges='[{CidrIpv6=::/0}]'خطأ شائع: نسيان إضافة قواعد IPv6 والتساؤل عن سبب فشل الاتصالات.
موازنات التحميل#
تدعم موازنات تحميل التطبيق والشبكة المكدس المزدوج. اضبط ip-address-type على dualstack:
aws elbv2 set-ip-address-type \
--load-balancer-arn arn:aws:elasticloadbalancing:... \
--ip-address-type dualstackتحصل موازن التحميل على سجلات A وAAAA تلقائياً.
Route 53 DNS#
أنشئ سجلات AAAA تشير إلى عناوين IPv6 الخاصة بك:
aws route53 change-resource-record-sets \
--hosted-zone-id Z1234567890ABC \
--change-batch file://add-aaaa.jsonيدعم Route 53 IPv6 لسجلات الأسماء المستعارة أيضاً، وهو مفيد لموازنات التحميل وتوزيعات CloudFront.
بوابة الإنترنت للخروج فقط#
إذا كنت تريد أن تبدأ المثيلات اتصالات IPv6 صادرة ولكن لا تقبل الواردة، استخدم بوابة للخروج فقط. هذا مكافئ IPv6 لـ NAT، لكن ذو حالة فقط - لا توجد ترجمة عناوين.
aws ec2 create-egress-only-internet-gateway \
--vpc-id vpc-abc123حدّث جدول المسار للشبكات الفرعية الخاصة لتوجيه حركة مرور IPv6 من خلاله بدلاً من بوابة الإنترنت العادية.
تكوين Azure IPv6#
نهج Azure مماثل لكن يستخدم مصطلحات مختلفة.
شبكة افتراضية بمكدس مزدوج#
أضف مساحة عناوين IPv6 إلى VNet الخاص بك. لا يمكنك استخدام عناوين مقدمة من Amazon هنا؛ يخصص Azure من نطاقاته الخاصة.
az network vnet update \
--resource-group myResourceGroup \
--name myVNet \
--address-prefixes "10.0.0.0/16" "fd00:db8::/56"يستخدم Azure بوادئ fd00::/8 لأمثلة التوثيق الخاصة به، لكن ستحصل على عناوين GUA عامة في الإنتاج.
أضف IPv6 للشبكات الفرعية:
az network vnet subnet update \
--resource-group myResourceGroup \
--vnet-name myVNet \
--name mySubnet \
--address-prefixes "10.0.1.0/24" "fd00:db8:1::/64"تكوين VM لـ IPv6#
تحتاج الآلات الافتراضية إلى تكوينات واجهة شبكة لكل من IPv4 وIPv6. أنشئ عنوان IPv6 عام:
az network public-ip create \
--resource-group myResourceGroup \
--name myPublicIPv6 \
--version IPv6 \
--sku Standardاربطه بواجهة الشبكة:
az network nic ip-config create \
--resource-group myResourceGroup \
--nic-name myNIC \
--name ipv6config \
--private-ip-address-version IPv6 \
--vnet-name myVNet \
--subnet mySubnet \
--public-ip-address myPublicIPv6موازن التحميل مع IPv6#
يحتاج موازن تحميل Azure إلى تكوينات IP أمامية منفصلة لـ IPv4 وIPv6:
az network lb frontend-ip create \
--resource-group myResourceGroup \
--lb-name myLoadBalancer \
--name LoadBalancerFrontEndIPv6 \
--public-ip-address myPublicIPv6كوّن مجمعات خلفية وفحوصات صحة وقواعد لكلا المكدسين. التكوين مكرر، مما يبدو مملاً لكنه يمنحك تحكماً كاملاً.
مناطق DNS#
أضف سجلات AAAA إلى Azure DNS:
az network dns record-set aaaa add-record \
--resource-group myResourceGroup \
--zone-name example.com \
--record-set-name www \
--ipv6-address 2001:db8::1تكوين GCP IPv6#
كانت جوجل كلاود أبطأ في اعتماد IPv6 من AWS وAzure، لكن الدعم تحسن بشكل كبير.
تكوين VPC لـ IPv6#
تدعم VPCs في GCP المكدس المزدوج، لكن IPv6 لا يزال في المعاينة لبعض الميزات. مكّنه عند إنشاء الشبكة الفرعية:
gcloud compute networks subnets create mysubnet \
--network=myvpc \
--region=us-central1 \
--range=10.0.1.0/24 \
--stack-type=IPV4_IPV6 \
--ipv6-access-type=EXTERNALتخصص GCP /64 من نطاقها 2600:1900::/28.
مثيلات Compute Engine#
تحصل المثيلات في شبكات فرعية مزدوجة المكدس على IPv6 تلقائياً. تحقق مع:
gcloud compute instances describe myinstance \
--zone=us-central1-a \
--format="get(networkInterfaces[0].ipv6Address)"تحتاج قواعد جدار الحماية إلى كتل CIDR لـ IPv6 صريحة:
gcloud compute firewall-rules create allow-ipv6-http \
--network myvpc \
--allow tcp:80 \
--source-ranges ::/0موازنة التحميل السحابية#
تدعم موازنات تحميل جوجل العالمية IPv6. اضبط إصدار IP عند إنشاء قاعدة إعادة التوجيه:
gcloud compute forwarding-rules create ipv6-lb-forwarding-rule \
--load-balancing-scheme=EXTERNAL \
--ip-protocol=TCP \
--ports=443 \
--address=myipv6address \
--ip-version=IPV6 \
--target-https-proxy=mytargetproxy \
--globalتزود جوجل تلقائياً عنوان IPv6 من نوع anycast لموازنات التحميل العالمية.
Cloud DNS#
أنشئ سجلات AAAA:
gcloud dns record-sets create www.example.com \
--zone=myzone \
--type=AAAA \
--ttl=300 \
--rrdatas=2001:db8::1Kubernetes وIPv6#
تدعم خدمات Kubernetes المُدارة الرئيسية الآن عناقيد المكدس المزدوج.
عناقيد المكدس المزدوج#
يمكن لـ EKS وAKS وGKE تشغيل المكدس المزدوج. تحصل الحاويات على عناوين IPv4 وIPv6. مكّن أثناء إنشاء العنقود:
# EKS
eksctl create cluster --name mycluster --ip-family ipv4,ipv6
# GKE
gcloud container clusters create mycluster \
--enable-ip-alias \
--stack-type=IPV4_IPV6يمكن للخدمات كشف كلا عائلتي العناوين. اضبط ipFamilyPolicy: RequireDualStack في بيان الخدمة الخاص بك.
عنونة Pod لـ IPv6#
تتلقى كل حاوية عناوين من كلا العائلتين. تتعامل ملحقات CNI (VPC CNI، Calico، Cilium) مع تعيين العناوين. تحقق من عناوين الحاويات:
kubectl get pods -o wideيجب أن تربط التطبيقات داخل الحاويات بـ :: للاستماع على كل من IPv4 وIPv6.
خدمة IPv6#
تحصل الخدمات على عناوين ClusterIP من كلا العائلتين. تزود خدمات LoadBalancer موازنات تحميل سحابية بواجهات أمامية مزدوجة المكدس تلقائياً إذا كان العنقود يدعم ذلك.
محاصرة واحدة: لا تدعم جميع متحكمات Ingress IPv6 بعد. تحقق من توثيق متحكمك.
التحديات الشائعة#
دعم التطبيق#
تدعم معظم اللغات والأطر الحديثة IPv6، لكن التطبيقات الأقدم قد لا تدعمه. قد تحتاج تطبيقات Java أحياناً إلى -Djava.net.preferIPv6Addresses=true لتفضيل IPv6.
قواعد البيانات صعبة. تدعم MySQL وPostgreSQL IPv6، لكن سلاسل الاتصال ومكتبات العميل تحتاج ترميز أقواس مناسب: psql -h [2001:db8::1] -p 5432.
فجوات المراقبة#
بعض أدوات المراقبة تجمع فقط مقاييس IPv4 افتراضياً. تدعم CloudWatch وAzure Monitor وCloud Monitoring IPv6، لكن لوحات المعلومات المخصصة قد تحتاج تحديثات.
أدوات APM من طرف ثالث (Datadog، New Relic) تتعامل مع المكدس المزدوج، لكن تحقق من أن وكلاءك مكوّنون بشكل صحيح.
اعتبارات التكلفة#
IPv6 نفسه مجاني، لكن تكاليف الخروج تبقى. في الواقع، بعض مزودي السحابة يفرضون نفس معدلات الخروج لـ IPv6 مثل IPv4، مما لا يوفر توفيراً في التكلفة - فقط فوائد معمارية.
تفرض AWS رسوماً على بوابات الإنترنت للخروج فقط في بعض المناطق. تحقق من صفحة التسعير قبل النشر.
اختبار IPv6 السحابي الخاص بك#
لا تفترض أنه يعمل. اختبر من شبكة IPv6 فقط.
عطّل IPv4 على جهازك المحلي مؤقتاً:
# Linux
sudo ip addr del <عنوان-ipv4-الخاص-بك> dev eth0
# macOS
sudo ifconfig en0 inet deleteحاول الوصول لخدمتك. إذا فشلت، لديك مشاكل تكوين.
استخدم أدوات عبر الإنترنت مثل ipv6-test.com للتحقق من القابلية للوصول من مواقع مختلفة.
تحقق من انتشار DNS مع dig AAAA yourdomain.com من محلّلات متعددة.
اختبر سلوك موازن التحميل تحت حركة مرور مزدوجة المكدس. بعض موازنات التحميل لديها اختلافات توجيه طفيفة بين عائلات العناوين تظهر فقط تحت الحمل.
مقالات ذات صلة#
- استراتيجيات ترحيل IPv6 - تعلم أفضل الممارسات لترحيل البنية التحتية الحالية إلى IPv6
اختبر نشرك السحابي
استخدم أداة Ping للتحقق من اتصال IPv6 لمثيلاتك السحابية.