VPC용 SNAT 게이트웨이를 만드는 단계

소개



Alibaba Cloud ECS를 구입할 때 대역폭을 1Mbps 이상으로 설정하면 ElasticIP(글로벌 IP)가 자동으로 부여됩니다. 이 IP를 통해 서버에 액세스하고 조작할 수 있어 편리합니다. 한편, 역할에 의해 외부로부터의 액세스가 허가하지 않지만, 외부에 액세스 하고 싶은 경우가 있습니다. 예를 들어 Server Load Balancer 아래의 ECS 서버의 경우 외부에 액세스하고 패키지를 업데이트하고 싶지만 보안 담보를 위해 외부에서 직접 ECS 서버에 대한 액세스를 거부하고 싶습니다. 이 경우 ECS 서버를 게이트웨이로 설정하면 됩니다.

이 기사에서는 제목대로 SNAT 게이트웨이 구성 절차를 작성합니다.

설정 구성





설정하려는 구성은 위의 그림입니다. ECS1 인스턴스는 탄력적 IP를 가지며 IP를 통해 인터넷에 액세스할 수 있습니다. ECS2 인스턴스는 글로벌 IP를 가지지 않고 인터넷에 나가고 싶을 때는 ECS1을 거쳐야 합니다. ECS2에서 포장은 SNAT된 후에 인터넷을에서. ECS1과 ECS2는 동일한 VPC 네트워크에 속합니다.

설정 절차



전제 조건
  • 운영 OS: CentOS 7
  • 동일한 VPC 네트워크에 속한 서버
  • 루트 권한이있는

  • ECS2에서 외부로 액세스할 수 없는지 확인


    # google ping してみる
    $ ping google.com
    PING google.com (172.217.25.110) 56(84) bytes of data.
    
    # 疎通が不可能なことを確認
    

    ECS1 설정



    이 예에서는 ECS1의 개인 IP가 10.2.219.106/16입니다.
    # ECSのプライベートIP / インタフェースを確認
    $ ip addr
    1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN 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
    2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
        link/ether 00:16:3e:00:0a:ef brd ff:ff:ff:ff:ff:ff
        inet 10.2.219.106/16 brd 10.2.255.255 scope global eth0
           valid_lft forever preferred_lft forever
    $
    
    
    # IP Forwardingの設定
    $ sysctl net.ipv4.ip_forward
    net.ipv4.ip_forward = 0
    $ vim /etc/sysctl.d/10-ipv4forward.conf
    net.ipv4.ip_forward = 1
    # :wq
    $ sysctl -p /etc/sysctl.d/10-ipv4forward.conf
    $ sysctl net.ipv4.ip_forward
    net.ipv4.ip_forward = 1
    $
    
    # Firewall 起動
    $ systemctl start firewalld
    $ systemctl status firewalld
    ● firewalld.service - firewalld - dynamic firewall daemon
       Loaded: loaded (/usr/lib/systemd/system/firewalld.service; disabled; vendor preset: enabled)
       Active: active (running) since Mon 2017-05-15 10:46:39 CST; 5h 56min ago
         Docs: man:firewalld(1)
     Main PID: 27068 (firewalld)
       CGroup: /system.slice/firewalld.service
               └─27068 /usr/bin/python -Es /usr/sbin/firewalld --nofork --nopid
    ...
    $
    
    # Firewalld NAT設定
    $ firewall-cmd --get-active-zones # アクティブゾーンなし
    $ firewall-cmd --set-default-zone external
    $ firewall-cmd --zone=external --add-interfce=eth0 --permanent
    $ firewall-cmd --permanent --direct --passthrough ipv4 -t nat -I POSTROUTING -o eth0 -j MASQUERADE -s 10.2.0.0/16
    $
    

    여기서 10.2.0.0/16는 VPC 네트워크의 개인 IP 범위입니다.

    VPC 설정



    ① 2 인스턴스가 속한 VPC 설정 화면으로 이동



    ② VRouter 설정 화면으로 이동하여 루트 엔트리 추가



    【루트 엔트리 추가】 버튼을 누르고 다음 화면과 같이 입력합니다.
  • ① 외부 주소. 0.0.0.0/0는 외부의 모든 것을 의미합니다
  • ② ECS1 인스턴스 ID



  • 【OK】를 누릅니다.



    새 루트 항목이 추가되는지 확인합니다.



    ECS2에서 연결이 가능했는지 확인


    # googleへpingできるようになった
    $ ping google.com
    PING google.com (216.58.200.174) 56(84) bytes of data.
    64 bytes from nrt12s11-in-f174.1e100.net (216.58.200.174): icmp_seq=1 ttl=54 time=1.81 ms
    64 bytes from nrt12s11-in-f174.1e100.net (216.58.200.174): icmp_seq=2 ttl=54 time=2.27 ms
    ^C
    
    # tracepathでECS1のプライベートIPが表示される
    $ tracepath google.com
     1?: [LOCALHOST]                                         pmtu 1500
     1:  10.2.219.106                                          0.176ms
     1:  10.2.219.106                                          0.142ms
     2:  no reply
     3:  10.106.205.9                                          5.843ms asymm  2
     4:  no reply
    

    위의 10.2.219.106는 ECS1의 IP 주소이고 10.106.205.9는 업스트림 라우터의 IP입니다.

    요약



    VPC의 SNAT 게이트웨이를 설정하는 방법에 대해 썼습니다. 이 방법은 ECS1이라는 발판 서버를 구축하여 탄력적 IP가 필요 없어도 외부에 액세스할 수 있어 보안이 강화됩니다.

    참고문헌


  • 보안 개요 > 방화벽 사용
  • Alibaba 클라우드 공식 문서
  • 좋은 웹페이지 즐겨찾기