Buat subnet VPC dan IPv6-enabled IPv6 saja menggunakanAWS CLI - Amazon Virtual Private Cloud

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

Buat subnet VPC dan IPv6-enabled IPv6 saja menggunakanAWS CLI

Contoh berikut ini menggunakanAWS CLIperintah untuk membuat VPC non-default dengan blok CIDR IPv6, subnet khusus IPv6, dan subnet pribadi dengan akses internet outbound saja. Setelah Anda membuat VPC dan subnet, Anda dapat meluncurkan sebuah instans di subnet publik dan menyambungkannya. Anda dapat meluncurkan sebuah instans di subnet pribadi Anda dan memverifikasi bahwa instans tersebut dapat terhubung ke internet. Untuk memulai, Anda harus terlebih dahulu menginstal dan mengonfigurasi AWS CLI. Untuk informasi lebih lanjut, lihat Memasang AWS CLI.

Anda akan membuat yang sumber daya AWS berikut:

  • VPC

  • Dua subnet

  • Gateway internet

  • Tabel rute

  • Instans EC2

Langkah 1: Buat VPC dan subnet

Langkah pertama adalah membuat VPC. Anda diminta untuk menentukan blok IPv4 CIDR untuk VPC meskipun kami terutama difokuskan pada IPv6 dalam contoh ini. Contoh ini menggunakan blok CIDR 10.0.0.0/16 IPv4 untuk VPC, tapi Anda dapat memilih blok CIDR yang berbeda. Untuk informasi selengkapnya, lihat Ukuran VPC.

Untuk membuat VPC dan subnet menggunakan AWS CLI

  1. Buat sebuah VPC dengan Blok CIDR 10.0.0.0/16 dan kaitkan blok CIDR IPv6 dengan VPC tersebut.

    aws ec2 create-vpc --cidr-block 10.0.0.0/16 --amazon-provided-ipv6-cidr-block

    Dalam output yang dihasilkan, perhatikan ID VPC.

    { "Vpc": { "VpcId": "vpc-2f09a348", ... }
  2. Deskripsikan VPC Anda untuk mendapatkan blok CIDR IPv6 yang terkait dengan VPC.

    aws ec2 describe-vpcs --vpc-id vpc-2f09a348
    { "Vpcs": [ { ... "Ipv6CidrBlockAssociationSet": [ { "Ipv6CidrBlock": "2001:db8:1234:1a00::/56", "AssociationId": "vpc-cidr-assoc-17a5407e", "Ipv6CidrBlockState": { "State": "ASSOCIATED" } } ], ... }
  3. Buat subnet hanya IPv6 di VPC Anda dengan2001:db8:1234:1a00::/64Blok IPv6 CIDR (dari rentang yang dikembalikan pada langkah sebelumnya). Untuk informasi selengkapnya tentang opsi khusus IPv6, lihatBuat subnet di VPC Andaataumembuat-subnetdiAWSReferensi Perintah CLI.

    aws ec2 create-subnet --vpc-id vpc-2f09a348 --ipv6-cidr-block 2001:db8:1234:1a00::/64 --ipv6-native
  4. Buat subnet IPv6-satunya kedua di VPC Anda dengan2001:db8:1234:1a01::/64Blok CIDR IPv6

    aws ec2 create-subnet --vpc-id vpc-2f09a348 --ipv6-cidr-block 2001:db8:1234:1a01::/64 --ipv6-native

Langkah 2: Mengonfigurasi subnet publik

Setelah Anda membuat VPC dan subnet, Anda dapat membuat salah satu subnet IPv6 menjadi subnet publik dengan melampirkan gateway internet ke VPC Anda, membuat tabel rute kustom, dan mengonfigurasi perutean untuk subnet tersebut ke gateway internet. Dalam contoh ini, tabel rute dibuat yang mengarahkan semua lalu lintas IPv6 ke gateway internet.

Untuk membuat subnet Anda menjadi subnet publik

  1. Buat sebuah gateway internet.

    aws ec2 create-internet-gateway

    Dalam output yang dihasilkan, perhatikan ID gateway internet.

    { "InternetGateway": { ... "InternetGatewayId": "igw-1ff7a07b", ... } }
  2. Setelah menggunakan ID dari langkah sebelumnya, lampirkan gateway internet ke VPC Anda.

    aws ec2 attach-internet-gateway --vpc-id vpc-2f09a348 --internet-gateway-id igw-1ff7a07b
  3. Buat tabel rute kustom untuk VPC Anda.

    aws ec2 create-route-table --vpc-id vpc-2f09a348

    Dalam output yang dihasilkan, perhatikan ID tabel rute.

    { "RouteTable": { ... "RouteTableId": "rtb-c1c8faa6", ... } }
  4. Buat sebuah rute di tabel rute yang mengarahkan semua (::/0) lalu lintas IPv6 ke gateway internet.

    aws ec2 create-route --route-table-id rtb-c1c8faa6 --destination-ipv6-cidr-block ::/0 --gateway-id igw-1ff7a07b
  5. Untuk mengkonfirmasi bahwa rute Anda telah dibuat dan sedang aktif, Anda dapat mendeskripsikan tabel rute dan melihat hasilnya.

    aws ec2 describe-route-tables --route-table-id rtb-c1c8faa6
    { "RouteTables": [ { "Associations": [], "RouteTableId": "rtb-c1c8faa6", "VpcId": "vpc-2f09a348", "PropagatingVgws": [], "Tags": [], "Routes": [ { "GatewayId": "local", "DestinationCidrBlock": "10.0.0.0/16", "State": "active", "Origin": "CreateRouteTable" }, { "GatewayId": "local", "Origin": "CreateRouteTable", "State": "active", "DestinationIpv6CidrBlock": "2001:db8:1234:1a00::/56" }, { "GatewayId": "igw-1ff7a07b", "Origin": "CreateRoute", "State": "active", "DestinationIpv6CidrBlock": "::/0" } ] } ] }
  6. Tabel rute tersebut saat ini tidak terkait dengan subnet apapun. Kaitkan tabel rute dengan subnet di VPC Anda sehingga lalu lintas dari subnet tersebut diarahkan ke gateway internet. Pertama, dekripsikan subnet Anda untuk mendapatkan ID mereka. Anda dapat menggunakan--filterpilihan untuk mengembalikan subnet untuk VPC baru Anda saja, dan--querypilihan untuk mengembalikan hanya ID subnet dan blok IPv6 CIDR mereka.

    aws ec2 describe-subnets --filters "Name=vpc-id,Values=vpc-2f09a348" --query "Subnets[*].{ID:SubnetId,IPv6CIDR:Ipv6CidrBlockAssociationSet[*].Ipv6CidrBlock}"
    [ { "ID": "subnet-b46032ec", "IPv6CIDR": [ "2001:db8:1234:1a01::/64" ], "ID": "subnet-a46032fc", "IPv6CIDR": [ "2001:db8:1234:1a01::/64" } ]
  7. Anda dapat memilih subnet mana yang akan dikaitkan dengan tabel rute kustom tersebut, misalnya, subnet-b46032ec. Subnet ini akan menjadi subnet publik Anda.

    aws ec2 associate-route-table --subnet-id subnet-b46032ec --route-table-id rtb-c1c8faa6

Langkah 3: Mengonfigurasi subnet pribadi egress-only

Anda dapat mengonfigurasi subnet kedua di VPC Anda menjadi subnet privat egress-only IPv6. Instans-instans yang diluncurkan di subnet ini dapat mengakses internet melalui IPv6 (misalnya, untuk mendapatkan pembaruan perangkat lunak) melalui gateway internet egress-only, tetapi host di internet tidak dapat menjangkau instans Anda.

Untuk membuat subnet Anda menjadi subnet pribadi egress-only

  1. Buat gateway internet egress-only untuk VPC Anda. Dalam output yang dihasilkan, perhatikan ID gateway.

    aws ec2 create-egress-only-internet-gateway --vpc-id vpc-2f09a348
    { "EgressOnlyInternetGateway": { "EgressOnlyInternetGatewayId": "eigw-015e0e244e24dfe8a", "Attachments": [ { "State": "attached", "VpcId": "vpc-2f09a348" } ] } }
  2. Membuat tabel rute kustom untuk VPC Anda. Dalam output yang dihasilkan, perhatikan ID tabel rute.

    aws ec2 create-route-table --vpc-id vpc-2f09a348
  3. Buat sebuah rute dalam tabel rute yang mengarahkan semua lalu lintas IPv6 (::/0) ke gateway Internet egress-only.

    aws ec2 create-route --route-table-id rtb-abc123ab --destination-ipv6-cidr-block ::/0 --egress-only-internet-gateway-id eigw-015e0e244e24dfe8a
  4. Kaitkan tabel rute dengan subnet kedua di VPC Anda (Anda sudah deskripsikan subnet di bagian sebelumnya). Subnet ini akan menjadi subnet pribadi Anda dengan akses internet IPv6 egress-only.

    aws ec2 associate-route-table --subnet-id subnet-a46032fc --route-table-id rtb-abc123ab

Langkah 4: Memodifikasi subnet

Setelah membuat subnet, Anda dapat memodifikasi yang berikut:

  • Perilaku penangguhan IP di subnet Anda sehingga instans diluncurkan ke subnet secara otomatis menerima alamat IPv6. Akibatnya, ketika Anda meluncurkan sebuah instans ke subnet, satu alamat IPv6 dimunculkan dari jangkauan subnet ke antarmuka jaringan primer (eth0) dari instans.

  • Pengaturan Resource-based Name (RBN) untuk subnet dan instance yang diluncurkan ke subnet. Untuk informasi lebih lanjut tentang RBN, lihatTipe hostname instans Amazon EC2diPanduan Pengguna Amazon EC2. Untuk detail tentang opsi RBN yang digunakan di bagian ini, lihatmemodifikasi subnet-atributdiAWSReferensi Perintah CLIatauMemodifikasi konfigurasi RBNdiPanduan Pengguna Amazon EC2.

aws ec2 modify-subnet-attribute --subnet-id subnet-b46032ec --assign-ipv6-address-on-creation --private-dns-hostname-type-on-launch resource-name --enable-resource-name-dns-aaaa-record-on-launch --enable-resource-name-dns-a-record-on-launch
aws ec2 modify-subnet-attribute --subnet-id subnet-a46032fc --assign-ipv6-address-on-creation --private-dns-hostname-type-on-launch resource-name --enable-resource-name-dns-aaaa-record-on-launch --enable-resource-name-dns-a-record-on-launch

Langkah 5: Luncurkan sebuah instans ke subnet publik

Untuk menguji bahwa subnet publik Anda bersifat publik dan bahwa instans di subnet dapat diakses dari internet, luncurkan sebuah instance ke subnet publik Anda dan hubungkan ke sana. Pertama-tama, Anda harus membuat grup keamanan untuk dikaitkan dengan instans Anda, dan kunci yang berpasangan dengannya di mana Anda akan menghubungkannya ke instans Anda. Untuk informasi lain tentang grup keamanan, lihat Mengontrol lalu lintas ke sumber daya menggunakan grup keamanan. Untuk informasi selengkapnya mengenai pasangan kunci, lihat pasangan kunci Amazon EC2 di Panduan Pengguna Amazon EC2 untuk Instans Linux.

Untuk detail tentang opsi yang tersedia saat Anda menjalankan instance, lihatrun-instancesdiAWSReferensi Perintah CLIatauMeluncurkan sebuah instans menggunakan Launch Instance WizarddiPanduan Pengguna Amazon EC2.

Untuk meluncurkan dan terhubung ke sebuah instans di subnet publik Anda

  1. Buat pasangan kunci dan gunakan opsi --query dan opsi teks --output untuk menyalurkan kunci pribadi Anda secara langsung ke dalam sebuah file dengan ekstensi .pem.

    aws ec2 create-key-pair --key-name MyKeyPair --query "KeyMaterial" --output text > MyKeyPair.pem

    Dalam contoh ini, luncurkan instans Amazon Linux. Jika Anda menggunakan klien SSH pada sistem operasi Linux atau OS X untuk terhubung ke instans Anda, gunakan perintah berikut ini untuk mengatur izin file kunci pribadi Anda sehingga hanya Anda yang dapat membacanya.

    chmod 400 MyKeyPair.pem
  2. Buat grup keamanan untuk VPC Anda menggunakan perintah create-security-group.

    aws ec2 create-security-group --group-name SSHAccess --description "Security group for SSH access" --vpc-id vpc-2f09a348
    { "GroupId": "sg-e1fb8c9a" }

    Tambahkan aturan yang mengizinkan akses SSH dari alamat IPv6 mana pun menggunakan perintah authorize-security-group-ingress. Perhatikan bahwa sintaksis berikut hanya bekerja pada Linux dan MacOS. Untuk sintaksis yang bekerja pada Windows, lihat bagian contoh di AWS CLI Referensi Perintah.

    aws ec2 authorize-security-group-ingress --group-id sg-e1fb8c9a --ip-permissions '[{"IpProtocol": "tcp", "FromPort": 22, "ToPort": 22, "Ipv6Ranges": [{"CidrIpv6": "::/0"}]}]'
    catatan

    Jika Anda menggunakan ::/0, Anda akan mengaktifkan semua alamat IPv6 untuk mengakses instans Anda menggunakan SSH. Hal ini dapat diterima untuk latihan singkat ini, namun dalam produksi, otorisasi hanya pada alamat IP atau rentang alamat tertentu saja untuk mengakses instans Anda.

  3. Luncurkan instans EC2 IPv6 ke subnet publik Anda menggunakan grup keamanan dan key pair yang telah Anda buat. Untuk meluncurkan instans EC2 hanya IPv6, Anda harus menggunakanInstans EC2 yang dibangun di atas Sistem Nitro. Untuk informasi selengkapnya, lihat Server Amazon DNS. Pada hasilnya, perhatikan ID instans untuk instans Anda.

    aws ec2 run-instances --image-id ami-0de53d8956e8dcf80 --count 1 --instance-type t3.micro --key-name MyKeyPair --security-group-ids sg-e1fb8c9a --subnet-id subnet-b46032ec
    catatan

    Dalam contoh ini, AMI mengacu pada Amazon Linux AMI di Wilayah US East (N. Virginia). Jika Anda berada di Wilayah yang berbeda, Anda memerlukan ID AMI untuk mendapatkan AMI yang sesuai di Wilayah Anda. Untuk informasi lebih lanjut, lihat Temukan Linux AMI di Panduan Pengguna Amazon EC2 untuk Instans Linux.

  4. Instans Anda harus berada dalam status running untuk terhubung ke sana. Deskripsikan instans Anda dan konfirmasikan statusnya, dan perhatikan alamat IPv6 nya.

    aws ec2 describe-instances --instance-id i-0146854b7443af453

    Berikut ini adalah contoh hasil.

    { "Reservations": [ { ... "Instances": [ { ... "State": { "Code": 16, "Name": "running" }, ... "NetworkInterfaces": { "Ipv6Addresses": { "Ipv6Address": "2001:db8:1234:1a00::123" } ... } ] } ] }
  5. Saat instans Anda berada dalam status berjalan, Anda dapat menghubungkannya menggunakan klien SSH di komputer Linux atau OS X dengan menggunakan perintah berikut. Komputer lokal Anda harus memiliki alamat IPv6 yang terkonfigurasi.

    ssh -i "MyKeyPair.pem" ec2-user@2001:db8:1234:1a00::123

    Jika Anda tersambung dari komputer Windows, gunakan petunjuk berikut: Menghubungkan ke instance Linux Anda dari Windows menggunakanPuTTY.

Langkah 6: Luncurkan sebuah instans ke subnet privat Anda

Untuk menguji bahwa instans di subnet pribadi egress-only Anda dapat mengakses internet, luncurkan sebuah instans di subnet pribadi Anda dan hubungkan ke sana menggunakan instans bastion di subnet publik Anda (Anda dapat menggunakan instans yang Anda luncurkan di bagian sebelumnya). Pertama, Anda harus membuat grup keamanan untuk instans tersebut. Grup keamanan harus memiliki aturan yang mengizinkan instans bastion Anda terhubung menggunakan SSH, dan aturan yang mengizinkan perintah ping6 (lalu lintas ICMPv6) untuk memverifikasi instans tidak dapat diakses dari internet.

  1. Buat grup keamanan di VPC Anda menggunakan perintah create-security-group.

    aws ec2 create-security-group --group-name SSHAccessRestricted --description "Security group for SSH access from bastion" --vpc-id vpc-2f09a348

    Tambahkan aturan yang mengizinkan akses inbound SSH dari alamat IPv6 dari instans di subnet publik Anda, dan aturan yang mengizinkan semua lalu lintas ICMPv6 menggunakan perintah authorize-security-group-ingress. Perhatikan bahwa sintaksis berikut ini hanya bekerja pada Linux dan MacOS. Untuk sintaksis yang bekerja pada Windows, lihat bagian contoh di AWS CLI Referensi Perintah.

    { "GroupId": "sg-aabb1122" }
    aws ec2 authorize-security-group-ingress --group-id sg-aabb1122 --ip-permissions '[{"IpProtocol": "tcp", "FromPort": 22, "ToPort": 22, "Ipv6Ranges": [{"CidrIpv6": "2001:db8:1234:1a00::123/128"}]}]'
    aws ec2 authorize-security-group-ingress --group-id sg-aabb1122 --ip-permissions '[{"IpProtocol": "58", "FromPort": -1, "ToPort": -1, "Ipv6Ranges": [{"CidrIpv6": "::/0"}]}]'
  2. Luncurkan instans khusus IPv6 ke subnet privat Anda, menggunakan grup keamanan yang telah Anda buat dan key pair yang Anda gunakan untuk meluncurkan instans di subnet publik. Untuk meluncurkan instans EC2 hanya IPv6, Anda harus menggunakanInstans EC2 yang dibangun di atas Sistem Nitro.

    aws ec2 run-instances --image-id ami-a4827dc9 --count 1 --instance-type t3.micro --key-name MyKeyPair --security-group-ids sg-aabb1122 --subnet-id subnet-a46032fc

    Gunakan perintah describe-instances untuk memverifikasi bahwa instans Anda sedang berjalan, dan untuk mendapatkan alamat IPv6.

  3. Mengkonfigurasi agen SSH meneruskan ke mesin lokal Anda, dan kemudian terhubung ke instans Anda di subnet publik.

    Untuk Linux, gunakan perintah berikut:

    ssh-add MyKeyPair.pem ssh -A ec2-user@2001:db8:1234:1a00::123

    Untuk OS X, gunakan perintah berikut:

    ssh-add -K MyKeyPair.pem ssh -A ec2-user@2001:db8:1234:1a00::123

    Untuk Windows, gunakan petunjuk berikut ini: Untuk mengkonfigurasi SSH forwarding untuk Windows (PuTTY). Connect ke instans di subnet publik dengan menggunakan alamat IPv6 nya.

  4. Dari instans Anda di subnet publik (instans bastion), menyambung ke instans Anda di subnet pribadi dengan menggunakan alamat IPv6 nya:

    ssh ec2-user@2001:db8:1234:1a01::456
  5. Dari instans pribadi Anda, ujilah keterhubungan Anda ke internet dengan menjalankan perintah ping6 untuk situs web yang ICMP nya diaktifkan, misalnya:

    ping6 -n ietf.org
    PING ietf.org(2001:1900:3001:11::2c) 56 data bytes 64 bytes from 2001:1900:3001:11::2c: icmp_seq=1 ttl=46 time=73.9 ms 64 bytes from 2001:1900:3001:11::2c: icmp_seq=2 ttl=46 time=73.8 ms 64 bytes from 2001:1900:3001:11::2c: icmp_seq=3 ttl=46 time=73.9 ms ...
  6. Untuk menguji bahwa host di internet tidak dapat menjangkau instans Anda di subnet pribadi, gunakan perintah ping6 dari komputer yang diaktifkan untuk IPv6. Anda harus mendapatkan respon timeout. Jika Anda mendapatkan respons yang valid, maka instans Anda dapat diakses dari internet—periksa tabel rute yang terkait dengan subnet pribadi Anda dan verifikasi bahwa tabel rute tidak memiliki rute untuk lalu lintas IPv6 ke gateway internet.

    ping6 2001:db8:1234:1a01::456

Langkah 7: Membersihkan

Setelah memverifikasi bahwa Anda dapat terhubung ke instans Anda di subnet publik dan bahwa instans Anda di subnet pribadi dapat mengakses internet, Anda dapat mengakhiri instans jika Anda tidak membutuhkannya lagi. Untuk melakukannya, gunakan perintah terminate-instances. Untuk menghapus sumber daya lain yang telah Anda buat dalam contoh ini, gunakan perintah berikut ini dalam urutan yang tercantum:

  1. Hapus grup keamanan Anda:

    aws ec2 delete-security-group --group-id sg-e1fb8c9a
    aws ec2 delete-security-group --group-id sg-aabb1122
  2. Hapus subnet Anda:

    aws ec2 delete-subnet --subnet-id subnet-b46032ec
    aws ec2 delete-subnet --subnet-id subnet-a46032fc
  3. Hapus tabel rute kustom Anda:

    aws ec2 delete-route-table --route-table-id rtb-c1c8faa6
    aws ec2 delete-route-table --route-table-id rtb-abc123ab
  4. Lepaskan gateway internet Anda dari VPC Anda:

    aws ec2 detach-internet-gateway --internet-gateway-id igw-1ff7a07b --vpc-id vpc-2f09a348
  5. Hapus gateway internet Anda:

    aws ec2 delete-internet-gateway --internet-gateway-id igw-1ff7a07b
  6. Hapus gateway internet egress-only Anda:

    aws ec2 delete-egress-only-internet-gateway --egress-only-internet-gateway-id eigw-015e0e244e24dfe8a
  7. Hapus VPC Anda:

    aws ec2 delete-vpc --vpc-id vpc-2f09a348