클라우드/따라하면서 배우는 AWS 네트워크 입문
vpc 고급 - 게이트웨이, 인터페이스 엔드포인트
book_lover
2024. 6. 30. 22:43
vpc 엔드포인트
사용자가 생성한 VPC에서 AWS 퍼블릭 서비스와 통신하거나 다른 VPC로 통신이 필요할 경우 일반적으로 외부 인터넷 구간인 퍼블릭 네트워크를 통해 통신이 이루어진다. AWS에서 제공하는 대부분의 서비스에 접근하기 위해서는 퍼블릭 네트워크 통신이 필요하지만 보안 요건이 필요할 경우 격리된 프라이빗 서브넷에 자원이 생성되어야 한다. 이 경우 퍼블릭 네트워크를 통해 통신이 불가능하다.
VPC 엔드포인트는 AWS 버블릭 서비스 / 사용자가 생성한 서비스에 대해 외부 인터넷 구간을 통한 접근이 아닌 직접적으로 접근할 수 있는 프라이빗 액세스 기능이다.
S3 스토리지 서비스를 외부 인터넷 접근이 아닌 내부의 프라이빗으로 연결하는 것이다.
VPC 엔드포인트 유형
- 엔드포인트 : AWS 퍼블릭 서비스 대상에 대한 프라이빗 연결
- 게이트웨이 엔드포인트 : AWS 퍼블릭 서비스 중 S3와 DynamoDB에 대한 연결
- 인터페이스 엔드포인트 : 위 대상 외에 나머지 AWS 퍼블릭 서비스에 대한 연결
- 엔드포인트 서비스 : 사용자가 지정한 서비스 대상에 대한 프라이빗 연결
Parameters:
KeyName:
Description: Name of an existing EC2 KeyPair to enable SSH access to the instances. Linked to AWS Parameter
Type: AWS::EC2::KeyPair::KeyName
ConstraintDescription: must be the name of an existing EC2 KeyPair.
LatestAmiId:
Description: (DO NOT CHANGE)
Type: 'AWS::SSM::Parameter::Value<AWS::EC2::Image::Id>'
Default: '/aws/service/ami-amazon-linux-latest/amzn2-ami-hvm-x86_64-gp2'
AllowedValues:
- /aws/service/ami-amazon-linux-latest/amzn2-ami-hvm-x86_64-gp2
Resources:
CloudNetaVPC:
Type: AWS::EC2::VPC
Properties:
CidrBlock: 10.0.0.0/16
Tags:
- Key: Name
Value: CloudNeta-VPC
CloudNetaIGW:
Type: AWS::EC2::InternetGateway
Properties:
Tags:
- Key: Name
Value: CloudNeta-IGW
CloudNetaIGWAttachment:
Type: AWS::EC2::VPCGatewayAttachment
Properties:
InternetGatewayId: !Ref CloudNetaIGW
VpcId: !Ref CloudNetaVPC
CloudNetaPublicRT:
Type: AWS::EC2::RouteTable
Properties:
VpcId: !Ref CloudNetaVPC
Tags:
- Key: Name
Value: CloudNeta-Public-RT
DefaultPublicRoute:
Type: AWS::EC2::Route
DependsOn: CloudNetaIGWAttachment
Properties:
RouteTableId: !Ref CloudNetaPublicRT
DestinationCidrBlock: 0.0.0.0/0
GatewayId: !Ref CloudNetaIGW
CloudNetaPrivateRT:
Type: AWS::EC2::RouteTable
Properties:
VpcId: !Ref CloudNetaVPC
Tags:
- Key: Name
Value: CloudNeta-Private-RT
CloudNetaPublicSN:
Type: AWS::EC2::Subnet
Properties:
VpcId: !Ref CloudNetaVPC
AvailabilityZone: !Select [ 0, !GetAZs '' ]
CidrBlock: 10.0.0.0/24
Tags:
- Key: Name
Value: CloudNeta-Public-SN
CloudNetaPrivateSN:
Type: AWS::EC2::Subnet
Properties:
VpcId: !Ref CloudNetaVPC
AvailabilityZone: !Select [ 2, !GetAZs '' ]
CidrBlock: 10.0.1.0/24
Tags:
- Key: Name
Value: CloudNeta-Private-SN
CloudNetaPublicSNRouteTableAssociation:
Type: AWS::EC2::SubnetRouteTableAssociation
Properties:
RouteTableId: !Ref CloudNetaPublicRT
SubnetId: !Ref CloudNetaPublicSN
CloudNetaPrivateSNRouteTableAssociation:
Type: AWS::EC2::SubnetRouteTableAssociation
Properties:
RouteTableId: !Ref CloudNetaPrivateRT
SubnetId: !Ref CloudNetaPrivateSN
CloudNetaSecurityGroup:
Type: AWS::EC2::SecurityGroup
Properties:
GroupDescription: Enable HTTP access via port 80 and SSH access via port 22
VpcId: !Ref CloudNetaVPC
SecurityGroupIngress:
- IpProtocol: tcp
FromPort: '80'
ToPort: '80'
CidrIp: 0.0.0.0/0
- IpProtocol: tcp
FromPort: '22'
ToPort: '22'
CidrIp: 0.0.0.0/0
CloudNetaPublicEC2:
Type: AWS::EC2::Instance
Properties:
InstanceType: t2.micro
ImageId: !Ref LatestAmiId
KeyName: !Ref KeyName
Tags:
- Key: Name
Value: CloudNeta-Public-EC2
NetworkInterfaces:
- DeviceIndex: 0
SubnetId: !Ref CloudNetaPublicSN
GroupSet:
- !Ref CloudNetaSecurityGroup
AssociatePublicIpAddress: true
CloudNetaPrivateEC2:
Type: AWS::EC2::Instance
Properties:
InstanceType: t2.micro
ImageId: !Ref LatestAmiId
KeyName: !Ref KeyName
Tags:
- Key: Name
Value: CloudNeta-Private-EC2
NetworkInterfaces:
- DeviceIndex: 0
SubnetId: !Ref CloudNetaPrivateSN
GroupSet:
- !Ref CloudNetaSecurityGroup
UserData:
Fn::Base64:
!Sub |
#!/bin/bash
(
echo "qwe123"
echo "qwe123"
) | passwd --stdin root
sed -i "s/^PasswordAuthentication no/PasswordAuthentication yes/g" /etc/ssh/sshd_config
sed -i "s/^#PermitRootLogin yes/PermitRootLogin yes/g" /etc/ssh/sshd_config
service sshd restart
ping s3.ap-northeast-2.amazonaws.com
- 퍼블릭 ec2는 s3와 통신하기 위해 데이터를 가상 라우터로 전달
- 가상 라우터는 퍼블릭 라우팅 테이블 참고하여 인터넷 게이트웨이로 향하는 라우팅 경로를 확인하여 전달
- 인터넷 구간을 통해 s3로 데이터 전달, 정상적인 통신 가능
- 프라이빗 ec2는 s3와 통신하기 위해 데이터를 가상 라우터로 전달, 하지만 프라이빗 라우팅 테이블에는 경로가 없어통신이 불가능
게이트웨이 엔드포인트 생성
자동으로 라우팅테이블에 경로 생성
- ping s3.ap-northeast-2.amazonaws.com
- 퍼블릭/프라이빗 ec2 인스턴스에서 s3와 통신하기 위해 데이터를 가상 라우터로 전달
- 가상 라우터는 각 라우팅 테이블 참고하여 게이트웨이 엔드포인트로 향하는 라우팅 경로를 확인하여 전달
- 게이트웨이 엔드포인트를 통해 s3로 데이터가 전달, 정상적인 통신이 가능
인터페이스 엔드포인트
인터페이스 엔드포인트 만들기
해당 엔드포인트 상세정보로 dns 정보 확인 가능
dig로 확인하면 ip주소가 프라이빗 ip주소로 확인 됨.
참고사이트
[AWS] VPC - 엔드포인트로 프라이빗 링크 구성
이번 주에도 실습으로 돌아온 수 지 타 산 입니다. 앞서 저희는 네트워크 기본개념을 시작으로 VPC에 대해 공부를 진행하였고, 최근에는 관련 내용 실습에 집중하고 있죠? AWS 혹은 클라우드 자체
btcd.tistory.com