VPC: 논리적으로 격리된 가상의 네트워크 영역
SubNet: 논리적으로 격리된 가상의 네트워크 영역을 부분적으로 나누어 놓은 하위 네트워크 영역
InternetGateWay: VPC와 Internet을 연결해주는 요소(관문)
RouteTable: 트래픽의 이동 경로를 규칙이 설정되어 있는 테이블








auto-assign public Ip : 자동으로 퍼블릭 IP 지정 여부

인바운드 설정 ( 몇번 포트로 접속요청 허용할것인지)






윈도우는 putty를 통해 pem키 변환하구 등등 복잡하다 하지만 맥은 간단하다

ami default user name





시큐리티 그룹은 트래픽의 상태와 정보를 저장하는 Stateful 특성을 가지고 있기때문에 한번 인바운드 룰의 검증을 통과하여 들어간 트래픽은 다시 시큐리티 그룹을 나올때 아웃바운드 룰에 관계 없이 통과가능(= 아웃바운드 룰이 없어도 통과 가능)
하지만 아웃바운드 룰이 없는상태에서 ec2안에서 외부와 통신을 시도하면 (ping google.com) 아웃바운드 룰이 없기때문에 통신이 안된다.
subnet 레벨에서 네트워크 트래픽을 제어하기 위한 보안요소

nacl 은 따로 설정하지 않아도 vpc - subnet을 만들면 자동으로 연결된다.

sg와 다르게 우선순위가 있다. 룰넘버가 낮을수록 우선순위가 높은것
sg는 허용하는것 빼고는 자동으로 거부지만 nacl에서는 allow와 deny로 설정 가능
sg와 다르게 nacl은 트래픽의 상태와 정보를 저장하지 않는 stateless 라는점 그래서 인바운드 룰을 통과해도 아웃바운드 룰을 따로 통과해야함!
고정적인 Public Ip 주소를 할당해주는 서비스

Disassociation ,association으로 자유롭게 ip를 다른 인스턴스에 결 할 수 있다.
네트워크 연결을 제어하고 구성하는 가상의 인터페이스
인스턴스가 만들어질때 자동으로 만들어 진다.




예전(기본으로 생성되는)eni 에 붙어있다.


eip에서 떼고 다시 새롭게 붙여주자

이렇게 해야 새로운 http접속 방식이 적용된다.(eni+eip+sg)
-> eni를 다른 인스턴스에 연결하면 동일한 ip지만 다른 인스턴스에서도 사용 가능하다
-> public ip를 포함한 인스턴스의 네트워크 연결 정보는 인스턴스 자체에 설정되는 것이 아니라 네트워크 인터페이스에 설정이 되고 네트워크 인터페이스의 연결 정보를 통해 인스턴스와 통신을 할 수 있다.

















경로기반 alb 특정 라우팅 완성
결과를 보면 특정 조건 a1 경로로오면(condition) 특정 tg 타겟 그룹으로 트래픽을 보낸다. 위에서 타겟그룹 생성하고 특정 인스턴스에 걸어뒀기 때문에 alb에 특정조건에 따라 특정 인스턴스에 트래픽이 간다.


alb에서 나온 쿠키를 기반으로 세션을 고정시킬지 아니면 서버에서 제공하는 어플리케이션에서 나온 쿠키를 기반으로 세션을 고정시킬지(일반적으로 첫번째꺼 사용)
밑에 옵션을 얼마나 고정 시킬지
둘다 private subnet에 있는 인스턴스를 외부와 통신할 수 있게 해준다
인스턴스는 sg 등등 해줘야 하는것도 많고 리소스가 많이든다. 하지만 트래픽이 크지 않으면 비용이 저렴함
게이트웨이는 이런 번거로운 작업을 aws에서 해주지만 비용이 크다.


예전에 만들었던 public 라우터 테이블은 igw와 연동되 외부와 통신가능
하지만 private으로 만든 라우터 테이블은 외부와 통신이 불가능

public 인스턴스에서 -> private 인스턴스에 접속하기위해 public 인스턴스에 pem키를 만들어주고 그걸 이용해 private에 접속해준다
이때 public 인스턴스는 private에 들어가기 위한 중계서버 역활을 하는데 이걸 BastionHost라고 부른다


NAT gateway 생성시 서브넷은 외부와 통신 가능한 서브넷이여야 함
Elastic IP allocation ID : NAT gateway에 ip할당



외부통신 가능
프라이빗 서브넷의 라우트 테이블 경로에 따라서 트래픽이 NAT 게이트웨이로 보내지고 이 트래픽은 다시 퍼블릭 서브넷의 라우터 테이블 경로에 따라서 인터넷 게이트웨이를 통해 웹으로 나가게되고 통신이 가능해진것
- VPC EndPoint: VPC와 AWS의 서비스를 외부 인터넷을 통하지 않고 연결해주는 서비스
1.Gateway EndPoint: 특정 IP대역을 Route table을 참조하여 AWS 서비스와 연결 (s3 , DynamonoDB)
2.Interface Endpoint: ENI의 네트워크 연결 정보를 통해 AWS 서비스와 연결(API Gateway, SNS )
- AWS CloudFormation: AWS 인프라를 코드로 생성 및 관리하는 서비스
- AWS CLI : 명령을 사용하여 AWS의 서비스와 통신할 수 있는 도구





-> 이상태에서 외부 s3와 통신을 하면 통신이 private라 통신이 불가함. endpoint 필요


service 영역에서는 tpye이 gateway인걸 선택
private 서브넷의 인스턴스와 s3를 연결할꺼니까 private subnet 선택



->즉, private subnet에서 서울 리전의 S3 IP대역(destination)으로 향하는 트래픽은 s3 엔드포인트(target)를 통해 이동하라는 뜻



private ec2에서 -> cloudFormation에 접근 가능하도록 설정
private subnet을 포함한 엔드포인트 생성













public ec2 , private ec2를 만들어준다 (public 는 다 디폴트값만 설정, 사진은 private ec2)
private ec2에서는 VPC Peering + ping 으로 연결테스트를 하기위해 ICMP(Internet Controll Messager protocol)를 설정 해준다


vpc -> vpc peering
vpcID는 peering 요청을 보내는쪽 ( 위 예제에서는 01 ->02)





인스턴스에서 출발한 트래픽이 peering 을 통해 반대편으로 요청이 가도록 router table을 수정해 준다.
private-subnet-rt-01 -> 02로 라우팅


-> ping 테스트를 하려면 icmp 설정 + sg가 필요함
TransitGateWay : 복수의 VPC 사이에 트래픽을 주고 받을 수 있도록 해주는 네트워크 서비스
vpc 01, 02, 03 ... 다 peering으로 연결되 있으면 너무 많은 peering connection이 필요함


(두번째 사진 인바운드 롤 잘못해서 수정함 현재 vpc 03 인스턴스 sg)
public subnet에 Ec2하나 , private subnet에 ec2 하나를 넣어준다
서로 다른 vpc(01,02) 에서 ping 테스트를 위해 icmp 설정을 해준다.


같은 방법으로 각각 vpc 01과 vpc 02 private instance에 icmp 를 설정함(서로 핑 통신이 되야하니까)
현재 설정 상태로는 peering 이 되있지않아 서로간의 통신이 불가능함

transitGateway와 vpc or vpn 등과 같은 다른 네트워크 리소스 사이의 연결을 정의하기 위해서 사용되는 요소
여러 vpc가 하나의 transitGateway에 연결을 하면 각각 vpc에서 transitGateway attachment를 생성해서 연결해준다.








TransitGateway 라우트 테이블에 associate 된 TransitGateway attachment 에 대한 스태틱 라우트 vpc01 vpc02 vpc03 에 대한 스태틱 라우트를 만들어준다.
스태틱 라우트 : 해당 crdi블록 즉 특정 ip대역으로 향하는 트래픽을 특정 attachment로 보내도록 지시하는 것을 의미



여기서 끝이 아니라, 인스턴스가 위치한 서브넷의 라우팅 테이블에도 다른 vpc 네트워크로 이동할 떄 관련 경로가 설정 되 있어야 한다.
여기까지 설정 해주면 private Subnet에 있는 각각 인스턴스들이 TransitGateway 를 통해 서로 통신이 가능하다



private 인스턴스 ip/32 : 여기서 32가 붙으면 이 ip 대역의 호스트가 1개이기 때문에 결국 cidi블록은 vpc 02 ec2 의 주소가 된다고 보면된다.(현재 vpc 02 차단상태임)
attachment는 vpc 02
해당 vpc로의 통신은 제한하지만 private 인스턴스 통신만 허용하도록 설정
Customer GateWay : VPN 연결에 사용되는 요소이며, Customer 네트워크의 Gateway 역활을 수행
Virtual Private Gate way : VPN 연결에 사용되는 요소이며, AWS 네트워크의 Gateway 역활을 수행
VPN Connection : AWS와 이보 네트워크 간의 VPN 연결을 구성 및 설정해주는 요소






서울리전 쪽에서 생성
static iP 커스터머 사이드의 ip를 입력하면 된다. 지금은 도쿄리전의 VPC
VPN을 통해 통신을 허용할 ip, Local은 커스터머 사이드, Remote는 AWS사이드의 ip를 적어준다.






left/ leftId = 커스터머 게이트웨이 정보(도쿄리전 인스턴스 public ip)
right/rightId = 터널에 할당된 IP 주소
leftsubnet은 커스터머사이드 즉, 도쿄리전 vpc
rightsubnet은 AWS 사이드 즉, 서울리전 vpc

overlapip=yes
기본적으로 커넥션은 두 개의 터널이 있는데 한 개의 터널에 우선적으로 커스터머 게이트웨이의 연결이 구성된다. 한 개 터널에 커스터머 게이트웨이가 연결이 되면 일단 해당 커스터머 게이트웨이가 사용중이기 때문에 다른 터널의 연결 요청에는 응답을 하지 않는다. 이렇게 되면 나머지 설정을 완료하더라도 두개의 터널중 한개만 활성화가 됨. 그래서 다중 터널 구성을 해서 같은 커스터머 게이트웨이의 ip 주소를 사용할 수 있도록 설정 해주면 두개 터널이 모두 활성화가 됨


터널에 대한 설정이 다끝나고 IPsec터널에서 인증을 위한 키값 정보를 설정해 준다.(터널1, 터널2)
ipsec설정 까지 끝났으면 -> service ipsec start / chkconfig ipsec on / 명령어를 순서대로 입력 해준다.

서울리전 라우트테이블을 도쿄리전의 vpc와 통신할수 있도록 수정해 준다.
여기까지 설정하면 site to site vpn으로 통신이 가능하다