[카테고리:] Alibaba

  • Alibaba Cloud 와 AWS VPN 연결 가이드(Feat. Site-to-Site VPN Connection)

    Alibaba Cloud 와 AWS VPN 연결 가이드(Feat. Site-to-Site VPN Connection)

    🧷 Alibaba Cloud 환경

    Region : Singapore

    VPC : 172.16.0.0/16

    Subnet 1, 2 : 172.16.1.0/24, 172.16.2.0/24

    🧷 AWS 환경

    Region : South Korea(Seoul)

    VPC : 192.168.0.0/16

    Subnet 1, 2 : 192.168.10.0/24, 192.168.20.0/24


    🧷 알리바바 클라우드 VPN Gateway, AWS Virtual Private Gateway 생성

    멀티 클라우드 환경을 구축하기 위해 알리바바 클라우드와 AWS 클라우드를 VPN Gateway로 연결하려 합니다.

    먼저 알리바바 클라우드 VPN Gateway를 생성합니다.

    생성하면, 알리바바 클라우드에 IPsec Address IP가 2개 생성됩니다.(듀얼터널)

    그 다음, AWS 클라우드에서도 Virtual Private gateway를 생성합니다.

    Virtual Private Gateway 이름은 선택사항이고, Autonomous System Number(ASN)은 Amazon 기본 ASN으로 생성하셔도, Custom으로 다르게 설정해도 됩니다.

    그 이후, 생성한 Virtual Private Gateway에 연결하려는 VPC를 Attach 시켜줍니다.


    AWS Customer Gateway 생성

    앞서 만들어 두었던 Alibaba Cloud의 VPN Gateway의 2개의 IP를 AWS 클라우드 쪽 Customer Gateway로 생성합니다.

    예를 들어, Alibaba Cloud 쪽 2개의 IP가 (1,1,1,1 / 2.2.2.2)이라면 아래 생성화면에서 IP address 란에 입력해주면 됩니다.

    • BGP ASN은 기본값으로 두어도 되고, 다른 값으로 변경해서 넣어도 된다.

    🚨 AWS 에서 Customer gateway 생성할 때 하나의 IP밖에 등록하지 못하기 때문에 Customer gateway를 2개 만들어 줍니다.


    AWS Site-to-site VPN Connection 생성

    • Target gateway type : 미리 만들어 두었던 Virtual private gateway를 선택해줍니다.
    • Customer gateway : 미리 만들어 두었던 Customer gateway를 선택합니다.
      • customer gateway를 2개를 만들어 두었지만 하나만 설정이 가능합니다.
    • Routing Options : BGP를 요구한다면 Dynamic, 아니면 Static 으로 설정해도 상관없다.
    • Tunnel option은 default로 설정해도 됩니다. 다른 옵션을 원하면 Edit tunnel options를 선택해줍니다.

    site-to-site VPN Connection을 생성할 때 customer gateway를 하나만 붙일 수 있는데, Alibaba Cloud 쪽 VPN gateway는 듀얼 터널 모드로 2개를 연결해야 고가용성(HA)으로 구축이 가능하다.

    이런 경우, AWS site-to-site VPN Connection을 2개를 만들어서 각 Connection의 Tunnel #1 IP만 Alibaba Cloud의 VPN Gateway의 듀얼 터널IP로 연결하면 듀얼터널로 구성이 가능합니다.

    알리바바 클라우드 쪽 Customer Gateway에 AWS 쪽 Site-to-Site VPN의 IP를 등록해야하는데 Site-to-Site VPN를 2개 만들어 각 Tunnel#1의 IP만 등록해서 연결해주면 된다.


    Alibaba cloud 쪽 IPsec connection으로 최종연결

    앞서 만들었던 AWS Site-to-Site VPN을 만들고 나면 해당 VPN에 Configuration을 다운 받을 수 있는데 Generic으로 다운을 받고 나면 안쪽에 설정값들이 나옵니다.

    이 설정값들 기반으로 Alibaba Cloud 쪽 IPsec Connection 설정을 동일하게 해주고 완료하고 나면 최종적으로 완료할 수 있습니다.

    여기에 나와있는 설정값들을 AWS 쪽과 동일하게 설정해주면 됩니다.

    • LocalId : Alibab Cloud 쪽 IP
    • RemoteId : AWS 쪽 IP

    문제 없이 설정완료가 되면, 아래 이미지와 같이 Tunnel(Primary), Tunnel(Backup) UP 상태가 됩니다.


    정리

    Alibaba Cloud VPN Gateway는 듀얼터널모드로 생성이 가능하여, AWS VPN 과 연결할 때 AWS 쪽 Customer Gateway를 하나만 등록이 가능하여 헷갈린 부분이 많았습니다. 위에 정리한 내용을 토대로 설정한다면 조금이나마 도움이 될 수 있을 것 같습니다.

  • Alibaba Cloud | NAT Gateway – DNAT, SNAT 가이드

    Alibaba Cloud | NAT Gateway – DNAT, SNAT 가이드

    🧩 NAT Gateway란?

    NAT(Network Address Translation) Gateway는
    VPC 내부의 Private IP ↔ Public 네트워크 간의 주소 변환을 수행하는 서비스입니다.

    즉,

    • 내부 → 외부 통신할 때 IP를 바꿔줌
    • 외부 → 내부 통신할 때 IP를 바꿔줌

    그런데 이때 사용되는 기술이 바로

    • SNAT (Source NAT)
    • DNAT (Destination NAT)

    입니다.


    🟦 SNAT (Source NAT) — 내부 → 외부 통신

    ✔ 핵심 정의

    VPC 내부(Private IP)에서 외부(인터넷)로 나갈 때
    출발지 IP(Private → Public)로 변환해주는 기능.

    ✔ 왜 필요한가?

    Private Subnet에 있는 ECS들은 보통 Public IP가 없음
    그래서 그냥은 인터넷에 못 나감.

    내부 IP(10.x.x.x)로는 절대로 공인 인터넷에서 응답을 줄 수 없음

    그럼 어떻게 해야 할까?

    → NAT Gateway의 SNAT 규칙을 만들어
    내부 IP가 NAT Gateway가 보유한 Public IP로 변환되어 나가게 함.

    ⚙ 동작 흐름

    예시: Private ECS → Internet (yum update)

    1. ECS(10.0.1.10)에서 yum update 요청
    2. NAT GW가 SNAT 규칙에 의해 출발지 IP를 공인 IP로 변경
      → 예: 47.xxx.xxx.xxx
    3. 인터넷으로 전송
    4. 응답은 NAT GW 공인 IP로 돌아옴
    5. NAT GW가 다시 Private IP(10.0.1.10)로 복원
    6. ECS에 전달

    📦 실제 규칙 예시

    SNAT:
    VPC subnet 10.0.1.0/24 → EIP 47.xxx.xxx.xxx

    🟥 DNAT (Destination NAT) — 외부 → 내부 통신

    ✔ 핵심 정의

    외부(인터넷)에서 들어오는 패킷의
    목적지 IP(공인 → 사설)로 변환해주는 기능.

    ✔ 왜 필요한가?

    보통 ECS는 Private Subnet에 있고
    직접 Public IP를 붙이지 않을 때가 많음.

    하지만 외부에서 특정 서비스를 들어와야 할 때가 있죠?

    예:

    • 웹서버 접속(HTTP/HTTPS)
    • SSH 접속
    • 특정 Port 기반 API 요청

    → 이때 사용하는 것이 DNAT 규칙(Port Forwarding)

    ⚙ 동작 흐름

    예: 외부 클라이언트 → ECS의 22번 포트로 SSH 접속

    1. 외부에서 47.xxx.xxx.xxx:22로 요청
    2. NAT GW의 DNAT 규칙을 확인
    3. 목적지 IP를 Private IP(10.0.1.10:22)로 변환
    4. 패킷 내부로 전달
    5. 응답도 NAT GW를 통해 역 변환해서 외부로 나감

    📦 실제 규칙 예시

    DNAT:
    EIP 47.xxx.xxx.xxx:22 → 10.0.1.10:22

    🟩 언제 어떤 NAT를 써야 할까?

    ✔ SNAT이 필요한 경우

    • Private ECS에서 인터넷 나가는 용도
    • Docker 이미지 pull
    • yum/apt update
    • 외부 API 호출
    • 소규모 백엔드 서버 구성

    ✔ DNAT이 필요한 경우

    • Public IP 없이 웹서비스를 노출하고 싶을 때
    • 특정 Private ECS에 SSH해야 할 때
    • 특정 Port로 들어오는 요청을 내부 포트로 보내고 싶을 때
      (Nginx, Game Server, Custom API 등)

    🧾DNAT 구성할 때 쉽게 안되었던 부분

    DNAT구성은 다음과 같이 했다.

    PC -> EIP -> NAT-GW(DNAT) -> ECS(Private IP)

    위와 같은 형태로 Private IP만 붙은 서버 앞단에 NAT-GW(EIP)만 붙여서 ssh(22)로 접속하려 했으나, 통신이 안되는 현상 발생했다.

    그 이유는,

    ✅ ICMP Retrieval 옵션이 “켜져 있으면” DNAT 트래픽이 차단될 수 있다.

    📌 ICMP Retrieval 이란?

    Alibaba Cloud Internet NAT Gateway에서 제공하는 특별한 기능으로,

    ICMP(Echo Request/Reply) 트래픽을 NAT Gateway가 역방향으로 되찾아(retrieve) 전달하도록 강제하는 옵션

    이다.

    일반적인 NAT는 TCP/UDP 위주의 state tracking을 하지만,
    ICMP는 별도의 처리가 필요하다.

    • ping 요청 (Echo Request)
    • ping 응답 (Echo Reply)

    이 두 개를 NAT 테이블에서 올바르게 매칭해야만 왕복이 성립된다.

    그래서 ICMP Retrieval은 내부 → 외부 방향의 ping(SNAT 기반)에서
    ICMP 패킷의 state tracking을 보다 안정적으로 처리하기 위한 기능이다.

    이 옵션이 DNAT 규칙(inbound 트래픽)과 충돌을 일으킨다는 점.

    📌 ICMP Retrieval을 켜면 DNAT가 안되는 이유

    Alibaba Cloud 공식 문서에서도 다음과 같이 설명한다.

    ICMP Retrieval은 SNAT(ICMP outbound) 전용 기능이며,
    DNAT inbound 트래픽과 NAT Translation entry를 공유한다.
    이때 충돌이 발생하면 DNAT 트래픽이 NAT GW에서 Drop된다.

    즉, 흐름이 이렇게 꼬인다:

    PC → EIP → NAT Gateway
    (여기서 ICMP Retrieval이 state를 먼저 가로챔)
    → DNAT 룰 적용 전 Drop
    → ECS까지 도달하지 못함

    📌 결론 정리

    ICMP Retrieval = SNAT 기반 ICMP 보조 기능
    ✔ DNAT inbound 트래픽과 충돌 가능성 있음
    ✔ 켜져 있으면 DNAT 기반 SSH/HTTP까지 실패할 수 있음
    끄면 DNAT가 즉시 정상 동작함 (정상적인 현상)
    ✔ Alibaba Cloud NAT Gateway의 설계 구조상 발생하는 특성임

  • Alibaba Cloud | 서로 다른 리전 VPN Gateway(IPsec-VPN)로 연결 가이드

    Alibaba Cloud | 서로 다른 리전 VPN Gateway(IPsec-VPN)로 연결 가이드

    구성

    Korea(Seoul) 리전

    VPC: 192.168.0.0/16

    Subnet-01(Zone A): 192.168.0.0/24

    Subnet-02(Zone B): 192.168.1.0/24

    ECS(Zone A): 1개

    VPN Gateway: 1개

    Singapore 리전

    VPC: 172.31.0.0/16

    Subnet-01(Zone A): 172.31.1.0/24

    Subnet-02(Zone B): 172.31.2.0/24

    ECS(Zone B): 1개

    VPN Gateway: 1개

    목표

    1. 한국 리전 ↔ 싱가포르 리전
    2. 각 리전의 VPN Gateway를 이용하여 IPSec Site-to-Site VPN 연결
    3. Dual Tunnel(Primary/Secondary) 구성

    각 리전에서 VPN GW 생성

    VPN GW 생성 시 필요사항

    1. VPN-GW Name
    2. Resource Group (선택)
    3. Gateway Type : Standard
    4. Network Type : Public
    5. Tunnels : Dual-tunnel
    6. VPC
    7. Subnet01
    8. Subnet02(서브넷 01, 02는 서로 다른 AZ로 구성해야 함.)
    9. Maximum Bandwidth
    10. Traffic
    11. IPsec-VPN : Enable
    12. SSL-VPN : Disable, Enable
    13. Duration : By Hour

    이렇게 생성 후, 듀얼 터널이기 때문에 VPN-GW IPSec Address는 2개가 할당된다.

    위와 마찬가지로, VPN-GW를 연결하려는 다른 리전에도 똑같이 생성해야 함


    각 리전에서 Custom Gateway 생성

    생성 시 필요사항

    1. Customer Gateway – Name
    2. IP Address(연결하려는 리전의 VPN GW IP) 예를 들어, 한국리전에서 Customer Gateway를 만든다면, 싱가포르 리전 VPN-GW IP
    3. ASN(Autonomous System Number) – BGP를 안쓰면 공백으로 나둬도 된다.
    4. Resource Group(선택)

    ASN(Autonomous System Number)란?

    “인터넷에서 하나의 큰 네트워크 그룹을 구분하기 위한 번호”

    인터넷은 수많은 네트워크가 연결되어 구성되고, 이 각각의 네트워크를 AS(Autonomous System, 자율시스템)이라고 부르고, 그 AS를 구분하기 위해 부여되는 번호가 ASN

    왜 ASN이 필요할까?

    “BGP 라우팅을 하기 위해서”

    위와 마찬가지로, Custom-GW를 연결하려는 다른 리전에도 똑같이 생성해야 함


    각 리전에서 IPsec Connections 생성

    각 리전에서 미리 만들었던 VPN gateway와 customer Gateway를 연결 해야 한다.

    IPsec-VPN 생성 시 필요 사항

    1. IPsec Connection Name
    2. Region
    3. Resource Group
    4. Bind VPN GW (IPsec Connection 생성 하려는 리전의 VPN GW)
    5. 라우팅 모드: 목적지 라우팅 모드, 보호된 데이터 흐름
    6. BGP 활성화
    7. 터널 1
      • customer GW
      • Pre-Shared Key
        • Encryption Conf
          • Version
          • Negotiation Mode
          • Encryption Algorithm
          • Authentication Algorithm
          • DH Group (Perfect Forward Secrecy)
          • SA Life Cycle (seconds)
          • LocalId(VPNGW IP)
          • RemoteId(Customer-GW IP)
        • IPsec Configurations
          • Encryption Algorithm
          • Authentication Algorithm
          • DH Group (Perfect Forward Secrecy)
          • SA Life Cycle (seconds)
        • DPD On/Off
          • IPsec VPN에서 상대방(피어)이 죽었는지 살아있는지 확인하는 기능
        • NAT Traversal On/Off
          • “NAT 환경에서도 IPsec VPN 터널이 문제없이 동작하도록 만들어주는 기술”
    8. 터널 2
      • 터널 1과 동일

    다른 리전에도 똑같이 IPsec Connections 생성


    Gateway Route 설정, Subnet-RT 설정

    각 리전에서 VPN GW를 타고 나갈 수 있도록 Route를 잡아줘야 함.

    ECS -> Subnet-RT -> VPN GW(A Region) -> VPN GW – Route -> VPN GW(B Region)..


    마지막으로, 잘 구성되었다면 통신 테스트 해보면 된다.(Ping)


    BGP 활성화 세팅법

    1. Custom GW 생성할 때, ASN 값 넣고 생성
    2. IPsec Connection 생성할 때, BGP conf
      • Tunnel CIDR Block
        • X.X.X.X/30
      • local BGP IP Address
        • X.X.X.X /32

    BGP conf 값 넣을 때 각 리전에서 연결할 터널