VPC

2023. 7. 21. 10:27·Cloud/AWS
반응형

Default VPC Walkthrough

  • 새로운 AWS 계정은 모두 기본 VPC가 하나 생기고 바로 사용할 수 있다.
  • 새로운 EC2 인스턴스는 서브셋을 지정하지 않으면 기본 VPC에 실행된다.
  • 기본 VPC는 처음부터 인터넷에 연결돼 있어서 인스턴스가 인터넷에 액세스하고 내부의 EC2 인스턴스는 공용 IPv4 주소를 얻는다.
  • EC2 인스턴스를 위한 공용 및 사설 IPv4 DNS 이름도 얻는다.
  • 기본 VPC가 만들어졌을 때 CIDR 탭을 보면 CIDR에 IP 하나만 생성되고 VPC와 연결되어 있다.
  • 기본적으로 각 서브넷에는 고유 IPv4 CIDR가 있고 가용 영역을 확인하면 서브넷마다 다른 AZ에 위치한다.
  • CIDR 외부 트래픽 모두 인터넷 게이트웨이로 이동한다.
  • 인터넷 게이트웨이가 VPC에 연결되어 있고 VPC에 위치한 EC2 인스턴스에 인터넷 액세스를 제공한다.
  • 라우팅 테이블은 명시적으로 연결된 서브넷이 없어도 암시적으로 연결된 경우가 있다.

VPC in AWS (IPv4)

  • VPC(Virtual Private Cloud)
  • 단일 AWS 리전에 여러 VPC를 둘 수 있다.
  • 리전당 최대 5개까지 가능한데 엄격히 제한하지 않아서 더 늘릴 수 있다.
  • VPC마다 할당된 CIDR는 다섯 개
  • 각 CIDR의 최소 크기는 /28로 IP 주소는 최소 16개, 최대 크기는 /16으로 IP 주소는 최대 65,536개
  • VPC가 사설 리소스이기 때문에 사설 IPv4 범위만 허용
  • VPC CIDR가 다른 VPC나 네트워크 혹은 기업 네트워크와 겹치지 않도록 주의해야 한다.
  • 함께 연결하려면 VPC 혹은 CIDR IP 주소가 다른 네트워크의 IP 주소 범위와 겹치지 않아야 한다.

Subnet (IPv4)

  • 서브넷이란 VPC 내부에 있는 IPv4 주소의 부분 범위
  • 이 범위 내에서 AWS가 IP 주소 다섯 개를 예약한다.
    • CIDR 블록 10.0.0.0/24가 있다면 일부는 예약된 IP 주소다.
    • 10.0.0.0 네트워크 주소
    • 10.0.0.1 VPC 라우터용
    • 10.0.0.2 Amazon 제공 DNS에 매핑
    • 10.0.0.3은 당장 사용되진 않지만 나중에 필요할지 모르니까 예약해 둔다.
    • 10.0.0.255 네트워크 브로드캐스트 주소 (AWS는 VPC에서 브로드캐스트를 지원하지 않기에 예약은 되지만 사용하는 건 안됨)
  • EC2 인스턴스 서브넷에서 IP 주소 29개가 필요할 때 /27 서브넷은 사용 못 한다는 걸 시험 볼 때 기억해야함

Internet Gateway

  • 인터넷 Gateway는 VPC의 리소스를 인터넷에 연결하도록 허용하는 EC2 인스턴스나 람다 함수 등
  • 수평으로 확장되고 가용성과 중복성이 높고 좋은 관리형 리소스
  • VPC와는 별개로 생성해야 하고 VPC는 인터넷 Gateway 하나에만 연결되며 반대의 경우도 마찬가지
  • 인터넷 Gateway 자체는 인터넷 액세스를 허용하지 않는다.
  • 작동을 위해 라우팅 테이블을 수정해야 한다.
  • 예를 들면 공용 서브넷에 공용 EC2 인스턴스를 만들고 라우팅 테이블을 수정해서 EC2 인스턴스를 라우터에 연결하고 인터넷 Gateway에 연결한다. 그러면 인터넷 Gateway가 인터넷과 연결될 수 있다.

Bastion Host

  • 퍼블릭 서브넷에 있는 EC2 인스턴스, 배스천 호스트로 프라이빗 서브넷에 있는 EC2 인스턴스에 액세스할 수 있다.
  • 프라이빗 서브넷에 있는 EC2 인스턴스에 액세스하려면 SSH를 배스천 호스트에 연결하고 이 배스천 호스트가 다시 SSH를 프라이빗 서브넷의 EC2 인스턴스에 연결해야 한다.
  • 이때 배스천 호스트는 반드시 퍼블릭 서브넷에 있어야 한다.
  • 배스천 호스트를 위해서는 보안 그룹이 반드시 인터넷 액세스를 허용해야 한다.
  • 하지만 모든 인터넷 액세스를 허용하면 보안상 위험이 크기 때문에 가령 기업의 퍼블릭 CIDR 액세스만 허용하거나 사용자의 인터넷 액세스만 허용하는 등 이를 제한하는 게 좋다.
  • 프라이빗 서브넷의 EC2 인스턴스 보안 그룹에서는 반드시 SSH 액세스를 허용해야 한다.

구형 NAT Instance

  • NAT 인스턴스는 사설 서브넷 EC2 인스턴스가 인터넷에 연결되도록 허용한다.
  • NAT 인스턴스는 공용 서브넷에서 실행되어야 하고, 공용 및 사설 서브넷을 연결한다.
  • 비활성화해야 하는 설정은 바로 소스/목적지 확인이다.
  • NAT 인스턴스에는 고정된 탄력적 IP가 연결되어야 한다.
  • 라우팅 테이블을 수정하여 사설 서브넷과 공용 서브넷의 두 서브넷에 있는 EC2 인스턴스로부터 NAT 인스턴스로 트래픽을 전송하도록 한다.
  • 그리고 인스턴스의 IP는 공용 서버로 액세스하는데 NAT 인스턴스를 통과해야 한다.
  • NAT 인스턴스의 작동 방식을 크게 보면 공용 서브넷에 NAT 인스턴스를 생성하고 거기에 탄력적 IP를 연결한다.
  • 그리고 라우팅 테이블을 통해 사설 인스턴스가 NAT 인스턴스에서 인터넷 Gateway까지 통신하도록 한다/
  • NAT 인스턴스를 보면, 사전 구성된 Amazon Linux AMI를 사용할 수 있었지만 2020년 12월 31일로 표준 지원이 종료되었기에 이제 NAT Gateway를 권장한다.
  • NAT 인스턴스는 가용성이 높지 않고 초기화 설정으로 복원할 수 없어서 여러 AZ에 ASG를 생성해야 하고 복원되는 사용자 데이터 스크립트가 필요하기에 꽤 복잡하다.
  • 그리고 작은 인스턴스는 큰 인스턴스에 비교해서 대역폭이 더 작다.
  • 보안 그룹과 규칙을 관리해야 한다.
  • 인바운드에서는, 사설 서브넷의 HTTP/HTTPS 트래픽을 허용하고 홈 네트워크의 SSH도 허용한다.
  • 아웃바운드에서도 트래픽이 나가도록 해야한다.

NAT Gateway

  • AWS의 관리형 NAT 인스턴스이며 높은 대역폭을 가지고 있다.
  • 가용성이 높으며 관리할 필요가 없다.
  • 사용량 및 NAT Gateway의 대역폭에 따라 청구된다.
  • NAT Gateway는 특정 AZ에서 생성되고 탄력적 IP를 이어받는다.
  • EC2 인스턴스와 같은 서브넷에서 사용할 수 없어서 다른 서브넷에서 액세스할 때만 NAT Gateway가 도움이 된다.
  • 대역폭은 초당 5GB이며 자동으로 초당 45GB까지 확장할 수 있다.
  • 그리고 보안 그룹을 관리할 필요가 없다.

NAT Gateway 고가용성

  • NAT Gateway은 단일 AZ에서 복원 가능
  • 단일 AZ 내에서만 중복되지만 AZ가 중지될 경우를 위해 다중 NAT Gateway를 여러 AZ에 두면 결함 허용을 할 수 있다.
  • 라우팅 테이블을 통해 AZ를 서로 연결할 필요는 없다.

NAT Gateway vs NAT Instance

  • AZ 전체에서 고가용성을 필요로 하는 경우 다른 AZ에 더 만들어야 한다. 반면 NAT 인스턴스는 인스턴스간 장애 조치 스크립트를 통해서 전체적인 관리를 해야 한다
  • 대역폭은 NAT Gateway마다 초당 최대 45GB. 인스턴스에서는 사용하는 EC2 인스턴스에 따라 다른데 고급 인스턴스 유형일수록 더 많은 처리량을 가진다.
  • 유지 보수의 경우 NAT Gateway는 관리형 서비스이며, NAT 인스턴스는 사용자가 하고, OS 패치 등 소프트웨어가 필요하다.
  • 비용의 경우 시간당 비용과 NAT Gateway의 데이터 전송량을 더하고 반면 NAT 인스턴스는 시간당 EC2 인스턴스가 청구되며 EC2 인스턴스 유형과 크기에 따라 달라진다.
  • 또 EC2 인스턴스를 통해 인터넷으로 나가는 네트워크 비용도 함께 청구된다.
  • NAT Gateway는 공용 IPv4와 사설 IPv4를 가지고 있으며 NAT 인스턴스도 같다.
  • NAT Gateway는 보안 그룹을 사용하지 않는다. NAT 인스턴스는 보안 그룹을 설정하여 맞는 포트에 작동하게 해야 한다.

Security Groups & NACL

  • 서브넷을 오가는 트래픽을 제어하는 방화벽과 비슷하다.
  • 서브넷마다 하나의 NACL이 있고 새로운 서브넷에는 기본 NACL이 할당된다.

NACL Rules

  • NACL 규칙 정의에서 규칙에는 숫자가 있고 범위는 1부터 32,766까지
  • 숫자가 낮을수록 우선순위가 높아서 우선순위가 제일 높은 것은 1 가장 낮은 것은 32,766
  • 첫 번째 규칙 비교로 결정된다. 예를 들어 CIDR에서 ALLOW 를 정의하고 같은 CIDR인 특정 IP를 DENY로 정의하면 ALLOW는 100이고 DENY가 200이니까 IP 주소는 허용된다. 100이 200보다 우선
  • 마지막 규칙은 별표인데, 일치하는 규칙이 없으면 모든 요청을 거부한다.
  • AWS는 규칙을 100씩 추가하는 것을 권장
  • 새로 만들어진 NACL은 기본적으로 모두를 거부
  • NACL 사용 사례를 들면 서브넷 수준에서 특정한 IP 주소를 차단하는데 적합

기본 NACL

  • 기본 NACL는 연결된 서브넷을 가지고 인바운드와 아웃바운드의 모든 요청을 허용하는 특수성을 가진다.
  • 이것이 IPv4를 지원하는 기본 NACL의 모습인데 모든 것이 나가고 들어올 수 있다.
  • NACL이 모든 것을 드나들도록 허용하지 않으면 AWS를 시작할 때 심각한 디버깅을 해야 한다.
  • 기본 NACL은 매우 개방적
  • 기본 NACL을 수정하지 않는 것을 추천

임시 포트

  • 클라이언트와 서버가 연결되면 포트를 사용해야 한다.
  • 클라이언트는 기본적으로 개방된 포트가 없어서 클라이언트가 서버에 접속할 때 자체적으로 특정한 포트를 열게 된다.
  • 이 포트는 임시라서 클라이언트와 서버 간 연결이 유지되는 동안만 열려 있다.
  • 임시포트는 OS에 따라 즉 운영 체제에 따라 포트 범위가 달라진다.
    • Windows 10을 사용하면, 49152에서 65,535까지가
    • Linux를 사용할 경우 범위는 32768에서 60999까지
  • 임시 포트라고 불리는 것은 연결 수명을 위해서만 할당되는 무작위 포트이기 때문입니다

보안 그룹과 NACL의 차이점

  • 보안 그룹은 인스턴스 수준에서 작동하는데 NACL은 서브넷 수준에서 작동
  • 보안 그룹은 허용 규칙을 지원하지만 NACL은 허용과 거부 규칙을 모두 지원
  • NACL에서는 특정 IP 주소를 거부할 수 있다.
  • 보안 그룹은 상태 유지이며 규칙과 무관하게 트래픽을 허용
  • NACL은 무상태이기 때문에 인바운드와 아웃바운드 규칙이 매번 평가되고 임시 포트를 리마인더로 생각하자.
  • 보안 그룹에서는 모든 규칙이 평가되고 트래픽 허용 여부를 결정하지만 NACL에서는 가장 높은 우선순위를 가진 것이 먼저 평가된다.
  • 보안 그룹은 누군가 지정할 때 EC2 인스턴스에 적용되지만 NACL은 거기에 연결된 서브넷의 모든 EC2 인스턴스에 적용된다.

VPC 피어링

  • VPC 피어링 연결을 추가해서 서로 다른 VPC를 연결한다. 즉 통신이 가능해진다.
  • 다양한 리전과 계정에서 VPC를 생성할 수 있는데 AWS 네트워크를 통해 연결하고 싶을 때 사용
  • 연결했을 때 CIDR가 겹치면 통신을 할 수 없다.
  • VPC 피어링은 두 VPC 간에 발생하며 전이되지 않습니다. (A, B 연결 완료. B, C 연결 완료. 이 상황에서 A,C 통신 불가)
  • VPC 피어링이 있을 때 활성화는 당연하고 VPC 서브넷 상의 루트 테이블도 업데이트해서 EC2 인스턴스가 서로 통신할 수 있게 해야 한다.
  • 다른 계정 간에도 VPC 피어링이 가능하다. 또한 리전 간 연결도 가능
  • 보안 그룹에서 다른 보안 그룹을 참조할 수 있었는데 동일 리전의 계정 간 VPC에서도 보안 그룹을 참조할 수도 있다.

VPC EndPoint

  • VPC 엔드포인트를 사용하면 퍼블릭 인터넷을 거치지 않고도 인스턴스에 액세스할 수 있다.
  • 프라이빗 AWS 네트워크만 거쳐서 바로 해당 서비스에 액세스할 수 있다.
  • VPC 엔드포인트를 사용하면 AWS PrivateLink를 통해 프라이빗으로 액세스하므로 AWS에 있는 모든 서비스에 액세스할 때 퍼블릭 인터넷을 거치지 않고도 프라이빗 네트워크를 사용할 수 있다.
  • VPC 엔드포인트는 중복과 수평 확장이 가능하고 인터넷 게이트웨이나 NAT Gateway 없이도 AWS 서비스에 액세스할 수 있게 해주므로 네트워크 인프라를 상당히 간단하게 만들 수 있다.
  • 문제가 발생하면 VPC에서 DNS 설정 해석이나 라우팅 테이블을 확인하면 된다.

VPC EndPoin 유형

  • VPC 엔드포인트 유형은 2가지가 있다.
  • PrivateLink를 이용하는 인터페이스(Interface) 엔드포인트와 게이트웨이(Gateway) 엔드포인트

인터페이스(Interface) 엔드포인트

  • 인터페이스 엔드포인트는 ENI를 프로비저닝하는데 ENI는 VPC의 프라이빗 IP 주소이자 AWS의 엔트리 포인트
  • ENI가 있으므로 반드시 보안 그룹을 연결해야 한다.
  • 대부분의 AWS 서비스를 지원하고 청구되는 요금은 시간 단위 또는 처리되는 데이터 GB 단위로 청구
  • 이 방법은 모든 서비스에서 사용할 수 있다.

게이트웨이(Gateway) 엔드포인트

  • 게이트웨이 엔드포인트는 특이하게 게이트웨이를 프로비저닝하는데 이때 게이트웨이는 반드시 라우팅 테이블의 대상이 되어야 한다.
  • IP 주소를 사용하거나 보안 그룹을 사용하지 않고 라우팅 테이블의 대상이 될 뿐 (중요)
  • 게이트웨이 엔드포인트 대상으로는 Amazon S3와 DynamoDB 두 가지가 있고 장점은 요금이 무료이고 라우팅 테이블 액세스일 뿐이므로 자동으로 확장된다는 점
  • 시험에서는 게이트웨이 엔드포인트를 선택하시는 것이 유리. (라우팅 테이블만 수정하면 되므로 또한 무료)

정리

  • 게이트웨이 엔드포인트는 비용이 들지 않고 확장성이 더 높지만 인터페이스 엔드포인트를 사용하면 비용이 발생
  • 게이트웨이 엔드포인트보다 인터페이스 엔드포인트가 권장되는 경우는 온프레미스에서 액세스해야 할 필요가 있을 때 뿐
  • 온프레미스에 있는 데이터 센터에 프라이빗으로 액세스해야 하는 경우 Site-to-Site VPN이나 직접 연결 방법이 있다.
  • 혹은 다른 VPC에 연결할 때도 인터페이스 엔드포인트 유형을 사용하는 편이 좋다.
  • 대부분 Amazon S3에서는 게이트웨이 엔드포인트가 유리

VPC Flow log

  • VPC 흐름 로그는 인터페이스로 향하는 IP 트래픽 정보를 포착하는 것
  • VPC 계층, 서브넷 계층 Elastic Network Interface(ENI) 계층 총 세 가지 흐름 로그가 있다.
  • 흐름 로그는 연결 문제를 모니터링하고 트러블 슈팅하는 데 유용
  • 로그 데이터는 Amazon S3와 CloudWatch Logs에 전송할 수 있고 그리고 AWS 관리형 인터페이스 즉 ELB, RDS, ElastiCache Redshift, Workspaces NAT Gateway, Transit Gateway의 정보를 포착한다.
  • 정해진 형식에 따라 version, account-id interface-id가 있으며 소스 주소(srcaddr), 대상 주소(dstaddr) 소스 포트(srcport), 대상 포트(dstport), 프로토콜(protocol) 패킷 수(packets), 바이트 수(bytes) 시작 동작(start action), 로그 상태(log-status) 등이 있다.
    • srcaddr과 dstaddr로는 문제가 있는 IP를 식별할 수 있다. 한 IP가 지속적으로 거부되면 여기서 알아볼 수 있다. IP에 문제가 있거나 특정 IP가 공격받았을 때도 여기서 알 수 있다.
    • srcport와 dstport에서는 문제가 있는 포트를 식별할 수 있다
    • action은 요청이 수락되었는지 거부되었는지를 나타내며 보안 그룹이나 NACL 계층에서 요청이 성공했는지 실패했는지를 알려 준다.
  • 이러한 VPC 흐름 로그는 사용량 패턴 분석이나 악성 행동 감지 포트 스캔 등에 사용할 수 있다.

Site-to-Site VPN

  • 기업 온프레미스를 AWS와 비공개로 연결하려면 기업은 고객 게이트웨이를 VPC는 VPN 게이트웨이를 갖춰야 한다.
  • 공용 인터넷을 통해 사설 Site-to-Site VPN을 연결해야한다.
  • 공용 인터넷을 거치긴 하지만 VPN 연결이라서 암호화돼 있다.

가상 프라이빗 게이트웨이 (VGW)

  • VPN 연결에서 AWS 측에 있는 VPN 집선기(concentrator).
  • AWS VPC 엔드포인트
  • VGW는 생성되면 VPC에 연결된다. 
  • ASN을 지정할 수도 있다.

고객 게이트웨이 (CGW)

  • 소프트웨어 혹은 물리적 장치로 VPN 연결에서 온프레미스 측에 속한다.

Site-to-Site VPN Connections

  • 고객 게이트웨이가 있는 온프레미스와 가상 프라이빗 게이트웨이를 갖춘 VPC가 있다고 가정
  • 고객 게이트웨이가 공용이라면 인터넷 라우팅이 가능한 IP 주소가 고객 게이트웨이 장치에 있다.
  • 그럼 고객 게이트웨이의 공용 IP를 사용해서 사용해서 VGW와 CGW를 연결. 
  • 고객 게이트웨이를 비공개로 남겨 사설 IP를 가질 수도 있다.
  • 그런 경우 대부분 NAT-T를 활성화하는 NAT 장치 뒤에 있다.
  • NAT 장치에 공용 IP가 있을 시 이 공용 IP를 CGW에 사용해야 한다.
  • 서브넷의 VPC에서 라우트 전파를 활성화해야 Site-to-Site VPN 연결이 실제로 작동한다
  • 온프레미스에서 AWS로 EC2 인스턴스 상태를 진단할 때 보안 그룹 인바운드 ICMP 프로토콜이 활성화됐는지 확인해야 한다.

AWS VPN CloudHub

  • CloudHub는 여러 VPN 연결을 통해 모든 사이트 간 안전한 소통을 보장
  • 비용이 적게 드는 허브 및 스포크 모델(hub&spoke)로 VPN만을 활용해 서로 다른 지역 사이 기본 및 보조 네트워크 연결성에 사용
  • VPC 내 CGW와 VGW 하나 사이에 Site-to-Site VPN을 생성하게 되는 것
  • 이렇게 연결되면 고객 네트워크는 VPN 연결을 통해 서로 소통할 수 있게 된다,
  • VPN 연결이므로 모든 트래픽이 공용 인터넷을 통한다.
  • 사설 네트워크로는 연결되지 않는다. 공용 인터넷을 통하지만 VPN 연결은 당연히 암호화된다.
  • 설치 방법은 가상 프라이빗 게이트웨이 하나에 Site-to-Site VPN 연결을 여러 개 만들어 동적 라우팅을 활성화하고 라우팅 테이블을 구성하면 된다.

Direct Connect(DX)

  • Direct Connect는 원격 네트워크로부터 VPC로의 전용 프라이빗 연결을 제공
  • Direct Connect를 사용할 때는 전용 연결을 생성해야 하고 AWS Direct Connect 로케이션을 사용
  • VPC에는 가상 프라이빗 게이트웨이를 설치해야 온프레미스 데이터 센터와 AWS 간 연결이 가능
  • 같은 연결상에서 Amazon S3 등의 퍼블릭 리소스와 EC2 인스턴스 등의 프라이빗 리소스에 퍼블릭 및 프라이빗 VIF를 사용해 액세스할 수 있다.
  • Direct Connect를 사용하면 대역폭 처리량이 증가할 때 큰 데이터 세트를 처리할 때 속도가 빨라진다.
  • 퍼블릭 인터넷 연결에 문제가 발생해도 Direct Connect를 사용하면 연결 상태를 유지할 수 있다.
  • 실시간 데이터 피드를 사용하는 애플리케이션에 유용
  • 또 하이브리드 환경을 지원하는데 이는 온프레미스 데이터 센터와 클라우드가 연결되어 있기 때문
  • IPv4와 IPv6 둘 다 지원
  •  만약 다른 리전에 있는 하나 이상의 VPC와 연결하고 싶다면 Direct Connect Gateway를 써야 한다.

Direct Connect 유형

전용 연결 용량

  • 초당 1Gbp 혹은 10Gbp이 한도
  • 고객은 물리적 전용 이더넷 포트를 할당받는다.
  • 먼저 AWS에 요청을 보내면 AWS Direct Connect 파트너가 처리를 완료한다.

호스팅 연결

  • 초당 50Mbp, 500Mbp에서 10Gbp까지 다양하다.
  • AWS Direct Connect 파트너를 통해 또 다시 연결을 요청한다.
  • 필요하면 언제든지 용량을 추가하거나 제거하면 되므로 전용 연결보다는 유연하다.
  • 선택한 로케이션에서 초당 1, 2, 5, 10Gbp 이용이 가능하고 전용 연결이든 호스팅 연결이든 새 연결을 만들려면 리드 타임이 한 달보다 길어질 때도 있다.

암호화

  • Direct Connect에는 암호화 기능이 없어서 데이터가 암호화되지 않지만 프라이빗 연결이므로 보안을 유지할 수 있다.
  • 만약 암호화를 원한다면 Direct Connect과 함께 VPN을 설치해서 IPsec으로 암호화된 프라이빗 연결이 가능하다.
  • 추가로 보안을 확보하면 좋지만 구현이 복잡하다는 단점이 있다.

복원력

  • 핵심 워크로드의 복원력을 높이기 위해서는 여러 Direct Connect를 설치하는 것이 좋다.
  • 가령 기업 데이터 센터가 두 개 있고 Direct Connect 로케이션도 둘이라고 했을 때 중복이 발생
  • 프라이빗 VIF가 하나 있는데 다른 데 또 있다면 하나의 연결을 여러 로케이션에 수립한 것이므로 Direct Connect 하나가 망가져도 다른 하나가 예비로 남아 있기 때문에 복원력이 강해진다. 따라서 핵심 워크로드에 적합
  • 어쨌든 그러려면 각 Direct Connect 로케이션에 독립적인 연결을 두 개씩 수립하면 복원력을 최대로 만들 수 있다.

Transit Gateway

  • 전이적 피어링 연결이 VPC 수천 개와 온프레미스 데이터 센터 Site-to-Site VPN, Direct Connect 허브와 스포크 간 스타형 연결 사이에 생기는 것이다.
  • Transit Gateway를 통해 VPC 여러 개를 연결할 수 있다.
  • VPC를 모두 피어링할 필요가 없으며 Transit Gateway를 통해 전이적으로 연결된다.
  • 모든 VPC가 서로 통신할 수 있는데 Direct Connect Gateway를 Transit Gateway에 연결하면 Direct Connect 연결이 각기 다른 VPC에 직접 연결된다.
  • 만약 Site-to-Site VPN과 VPN 연결을 선호한다면 고객 게이트웨이와 VPN 연결을 Transit Gateway에 연결할 수 있다.
  • 리전 리소스이며 리전 간에 작동한다.
  • Transit Gateway를 계정 간에 공유하려면 Resource Access Manager를 사용하고요
  • 리전 간 Transit Gateway를 피어링할 수도 있다.
  • Transit Gateway에 라우팅 테이블을 생성해서 어느 VPC가 누구와 통신할지 어떤 연결이 액세스할지 제한한다.
  • Transit Gateway 내 모든 트래픽 경로를 제어해서 네트워크 보안을 제공하는 것이다.
  • Direct Connect Gateway 및 VPN 연결과 함께 작동하고 AWS에서 유일하게 IP 멀티캐스트를 지원하는 서비스로 만약 시험에 IP 멀티캐스트가 나오면 Transit Gateway를 사용해야 한다.

Site-to-Site VPN ECMP

  • 등가 다중 경로 라우팅을 뜻하는 ECMP는 여러 최적 경로를 통해 패킷을 전달하는 라우팅 전략
  •  Site-to-Site VPN 연결을 많이 생성해서 AWS로의 연결 대역폭을 늘릴 때 사용

트래픽 미러링

  • VPC에서 네트워크 트래픽을 수집하고 검사하되 방해되지 않는 방식으로 실행하는 기능
  • 관리 중인 보안 어플라이언스로 트래픽을 라우팅
  • 따라서 트래픽을 수집해 수집하려는 트래픽이 있는 소스 ENI를 정의
  • 또한 어디로 트래픽을 보낼지 대상을 정의해야 한다. (ENI나 NLB)
  • 모든 정보가 아닌 일부만 얻고 싶다면 선택적으로 필터를 사용할 수도 있다.
  • 동일한 VPC에 소스와 대상이 있어야 한다.
  • 다른 VPC에 걸쳐 있기도 한데,  VPC 피어링을 활성화한 경우
  • VPC 트래픽 미러링 사용 사례로는 콘텐츠 검사와 위협 모니터링 네트워킹 문제 해결 등이 있다.

IPv6 in VPC

  • VPC에서 IPv6 지원을 활성화할 수 있다.
  • VPC와 서브넷에서 IPv4 비활성은 불가능.
  • IPv6를 활성화할 수 있다. 공용 IP 주소이며 듀얼 스택 모드로 작동합
  • EC2 인스턴스가 VPC에서 실행되면 최소 사설 내부 IPv4 하나와 공용 IPv6 하나를 얻게 되고 IPv4나 IPv6를 사용해서 인터넷 게이트웨이를 통해 인터넷에 통신할 수 있다.
  • 시험 팁: 실행을 거듭해서 IPv4 공간이 전부 소진된다면 사용자가 새 EC2 인스턴스를 생성할 시 오류가 발생한다. IPv6 때문이 아니라 서브넷이나 VPC에 IPv4 공간이 없으므로 이런 경우에는 서브넷의 VPC에 새로운 CIDR를 추가하면 된다.
  • 새 EC2 인스턴스를 시작하고 해당 IP를 위한 다른 IPv4 주소 범위를 얻도록

이그레스 전용 인터넷 Gateway

  • IPv6 트래픽에만 사용되며 NAT Gateway와 비슷하지만 IPv6 전용
  • VPC 인스턴스에서 IPv6상 아웃바운드 연결을 허용하고 동시에 인터넷이 인스턴스로 IPv6 연결을 시작하지 못하게 막는다.
  • 그러려면 라우팅 테이블을 업데이트해야 한다.

정리

  • CIDR는 IP 범위
  • VPC는 가상 사설 클라우드로 IPv4와 IPv6용으로 작동한다.
  • 서브넷은 CIDR가 정의된 AZ에 연결되며 공용 및 사설 서브넷이 있다.
  • 공용 서브넷을 구축하려면 인터넷 게이트웨이를 연결해서 공용 서브넷에서 인터넷 게이트웨이로 경로를 만들면 된다. 활성화되면 IPv4 및 IPv6에 인터넷 액세스를 제공
  • 라우팅 테이블은 대체 게이트웨이나 VPC 피어링 연결 VPC 엔드 포인트로 향하는 라우트를 갖도록 편집되고 네트워크가 VPC 내부에서 흐르도록 돕는 중요한 기능
  • 배스천 호스트는 공용 EC2 인스턴스로 SSH를 수행하며 사설 서브넷의 다른 EC2로 SSH 연결을 사용할 수 있다.
  • NAT 인스턴스는 EC2 인스턴스이며 사설 및 공용 서브넷에 배포되어 사설 서브넷의 EC2 인스턴스에 인터넷 액세스를 제공한다. 오래돼서 더는 사용하지 않는다. 소스/목적지 검사 플래그를 비활성화해야 작동한다. 또 보안 그룹 규칙을 수정해야 한다.
  • 지금은 NAT Gateway를 쓴다. 성능이 훨씬 좋고 AWS에서 관리한다. 사설 EC2 인스턴스에 확장 가능한 인터넷 액세스를 제공하고 IPv4에서만 작동한다.
  • Route 53를 통해 사설 DNS를 쓰려면 DNS 변환과 DNS 호스트 이름 설정을 VPC에서 활성화해야 한다. 활성화할 설정이 총 두 개
  • NACL은 네트워크 ACL은 방화벽 규칙이다.
  • 인바운드와 아웃바운드 액세스를 서브넷 레벨에서 정의한다. 임시 포트 NACL이 무상태이므로 인바운드와 아웃바운드 규칙이 항상 평가된다.
  • 반면 보안 그룹 규칙은 상태가 유지된다. 인바운드 허용 시 아웃바운드도 바로 허용되고 반대로도 마찬가지다.  또한 보안 그룹 규칙은 EC2 인스턴스 레벨에서 적용됩니다
  • VPC Reachability Analyzer는 여러 AWS 리소스 사이에서 네트워크 연결을 시험하고 디버깅을 수행한다.
  • VPC 피어링은 두 VPC를 연결할 때 유용한데 CIDR가 겹치지 않는 경우에만 가능
  • VPC 피어링 연결은 비전이적이므로 VPC 세 개를 연결하려면 VPC 피어링 연결도 세 개가 필요하다.
  • VPC 엔드 포인트는 AWS 서비스에 사설 액세스를 제공하는데 Amazon S3, DynamoDB CloudFormation, SSM 등 VPC 내 모든 서비스에서 가능하다.
  • Amazon S3와 DynamoDB를 위한 게이트웨이 엔드 포인트로 사용되고 나머지는 모두 인터페이스 엔드 포인트.
  • VPC 플로우 로그는 VPC 내 모든 패킷과 관련해 일정 레벨의 메타데이터를 얻는 방법
  • ACCEPT 및 REJECT 트래픽 정보가 있다. VPC 플로우 로그는 VPC 서브넷이나 ENI 레벨에서 생성할 수 있으며 분석 과정 후 Amazon S3로 전송된다.
  • 이어서 Athena로 분석하거나 CloudWatch Logs로 보내 CloudWatch Logs Insights로 분석하기도 한다.
  • VPC를 데이터 센터에 연결하려면 두 가지 옵션이 있는데 먼저 Site-to-Site VPN은 공용 인터넷을 지나는 VPN 연결로 AWS에는 가상 프라이빗 게이트웨이를 데이터 센터에는 고객 게이트웨이를 생성하고 나서 VPN 연결을 구축한다.
  • 가상 프라이빗 게이트웨이를 사용해 VPC 연결을 여러 개 생성하려면 VPN CloudHub를 활용해서 허브와 스포크 간 VPN 모델로 사이트에 연결한다.
  • 데이터 센터에 연결하는 또 다른 방법은 Direct Connect를 사용해 완전히 비공개로 연결하는 것이다. 공용 인터넷을 통과하지 않는데 구축하는 데 시간이 걸린다. 데이터 센터를 Direct Connect 로케이션과 연결해 줘야 작동한다.
  • Direct Connect Gateway는 다양한 AWS 리전의 수많은 VPC에 Direct Connect를 설정한다.
  • PrivateLink 또는 VPC 엔드 포인트 서비스는 고객 VPC에 만든 자체 VPC의 내부 서비스에 비공개로 연결되며 장점을 꼽자면 VPC 피어링, 공용 인터넷 NAT Gateway 라우팅 테이블은 필요 없다.
  • 네트워크 로드 밸런서와 ENI만 주로 함께 사용된다.
  • VPC가 있는 서비스를 수백, 수천 고객 VPC에 노출할 수 있다. 네트워크를 드러내지 않은 채
  • Transit Gateway는 VPC와 VPN Direct Connect를 위한 전이적 피어링 연결. 모두 이곳을 지난다는 게 장점
  • 트래픽 미러링이란 추가 분석을 위해 ENI 등에서 네트워크 트래픽을 복사하는 것

Network Firewall

  • 전체 VPC를 보호할 수 있는 수준 높은 방법은 AWS Network Firewall 이는 전체 VPC를 방화벽으로 보호하는 서비스로 VPC가 있으면 이 전체에 방화벽을 두르는 것이다.
  • AWS Network Firewall은 계층 3에서 계층 7까지 보호하는데 모든 방향에서 들어오는 모든 트래픽을 검사한다.
  • VPC 간 트래픽 인터넷 아웃바운드, 인터넷 인바운드 Direct Connect나 Site to Site VPN 연결까지 포함된다.
  • 규칙을 정의하기만 하면 모든 동작을 제어할 수 있다.
  • 내부적으로 Network Firewall은 AWS Gateway Load Balancer를 사용한다.
  • 단, 타사 어플라이언스가 아니라 AWS에서 자체 어플라이언스를 통해 트래픽을 관리하므로 Network Firewall에 자체 규칙을 갖추고 있다.
  • 이 규칙들 역시 중앙 집중식으로 관리되며 여러 계정과 VPC에 적용된다.
  • Network Firewall에서는 네트워크 트래픽을 세부적으로 관리한다.
    • VPC 수준에서 수천 개의 규칙을 지원하고 수만 IP를 IP와 포트별로 필터링할 수 있다.
    • 프로토콜별로도 필터링할 수 있다. 아웃바운드 통신에서는 SMB 프로토콜을 비활성화하는 식으로
    • 도메인별로도 필터링할 수 있어서 VPC의 아웃바운드 트래픽에 대해서는 기업 도메인에만 액세스를 허용하거나 타사 소프트웨어 리포지토리에만 액세스를 허용할 수도 있다.
    • regex 등을 이용해서 일반 패턴 매칭도 가능
    • 트래픽 허용, 차단, 알림 등을 설정해서 설정한 규칙에 맞는 트래픽을 필터링할 수도 있다.
    • 활성 플로우 검사를 통해 침입 방지 능력을 갖출 수 있다.
  • 모든 규칙 일치는 Amazon S3와 CloudWatch Logs 및 Kinesis Data Firehose로 전송해 분석할 수 있다.
  • 방화벽은 VPC 수준에서 설정할 수 있다는 점이 중요하고, 트래픽 필터링과 플로우 검사를 지원한다는 점도 중요하다.
반응형
'Cloud/AWS' 카테고리의 다른 글
  • 기타 서비스
  • 재해복구
  • AWS 보안 및 암호화
  • IAM 고급
Debin
Debin
공부 기록을 남기며 게시글 리팩토링을 진행하는 블로그입니다.
  • Debin
    리팩토링하는 블로그
    Debin
  • 전체
    오늘
    어제
    • 분류 전체보기
      • DB
        • DB 기초
        • MySQL
        • SQL 튜닝
      • OS
      • Network
      • Git
      • 디지털콘텐츠기획
      • 소프트웨어공학
      • 코딩테스트
        • 프로그래머스
        • 백준
        • 인프런
      • 공부 일지
      • 독서
        • 클린코드
        • 일상 속 사물이 알려주는 웹 API 디자인
        • 토비의 스프링
        • 객체지향의 사실과 오해
        • 자바 잘 읽는 법
      • 기록 및 회고
      • Cloud
        • AWS
      • 개발
        • Java
        • Spring Core
        • Spring MVC
        • Spring DB
        • Spring Boot
        • Spring Security
        • Spring Batch
        • JPA
        • Test
        • Android
      • 대외활동
        • UMC SERVER
        • 카엔프 SW 아카데미
      • 프로젝트
      • Docker
      • Gradle
      • ELK
      • 실무 이야기
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

    • 깃허브
  • 공지사항

    • 본인 깃허브입니다!
  • 인기 글

  • 태그

    Java
    redis
    AWS
    container
    JPA
    spring boot
    자바
    스프링
    객체지향
    운영체제
    인덱스
    컨테이너
    프록시
    innodb
    AOP
    스프링 부트
    spring
    docker
    데이터베이스
    리눅스
    spring mvc
    토비의 스프링
    ORM
    트랜잭션
    mysql
    test
    코딩 #개발자 #노마드북클럽 #노개북
    객체
    도커
    SQL
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.6
Debin
VPC
상단으로

티스토리툴바