아래 내용은 개인적으로 정리한 내용이라 틀릴 수 있습니다.
<1> 현황
S3를 사용하고 있다.
S3처럼 Public 하게 연결된 서비스는 접속이 가능하다.
<2> 문제점
내부 통신을 할 수 있는 경우는 내부 통신을 하는 것이 원칙이다.
VPC Endpoint 서비스를 이용해 Private Subnet EC2에서 S3로 접속이 되도록 한다.
<3> 개선 방향
AWS내부에서 트래픽을 주고받기 쉽도록 설정하는 것이다.
S3 EndPoint는 직접 접속이 필요한 서브넷을 모두 추가하면 된다.
1) WEB Subnet에 대해 EndPoint 추가한다.
리전 내 S3로 가는 것은 EndPoint로 가고 , 다른 리전이나 서비스로 가는 것은 IGW 통해 나간다.
2) Private Subnet에 대한 EndPoint 추가한다.
리전 내 S3로 가는 것은 EndPoint로 가고, 다른 리전이나 서비스로 가는 것은 NATGW 통해 나간다.
3) EndPoint가 적용되면 S3까지 Ping 은 되나 Trace는 내부 경로가 안된다.(안 보인다)
<4> 구성도
<5> 설정전 테스트
1. 구성 요약
WEB은 IGW 통해 인터넷 되는 구성.
WAS는 WEB Zone에 NAT를 통해 인터넷 되는 구성.
DB는 인터넷이 안 되는 구성.
2. Ping Test
1) WEB서버는 IGW를 통해 인터넷(1.1.1.1)과 S3와 Ping 된다.
2) WAS 서버는 NAT를 통해 인터넷(1.1.1.1)과 S3와 Ping 된다.
3) DB서버는 외부와 인터넷(1.1.1.1)이 안된다.
1) WEB서버
WEB서버는 IGW를 통해 인터넷(1.1.1.1)과 S3와 Ping 된다.
[root@ip-192-168-138-100 ~]# ping 1.1.1.1(인터넷)
PING 1.1.1.1 (1.1.1.1) 56(84) bytes of data.
64 bytes from 1.1.1.1: icmp_seq=1 ttl=45 time=2.82
[root@ip-192-168-138-100 ~]# ping ep.serverchk.com (S3)
PING ep.serverchk.com (52.219.4.98) 56(84) bytes of data.
64 bytes from s3-website-ap-northeast-1.amazonaws.com (52.219.4.98): icm
p
[root@ip-192-168-138-100 ~]# traceroute 1.1.1.1(인터넷)
traceroute to 1.1.1.1 (1.1.1.1), 30 hops max, 60 byte packets
1 ec2-175-41-192-214.ap-northeast-1.compute.amazonaws.com (175.41.192.214) 17.606 ms ec2-175-41-192-220.ap-northeast-1.compute.amazonaws.com (175.41.192.220) 19.203 ms ec2-175-41-192-216.ap-northeast-1.compute.amazonaws.com (175.41.192.216) 14.852 ms
2 100.66.8.86 (100.66.8.86) 12.965 ms 100.66.8.12 (100.66.8.12) 16.468 ms 100.66.8.36 (100.66.8.36) 19.763 ms
3 100.66.10.34 (100.66.10.34) 14.030 ms 100.66.10.204 (100.66.10.204) 13.354 ms 100.66.10.78 (100.66.10.78) 12.944 ms
[root@ip-192-168-138-100 ~]# traceroute ep.serverchk.com(S3)
traceroute to ep.serverchk.com (52.219.68.184), 30 hops max, 60 byte packets
1 ec2-175-41-192-148.ap-northeast-1.compute.amazonaws.com (175.41.192.148) 21.920 ms ec2-175-41-192-154.ap-northeast-1.compute.amazonaws.com (175.41.192.154) 15.332 ms ec2-175-41-192-152.ap-northeast-1.compute.amazonaws.com (175.41.192.152) 21.957 ms
2 100.64.3.200 (100.64.3.200) 14.280 ms 100.64.1.76 (100.64.1.76) 17.132 ms 100.64.2.78 (100.64.2.78) 18.564 ms
2) WAS 서버
WAS 서버는 NAT를 통해 인터넷(1.1.1.1)과 S3와 Ping 된다.
[root@ip-192-168-134-144 ~]# traceroute 1.1.1.1 (인터넷)
traceroute to 1.1.1.1 (1.1.1.1), 30 hops max, 60 byte packets
1 ip-192-168-139-25.ap-northeast-1.compute.internal (192.168.139.25) 0.462 ms 0.433 ms 0.436 ms
[root@ip-192-168-134-144 ~]# traceroute ep.serverchk.com (S3)
traceroute to ep.serverchk.com (52.219.0.90), 30 hops max, 60 byte packets
1 ip-192-168-139-25.ap-northeast-1.compute.internal (192.168.139.25) 0.270 ms 0.256 ms 0.248 ms
2 ec2-175-41-192-218.ap-northeast-1.compute.amazonaws.com (175.41.192.218) 14.571 ms ec2-175-41-192-220.ap-northeast-1.compute.amazonaws.com (175.41.192.220) 21.687 ms 21.700 ms
<6> 설정 후 테스트
게이트웨이 엔드포인트(무료) - Amazon S3에 대한 엔드포인트 , Amazon DynamoDB에 대한 엔드포인트
WEB / WAS / DB Zone에 S3 EndPoint를 설정한다.
1. EndPoint 적용되면
1) 서브넷에 'EndPoint 라우팅'이 생기는 게 3분 정도 걸린다.
2) S3 EndPoint로 ping은 된다.
3) S3 EndPoint로 Trace는 안된다. (내부 경로라 숨겨진다.)
2. EndPoint를 각 서브넷에 적용 시
1) WEB 서브넷 EndPoint 적용 시 WEB과 WAS 모두 통해 S3와 Ping 된다.
(WAS는 NAT 통해 WEB에서 EndPing 적용되어 되는 것임)
2) WAS 서브넷 EndPoint 적용 시 WAS 서버 서브넷만 S3와 Ping 된다.
3) DB 서브넷은 EndPoint 적용 시 EndPoint를 통해 S3와 Ping 된다.
3. 각 서브넷에 적용 시
1) WEB서브넷에만 S3 EndPoint를 적용 시
WEB과 WAS 서버가 S3와 Ping 된다.
WEB서버는 EndPoint 적용되어 되어 되는 것이고, WAS 서버는 NAT 통해 WEB에서 EndPoint 적용된 것이다.
WEB서버, WAS 서버 모두 S3로 Ping 된다.
WEB서버에서 S3로 Ping 된다. (EndPoint 적용됨)
WEB서버는 EndPoint 적용되어 Trace는 1홉부터 안된다.
[root@ip-10-0-1-178 ~]# traceroute ep3.serverchk.com
traceroute to ep3.serverchk.com (52.219.36.130), 30 hops max, 60 byte packets
1 * * *
2 * * *
3 * * *
WAS 서버는 NAT 통해 Ping 된다.
WAS에서 Trace는 1홉만 된다.
( WAS는 WEB에 NAT까지 갔다가 EndPoint 통해 S3로 간다)
[root@ip-10-0-1-178 ~]# traceroute ep3.serverchk.com
traceroute to ep3.serverchk.com (52.219.32.122), 30 hops max, 60 byte packets
1 ip-10-0-0-178.ap-southeast-1.compute.internal (10.0.0.178) 0.513 ms 0.475 ms 0.463 ms <-NAT IP
2 * * *
3 * * *
2) WEB과 WAS Subnet에 EndPoint적용 시
- WEB은 EndPoint 적용되어 S3로 Ping 된다. (Trace 안된다.)
[ec2-user@ip-10-0-0-107 ~]$ ping ep3.serverchk.com
PING ep3.serverchk.com (52.219.40.2) 56(84) bytes of data.
64 bytes from s3-website-ap-southeast-1.amazonaws.com (52.219.40.2): icmp_seq=1 ttl=58 time=0.488 ms
[ec2-user@ip-10-0-0-107 ~]$ traceroute ep3.serverchk.com
traceroute to ep3.serverchk.com (52.219.40.2), 30 hops max, 60 byte packets
1 * * *
2 * * *
- WAS에서는 EndPoint 적용되어 Ping 된다.(Trace 안된다.)
[root@ip-10-0-1-178 ~]# ping ep3.serverchk.com
PING ep3.serverchk.com (52.219.40.102) 56(84) bytes of data.
64 bytes from 52.219.40.102 (52.219.40.102): icmp_seq=1 ttl=58 time=0.445 ms
[root@ip-10-0-1-178 ~]# traceroute ep3.serverchk.com
traceroute to ep3.serverchk.com (52.219.32.145), 30 hops max, 60 byte packets
1 * * *
2 * * *
3 * * *
3) WAS서브넷에 S3 EndPoint를 적용 시
WAS 서버가 EndPoint를 통해 S3와 Ping 된다.
4) DB서브넷에 S3 EndPoint를 적용 시
DB만 EndPoint를 통해 S3와 Ping 된다.
DB가 S3에 접속할 필요가 있을 때만 적용한다.
결론
S3 EndPoint는 직접 접속이 필요한 서브넷을 모두 추가하면 된다.
<7> 설정 요약
1. S3 EndPoint는 Subnet에 S3로 가는 로컬 라우팅이 추가되는 것이다.
2. S3 EndPoint에서 Route tables 체크해 추가하면, 해당 Subnet에 S3로 가는 Route Table이 추가된다.
1) EndPoint 적용할 서브넷 체크
~5d는 WEB 서브넷.
was1, was2 서브넷.
~44는 DB 서브넷.
2) 각 서브넷에 자동으로 라이팅 테이블이 추가된다. (pl-xxxxxx )
설명: WAS 서브넷에 S3로 가는 라이팅 테이블이 추가되었다.
pl-61 a54008 - vpce-oc5 cea
주의 1. VPC 추가로 End Point 추가하는 경우에는
20여 초 Pending상태로 End Point 연결이 끊어지니 주의 바란다!!!
참고 https://docs.aws.amazon.com/ko_kr/vpc/latest/userguide/vpce-interface.html
감사합니다.