Создание инфраструктуры в пользовательской(недефолтной) VPC , в которой будут две подсети.
Публичная – для возможности подключения снаружи к серверам в этой сети(например, web-сервера) и выхода этой публичной сети в Интернет с помощью Internet Gateway, а также связи серверов публичной сети с серверами приватной сети
Приватной – для возможности подключения к серверам в этой сети (например, серверам баз данных) ТОЛЬКО с серверов с публичной сети(с web-серверов) (при этом сервера приватной сети не будут доступны с Интернета) и выхода серверов приватной сети в Интернет(например,для установки/обновления ПО) через NAT Gateway
Порядок выполнения:
1.Создание VPC c блоком CIDR (10.0.0.0/16)
2.Создание подсетей в VPC
А) публичная 10.0.1.0/24
Б) приватная 10.0.2.0/24
3. Создание Internet Gateway для выпуска публичной сети в Интернет и возможности подключения с Интернета к публичной сети, подключение Internet Gateway к VPC
4.Создание Nat Gateway для выпуска приватной сети в Интерне (БЕЗ возможности подключения к сети с Интернета)
5. Создание пользовательской таблицы маршрутизации для публичной сети, добавление в нее правила для маршрутизации по дефолту через Internet Gateway, присоединение таблицы маршрутизации для публичной сети
6. Создание пользовательской таблицы маршрутизации для приватной сети, добавление в нее правила для маршрутизаиции по дефолту через Nat Gateway, присоединение таблицы маршрутизации для приватной сети
7.Создание групп безопасности(Security Group) для публичной и приватной сетей, добавление в них необходимых правил для фильтрации входящего трафика.
8.Запуск EC2-инстансов в публичной и приватной сетях.
9.Тестирование работоспособности созданной инфраструктуры
1.Создание VPC c блоком CIDR (10.0.0.0/16)
1 |
# aws ec2 create-vpc --cidr-block 10.0.0.0/16 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
{ "Vpc": { "VpcId": "vpc-38f8f05f", "InstanceTenancy": "default", "Tags": [], "CidrBlockAssociationSet": [ { "AssociationId": "vpc-cidr-assoc-f675539e", "CidrBlock": "10.0.0.0/16", "CidrBlockState": { "State": "associated" } } ], "Ipv6CidrBlockAssociationSet": [], "State": "pending", "DhcpOptionsId": "dopt-2df9944a", "CidrBlock": "10.0.0.0/16", "IsDefault": false } } |
Проставляем теги
1 |
# aws ec2 create-tags --resources vpc-38f8f05f --tags Key=Name,Value=my_vpc |
Проверяем
1 |
# aws ec2 describe-vpcs --vpc-ids vpc-38f8f05f |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 |
{ "Vpcs": [ { "VpcId": "vpc-38f8f05f", "InstanceTenancy": "default", "Tags": [ { "Value": "my_vpc", "Key": "Name" } ], "CidrBlockAssociationSet": [ { "AssociationId": "vpc-cidr-assoc-f675539e", "CidrBlock": "10.0.0.0/16", "CidrBlockState": { "State": "associated" } } ], "State": "available", "DhcpOptionsId": "dopt-2df9944a", "CidrBlock": "10.0.0.0/16", "IsDefault": false } ] } |
2.Создание подсетей в VPC
А) публичная 10.0.1.0/24
1 |
# aws ec2 create-subnet --vpc-id vpc-38f8f05f --cidr-block 10.0.1.0/24 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
{ "Subnet": { "AvailabilityZone": "eu-west-1c", "AvailableIpAddressCount": 251, "DefaultForAz": false, "Ipv6CidrBlockAssociationSet": [], "VpcId": "vpc-38f8f05f", "State": "pending", "MapPublicIpOnLaunch": false, "SubnetId": "subnet-4a454203", "CidrBlock": "10.0.1.0/24", "AssignIpv6AddressOnCreation": false } } |
Проставляем теги
1 |
# aws ec2 create-tags --resources subnet-4a454203 --tags Key=Name,Value=my_public_net |
Б)приватная 10.0.2.0/24
1 |
# aws ec2 create-subnet --vpc-id vpc-38f8f05f --cidr-block 10.0.2.0/24 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
{ "Subnet": { "AvailabilityZone": "eu-west-1c", "AvailableIpAddressCount": 251, "DefaultForAz": false, "Ipv6CidrBlockAssociationSet": [], "VpcId": "vpc-38f8f05f", "State": "pending", "MapPublicIpOnLaunch": false, "SubnetId": "subnet-0fbbbf46", "CidrBlock": "10.0.2.0/24", "AssignIpv6AddressOnCreation": false } } |
Проставляем теги
1 |
# aws ec2 create-tags --resources subnet-0fbbbf46 --tags Key=Name,Value=my_private_net |
Проверяем
1 |
# aws ec2 describe-subnets --filters Name=vpc-id,Values=vpc-38f8f05f |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 |
{ "Subnets": [ { "AvailabilityZone": "eu-west-1c", "Tags": [ { "Value": "my_public_net", "Key": "Name" } ], "AvailableIpAddressCount": 251, "DefaultForAz": false, "Ipv6CidrBlockAssociationSet": [], "VpcId": "vpc-38f8f05f", "State": "available", "MapPublicIpOnLaunch": false, "SubnetId": "subnet-4a454203", "CidrBlock": "10.0.1.0/24", "AssignIpv6AddressOnCreation": false }, { "AvailabilityZone": "eu-west-1c", "Tags": [ { "Value": "my_private_net", "Key": "Name" } ], "AvailableIpAddressCount": 251, "DefaultForAz": false, "Ipv6CidrBlockAssociationSet": [], "VpcId": "vpc-38f8f05f", "State": "available", "MapPublicIpOnLaunch": false, "SubnetId": "subnet-0fbbbf46", "CidrBlock": "10.0.2.0/24", "AssignIpv6AddressOnCreation": false } ] } |
3. Создание Internet Gateway для выпуска публичной сети в Интернет и возможности подключения с Интернета к публичной подсети, подключение Internet Gateway к VPC
А) Создание Internet Gateway
1 |
# aws ec2 create-internet-gateway |
1 2 3 4 5 6 7 |
{ "InternetGateway": { "Tags": [], "Attachments": [], "InternetGatewayId": "igw-f74f8d90" } } |
Б) подключение Internet Gateway к VPC
1 |
# aws ec2 attach-internet-gateway --internet-gateway-id igw-f74f8d90 --vpc-id vpc-38f8f05f |
Добавление тега
1 |
# aws ec2 create-tags --resources igw-f74f8d90 --tags Key=Name,Value=my_internet_gw |
4.Создание Nat Gateway для выпуска приватной подсети в Интерне (БЕЗ возможности подключения к приватной сети из Интернета)
А) получение статичского адреса Elastic IP
1 |
# aws ec2 allocate-address --domain vpc |
1 2 3 4 5 |
{ "PublicIp": "52.16.230.24", "Domain": "vpc", "AllocationId": "eipalloc-2a788b17" } |
Б) Создание NAT Gateway в публичной подсети (subnet-4a454203)
1 |
# aws ec2 create-nat-gateway --subnet-id subnet-4a454203 --allocation-id eipalloc-2a788b17 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
{ "NatGateway": { "NatGatewayAddresses": [ { "AllocationId": "eipalloc-2a788b17" } ], "VpcId": "vpc-38f8f05f", "State": "pending", "NatGatewayId": "nat-002597e926d05a421", "SubnetId": "subnet-4a454203", "CreateTime": "2017-12-05T22:40:49.000Z" } } |
Добавляем теги
1 |
# aws ec2 create-tags --resources nat-002597e926d05a421 --tags Key=Name,Value=my_nat_gw |
5. Создание пользовательской таблицы маршрутизации для публичной сети и добавление в нее правила для маршрутизации по дефолту через Internet Gateway, присоединение таблицы маршрутизации для публичной подсети
А) Создание пользовательской таблицы маршрутизации для публичной подсети
1 |
# aws ec2 create-route-table --vpc-id vpc-38f8f05f |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
{ "RouteTable": { "Associations": [], "RouteTableId": "rtb-df0947b9", "VpcId": "vpc-38f8f05f", "PropagatingVgws": [], "Tags": [], "Routes": [ { "GatewayId": "local", "DestinationCidrBlock": "10.0.0.0/16", "State": "active", "Origin": "CreateRouteTable" } ] } } |
Б)Добавление в таблицу маршрутизации правила для маршрутизации трафика из публичной подсети (10.0.1.0/24, subnet-4a454203) в сеть 0.0.0.0/0(весь Интернет) через Internet Gateway
1 |
# aws ec2 create-route --route-table-id rtb-df0947b9 --destination-cidr-block 0.0.0.0/0 --gateway-id igw-f74f8d90 |
1 2 3 |
{ "Return": true } |
Проверка таблицы маршрутизации
1 |
# aws ec2 describe-route-tables --route-table-id rtb-df0947b9 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 |
{ "RouteTables": [ { "Associations": [ { "SubnetId": "subnet-4a454203", "RouteTableAssociationId": "rtbassoc-904c7ce9", "Main": false, "RouteTableId": "rtb-df0947b9" } ], "RouteTableId": "rtb-df0947b9", "VpcId": "vpc-38f8f05f", "PropagatingVgws": [], "Tags": [], "Routes": [ { "GatewayId": "local", "DestinationCidrBlock": "10.0.0.0/16", "State": "active", "Origin": "CreateRouteTable" }, { "GatewayId": "igw-f74f8d90", "DestinationCidrBlock": "0.0.0.0/0", "State": "active", "Origin": "CreateRoute" } ] } ] } |
В) Подключение этой таблицы к публичной подсети
1 |
# aws ec2 associate-route-table --route-table-id rtb-df0947b9 --subnet-id subnet-4a454203 |
1 2 3 |
{ "AssociationId": "rtbassoc-904c7ce9" } |
Г) Включение авто-назначения публичных IP-адресов для публичной подсети(subnet-4a454203) во время запуска инстанса
1 |
# aws ec2 modify-subnet-attribute --subnet-id subnet-4a454203 --map-public-ip-on-launch |
6. Создание пользовательской таблицы маршрутизации для приватной подсети, добавление в нее правила для маршрутизации по дефолту через Nat Gateway, присоединение таблицы маршрутизации для приватной подсети
А)Создание пользовательской таблицы маршрутизации для приватной подсети
1 |
# aws ec2 create-route-table --vpc-id vpc-38f8f05f |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
{ "RouteTable": { "Associations": [], "RouteTableId": "rtb-02014f64", "VpcId": "vpc-38f8f05f", "PropagatingVgws": [], "Tags": [], "Routes": [ { "GatewayId": "local", "DestinationCidrBlock": "10.0.0.0/16", "State": "active", "Origin": "CreateRouteTable" } ] } } |
Б) Добавление в таблицу маршрутизации правила для маршрутизации трафика из приватной подсети (10.0.2.0/24, subnet-0fbbbf46) в сеть 0.0.0.0/0(весь Интернет) через NAT Gateway
1 |
# aws ec2 create-route --route-table-id rtb-02014f64 --destination-cidr-block 0.0.0.0/0 --nat-gateway-id nat-002597e926d05a421 |
1 2 3 |
{ "Return": true } |
Проверка таблицы маршрутизации
1 |
# aws ec2 describe-route-tables --route-table-id rtb-02014f64 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 |
{ "RouteTables": [ { "Associations": [ { "SubnetId": "subnet-0fbbbf46", "RouteTableAssociationId": "rtbassoc-384a7a41", "Main": false, "RouteTableId": "rtb-02014f64" } ], "RouteTableId": "rtb-02014f64", "VpcId": "vpc-38f8f05f", "PropagatingVgws": [], "Tags": [], "Routes": [ { "GatewayId": "local", "DestinationCidrBlock": "10.0.0.0/16", "State": "active", "Origin": "CreateRouteTable" }, { "Origin": "CreateRoute", "DestinationCidrBlock": "0.0.0.0/0", "NatGatewayId": "nat-002597e926d05a421", "State": "active" } ] } ] } |
В) Подключение этой таблицу к приватной подсети
1 |
# aws ec2 associate-route-table --route-table-id rtb-02014f64 --subnet-id subnet-0fbbbf46 |
1 2 3 |
{ "AssociationId": "rtbassoc-384a7a41" } |
7.Создание групп безопасности(Security Group) для публичной и приватной подсетей, добавление в них необходимых правил
А) Создание группы безопасности для публичной подсети
1 |
# aws ec2 create-security-group --group-name PublicSG --description "Public security group" --vpc-id vpc-38f8f05f |
1 2 3 |
{ "GroupId": "sg-f91d6882" } |
Б) Создание группы безопасности для приватной подсети
1 |
# aws ec2 create-security-group --group-name PrivateSG --description "Private security group" --vpc-id vpc-38f8f05f |
1 2 3 |
{ "GroupId": "sg-28116453" } |
В) Добавление в публичную группу безопасности правил, разрешающих входящее подключение
А) на 80 и 443 порты
1 |
# aws ec2 authorize-security-group-ingress --group-id sg-f91d6882 --protocol tcp --port 80 --cidr 0.0.0.0/0 |
1 |
# aws ec2 authorize-security-group-ingress --group-id sg-f91d6882 --protocol tcp --port 443 --cidr 0.0.0.0/0 |
Б) на 22 порт с Вашего внешнего статического IP-адреса (если такового нет,то разрешаем со всей сети —cidr 0.0.0.0/0)
1 |
# aws ec2 authorize-security-group-ingress --group-id sg-f91d6882 --protocol tcp --port 22 --cidr 159.224.XXX.YYY/32 |
В) Весь ICMP-трафик(при желании можно ограничить определенными типами icmp-запросов)
1 |
# aws ec2 authorize-security-group-ingress --group-id sg-f91d6882 --protocol icmp --port -1 --cidr 0.0.0.0/0 |
Г) Весь трафик с приватной подсети(10.0.2.0/24) по идентификатору приватной группы безопасности(sg-28116453)
1 |
# aws ec2 authorize-security-group-ingress --group-id sg-f91d6882 --protocol all --source-group sg-28116453 |
Г)Добавление в приватную группу правила,разрешающее весь входящий трафик с публичной сети по идентификатору публичной группы (sg-f91d6882)
1 |
# aws ec2 authorize-security-group-ingress --group-id sg-28116453 --protocol all --source-group sg-f91d6882 |
8.Запуск EC2-инстансов в публичной и приватной сетях
А) Создание пары SSH-ключей
1 |
# aws ec2 create-key-pair --key-name my_aws_ssh_key --query 'KeyMaterial' --output text > ~/.ssh/my_aws_ssh_key.pem |
Дефолтный регион определен уже в настройках AWS CLI
1 |
# grep region /root/.aws/config |
1 |
region = eu-west-1 |
1 |
# chmod 400 .ssh/my_aws_ssh_key.pem |
Просмотр доступных ключей
1 |
# aws ec2 describe-key-pairs |
1 2 3 4 5 6 7 8 |
{ "KeyPairs": [ { "KeyName": "my_aws_ssh_key", "KeyFingerprint": "c6:9f:fc:11:43:79:ef:87:3f:20:b4:cb:35:9f:86:ec:42:99:19:6a" } ] } |
Б) Запуск EC2-инстанса с образа Amazon Linux AMI (HVM, SSD Volume Type) (ami-1a962263) типа t2.micro с ПУБЛИЧНОЙ группой безопасности(sg-f91d6882)в ПУБЛИЧНОЙ подсети (subnet-4a454203)
1 |
# aws ec2 run-instances --image-id ami-1a962263 --count 1 --instance-type t2.micro --key-name my_aws_ssh_key --security-group-ids sg-f91d6882 --subnet-id subnet-4a454203 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 |
{ "Instances": [ { "Monitoring": { "State": "disabled" }, "PublicDnsName": "", "StateReason": { "Message": "pending", "Code": "pending" }, "State": { "Code": 0, "Name": "pending" }, "EbsOptimized": false, "LaunchTime": "2017-12-06T11:34:45.000Z", "PrivateIpAddress": "10.0.1.200", "ProductCodes": [], "VpcId": "vpc-38f8f05f", "StateTransitionReason": "", "InstanceId": "i-05f82be7af92b8e0d", "ImageId": "ami-1a962263", "PrivateDnsName": "ip-10-0-1-200.eu-west-1.compute.internal", "KeyName": "my_aws_ssh_key", "SecurityGroups": [ { "GroupName": "PublicSG", "GroupId": "sg-f91d6882" } ], "ClientToken": "", "SubnetId": "subnet-4a454203", "InstanceType": "t2.micro", "NetworkInterfaces": [ { "Status": "in-use", "MacAddress": "06:48:be:05:5b:28", "SourceDestCheck": true, "VpcId": "vpc-38f8f05f", "Description": "", "NetworkInterfaceId": "eni-12f46623", "PrivateIpAddresses": [ { "Primary": true, "PrivateIpAddress": "10.0.1.200" } ], "SubnetId": "subnet-4a454203", "Attachment": { "Status": "attaching", "DeviceIndex": 0, "DeleteOnTermination": true, "AttachmentId": "eni-attach-4fdb0aa0", "AttachTime": "2017-12-06T11:34:45.000Z" }, "Groups": [ { "GroupName": "PublicSG", "GroupId": "sg-f91d6882" } ], "Ipv6Addresses": [], "OwnerId": "211718304900", "PrivateIpAddress": "10.0.1.200" } ], "SourceDestCheck": true, "Placement": { "Tenancy": "default", "GroupName": "", "AvailabilityZone": "eu-west-1c" }, "Hypervisor": "xen", "BlockDeviceMappings": [], "Architecture": "x86_64", "RootDeviceType": "ebs", "RootDeviceName": "/dev/xvda", "VirtualizationType": "hvm", "AmiLaunchIndex": 0 } ], "ReservationId": "r-02017b9c12a67d12c", "Groups": [], "OwnerId": "211718304900" } |
Проверка состояния инстанса по его идентификатору i-05f82be7af92b8e0d
1 |
# aws ec2 describe-instances --instance-id i-05f82be7af92b8e0d | less |
1 2 3 |
"Name": "running" "PublicIpAddress": "54.171.82.96", "PrivateIpAddress": "10.0.1.200", |
В)Запуск EC2-инстанса с образа Amazon Linux AMI (HVM, SSD Volume Type) (ami-1a962263) типа t2.micro с ПРИВАТНОЙ группой безопасности(sg-28116453) в ПРИВАТНОЙ подсети (subnet-0fbbbf46)
1 |
# aws ec2 run-instances --image-id ami-1a962263 --count 1 --instance-type t2.micro --key-name my_aws_ssh_key --security-group-ids sg-28116453 --subnet-id subnet-0fbbbf46 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 |
{ "Instances": [ { "Monitoring": { "State": "disabled" }, "PublicDnsName": "", "StateReason": { "Message": "pending", "Code": "pending" }, "State": { "Code": 0, "Name": "pending" }, "EbsOptimized": false, "LaunchTime": "2017-12-06T11:41:18.000Z", "PrivateIpAddress": "10.0.2.83", "ProductCodes": [], "VpcId": "vpc-38f8f05f", "StateTransitionReason": "", "InstanceId": "i-08a9797d5fb78807b", "ImageId": "ami-1a962263", "PrivateDnsName": "ip-10-0-2-83.eu-west-1.compute.internal", "KeyName": "my_aws_ssh_key", "SecurityGroups": [ { "GroupName": "PrivateSG", "GroupId": "sg-28116453" } ], "ClientToken": "", "SubnetId": "subnet-0fbbbf46", "InstanceType": "t2.micro", "NetworkInterfaces": [ { "Status": "in-use", "MacAddress": "06:7f:f8:5e:d2:2a", "SourceDestCheck": true, "VpcId": "vpc-38f8f05f", "Description": "", "NetworkInterfaceId": "eni-15f96b24", "PrivateIpAddresses": [ { "Primary": true, "PrivateIpAddress": "10.0.2.83" } ], "SubnetId": "subnet-0fbbbf46", "Attachment": { "Status": "attaching", "DeviceIndex": 0, "DeleteOnTermination": true, "AttachmentId": "eni-attach-adc11042", "AttachTime": "2017-12-06T11:41:18.000Z" }, "Groups": [ { "GroupName": "PrivateSG", "GroupId": "sg-28116453" } ], "Ipv6Addresses": [], "OwnerId": "211718304900", "PrivateIpAddress": "10.0.2.83" } ], "SourceDestCheck": true, "Placement": { "Tenancy": "default", "GroupName": "", "AvailabilityZone": "eu-west-1c" }, "Hypervisor": "xen", "BlockDeviceMappings": [], "Architecture": "x86_64", "RootDeviceType": "ebs", "RootDeviceName": "/dev/xvda", "VirtualizationType": "hvm", "AmiLaunchIndex": 0 } ], "ReservationId": "r-05e53fed638a92fef", "Groups": [], "OwnerId": "211718304900" } |
Проверяем состояние инстанса в приватной сети
1 |
# aws ec2 describe-instances --instance-id i-08a9797d5fb78807b | less |
1 2 |
"Name": "running" "PrivateIpAddress": "10.0.2.83" |
9.Тестирование работоспособности созданной инфраструктуры
1)Доступность публичного инстанса по SSH с указаного IP- адреса (159.224.XXX.YYY/32) в публиной группе безопасности
1 |
# ssh -i .ssh/my_aws_ssh_key.pem -l ec2-user 54.171.82.96 |
1 2 3 4 5 6 7 8 9 10 |
The authenticity of host '54.171.82.96 (54.171.82.96)' can't be established. RSA key fingerprint is 78:60:f4:10:8b:1d:d3:cd:da:40:59:ec:ac:a4:e0:cf. Are you sure you want to continue connecting (yes/no)? yes Warning: Permanently added '54.171.82.96' (RSA) to the list of known hosts. __| __|_ ) _| ( / Amazon Linux AMI ___|\___|___| https://aws.amazon.com/amazon-linux-ami/2017.09-release-notes/ [ec2-user@ip-10-0-1-200 ~]$ |
Проверка сетевых настроек и таблицы маршрутизации на публичном инстансе
1 |
[ec2-user@ip-10-0-1-200 ~]$ ip addr sh |
1 2 3 4 5 6 7 8 9 10 11 12 |
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1 link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8 scope host lo valid_lft forever preferred_lft forever inet6 ::1/128 scope host valid_lft forever preferred_lft forever 2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 9001 qdisc pfifo_fast state UP group default qlen 1000 link/ether 06:48:be:05:5b:28 brd ff:ff:ff:ff:ff:ff inet 10.0.1.200/24 brd 10.0.1.255 scope global eth0 valid_lft forever preferred_lft forever inet6 fe80::448:beff:fe05:5b28/64 scope link valid_lft forever preferred_lft forever |
1 |
[ec2-user@ip-10-0-1-200 ~]$ ip ro sh |
1 2 3 |
default via 10.0.1.1 dev eth0 10.0.1.0/24 dev eth0 proto kernel scope link src 10.0.1.200 169.254.169.254 dev eth0 |
2)Выход публичного инстанса в Интернет
1 |
[ec2-user@ip-10-0-1-200 ~]$ ping -c 1 i.ua |
1 2 3 4 5 6 |
PING i.ua (91.198.36.14) 56(84) bytes of data. 64 bytes from www.i.ua (91.198.36.14): icmp_seq=1 ttl=44 time=53.0 ms --- i.ua ping statistics --- 1 packets transmitted, 1 received, 0% packet loss, time 0ms rtt min/avg/max/mdev = 53.088/53.088/53.088/0.000 ms |
3)Доступ по внутренней сети с публичного инстанса(10.0.1.200) к приватному инстансу(10.0.2.83)
1 |
[ec2-user@ip-10-0-1-200 ~]$ ping -c 1 10.0.2.83 |
1 2 3 4 5 6 |
PING 10.0.2.83 (10.0.2.83) 56(84) bytes of data. 64 bytes from 10.0.2.83: icmp_seq=1 ttl=255 time=0.498 ms --- 10.0.2.83 ping statistics --- 1 packets transmitted, 1 received, 0% packet loss, time 0ms rtt min/avg/max/mdev = 0.498/0.498/0.498/0.000 ms |
Копируем SSH-приватный ключ на публичный сервер
1 |
# scp -i .ssh/my_aws_ssh_key.pem ec2-user@54.171.82.96:/home/ec2-user/.ssh/ |
Подключаемся на публичный сервер
1 |
# ssh -i .ssh/my_aws_ssh_key.pem ec2-user@54.171.82.96 |
С него подключаемся на приватный сервер
1 |
[ec2-user@ip-10-0-1-200 ~]$ ssh -i .ssh/my_aws_ssh_key.pem ec2-user@10.0.2.83 |
1 2 3 4 5 6 7 8 9 10 11 12 |
The authenticity of host '10.0.2.83 (10.0.2.83)' can't be established. ECDSA key fingerprint is SHA256:i/GtdCSh/qVehWiCwE9g34QEffAMOFcoUYcUId+NyHM. ECDSA key fingerprint is MD5:15:6e:55:17:7c:8a:2f:13:5e:70:c4:f3:de:33:40:43. Are you sure you want to continue connecting (yes/no)? yes Warning: Permanently added '10.0.2.83' (ECDSA) to the list of known hosts. __| __|_ ) _| ( / Amazon Linux AMI ___|\___|___| https://aws.amazon.com/amazon-linux-ami/2017.09-release-notes/ [ec2-user@ip-10-0-2-83 ~]$ |
Проверка приватного инстанса
Проверка сетевых настроек и таблицы маршрутизации на приватном сервере
1 |
[ec2-user@ip-10-0-2-83 ~]$ ip addr sh |
1 2 3 4 5 6 7 8 9 10 11 12 |
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1 link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8 scope host lo valid_lft forever preferred_lft forever inet6 ::1/128 scope host valid_lft forever preferred_lft forever 2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 9001 qdisc pfifo_fast state UP group default qlen 1000 link/ether 06:7f:f8:5e:d2:2a brd ff:ff:ff:ff:ff:ff inet 10.0.2.83/24 brd 10.0.2.255 scope global eth0 valid_lft forever preferred_lft forever inet6 fe80::47f:f8ff:fe5e:d22a/64 scope link valid_lft forever preferred_lft forever |
1 |
[ec2-user@ip-10-0-2-83 ~]$ ip ro sh |
1 2 3 |
default via 10.0.2.1 dev eth0 10.0.2.0/24 dev eth0 proto kernel scope link src 10.0.2.83 169.254.169.254 dev eth0 |
1)Проверка выхода приватного инстанса в Интернет
1 |
[ec2-user@ip-10-0-2-83 ~]$ ping -c 1 i.ua |
1 2 3 4 5 6 |
PING i.ua (91.198.36.14) 56(84) bytes of data. 64 bytes from www.i.ua (91.198.36.14): icmp_seq=1 ttl=37 time=51.3 ms --- i.ua ping statistics --- 1 packets transmitted, 1 received, 0% packet loss, time 0ms rtt min/avg/max/mdev = 51.345/51.345/51.345/0.000 ms |
Проверка внешнего адреса, через который выходит приватный инстанс в Интернет
1 |
[ec2-user@ip-10-0-2-83 ~]$ curl http://checkip.amazonaws.com/ |
1 |
52.16.230.24 |
Он должен соответствовать адресу NAT Gateway(52.16.230.24)
1 |
# aws ec2 describe-nat-gateways --nat-gateway-ids nat-002597e926d05a421 | grep PublicIp |
1 |
"PublicIp": "52.16.230.24" |
2)Проверка доступности публичного инстанса(10.0.1.200) с приватного инстанса(10.0.2.83)
1 |
[ec2-user@ip-10-0-2-83 ~]$ ping -c 1 10.0.1.200 |
1 2 3 4 5 6 |
PING 10.0.1.200 (10.0.1.200) 56(84) bytes of data. 64 bytes from 10.0.1.200: icmp_seq=1 ttl=255 time=0.304 ms --- 10.0.1.200 ping statistics --- 1 packets transmitted, 1 received, 0% packet loss, time 0ms rtt min/avg/max/mdev = 0.304/0.304/0.304/0.000 ms |
Источник:
https://rtfm.co.ua/aws-migraciya-rtfm-chast-1-ruchnoe-sozdanie-infrastruktury/
http://docs.aws.amazon.com/AmazonVPC/latest/UserGuide/vpc-subnets-commands-example.html
http://docs.aws.amazon.com/AmazonVPC/latest/UserGuide/VPC_Scenario2.html