vpc란 큰 네트워크에서 용도 별로 네트워크를 쪼개서 사용하기 위한 서브 네트워크이다.
간단히 설명하면 격리된 가상 데이터 센터라고 볼 수 있다. 보통 vpc를 ip로 구분해 나눈 후, 다중 AZ ( 가용영역 )에 걸쳐 서브넷을 구성합니다. 이것을 통하여 aws의 확장 가능한 인프라를 사용한다는 이점과 보안적인 이점, 네트워크를 제어할 수 있다는 장점이 있습니다.
VPC는 Amazon 콘솔에서 생성됩니다. 또한 하나의 VPC는 하나의 Region내에서만 생성이 가능하지만 두개 이상의 리전에 걸치는 것은 불가능합니다. 그렇지만 하나의 VPC는 여러개의 Amazon Availability Zone (이하 AZ) 에 걸쳐서 생성될 수 있습니다. 또한 가질 수 있는 IP 주소의 Range는 2^16 = 65535로 제한됩니다.
사이더는 ip 주소를 관리하는 체계이다.
만약에 10.0.0.0/16 이라고 사용하면 16은 prefix를 의미한다.
즉 10.0.0.0 을 2진수로 표현하면 00001010.00000000/.0000000.000000인데 10.0은 16자리니깐 10.0만 고정하고 뒤에 0.0은 변경할 수 있다는 것을 의미한다.
하나의 수에는 256까지 사용가능한데 이때 0.0 총 2개니깐 256 * 256개의 수만큼 private ip를 사용할 수 있다는 것을 의미한다.
서브넷이란 VPC를 나누는데 사용된다. VPC는 큰 네트워크를 쪼개서 사용하는 서브 네트워크라고 했는데 이때 VPC는 IP로 구분해 나눈 후, 다중 AZ(가용영역)에 걸쳐서 서브넷을 구성한다.
이때 서브넷은 public, private으로 분류한다.
vpc 한개에 internet gateway를 하나만 만들 수 있고 외부에서 public subnet에 접근할 수 있고 내부에서 외부롤 통신할 수 있는 통로이다.
인터넷을 사용하기 위해서는 public IP, Route Table이 설정이 되어있어야지 가능하다.
route table은 트래픽을 어디에 보내줄지 직접 설정하는 것이다. 들어오는 트래픽은 vpc가 알아서 인스턴스에 전달을 해주지만 처리가 되고 나서 나가야 되는 트래픽들은 인터넷으로 내보내야 하는지 내부에서 사용해야 되는지 구분할 . 수없어서 route table로 internet gateway로 가라고 말해주어야 한다.
2개의 public subnet을 하나의 public route table로 관리를 한다.
private subnet은 외부에서 접근할 수 없다. 이때 외부에서 인터넷을 사용하기 위해서 들어오는 트래픽은 차단하고 나가는 트래픽만 허용해 주기 때문에 private subnet은 외부에서 접근할 . 수없다.
라우팅 테이블에 들어가면 현재는 public이 생성이 되어져 있습니다. private subnet을 담당하는 table을 하나 만들어서 2개의 private subnet을 연결하고 라우팅에 nat, public subnet을 연결을 합니다.
alb에 접근하는 방법은 80, 22 포트를 허용합니다. 이때 22의 접근 아이피는 개인적인 ip를 허용하고 80포트는 모든 포트를 허용하게 만듭니다.
alb에 80과 22는 http, ssh를 적용을 합니다.
target group
을 하나 생성을 합니다. private subnet에 연결한 하나의 ec2를 생성을 합니다. 그렇게 되면 public ip가 없기 때문에 private subnet으로 접근이 가능합니다. 이것을 target group에 하나를 생성을 합니다.
방금 생성한 private subnet을 생성한 ec2에 80포트를 선택하고 등록합니다.
바스티온 인스턴스는 가장 쉬운 private subnet 인스턴스에 접속할 수 있는 방식이다. 더욱 높은 보안성을 만들기 위해서는 session manage
가 있습니다.
bastion instance
는 private subnet 인스턴스에 ssh를 통해 해당 인스턴스에 접속한 뒤 해당 인스턴스 내부에서 ssh를 통해 Private Subnet 내부의 인스턴스에 접속
본인은 ftp를 통해 Private Instance에 접속할 수 있는 키를 Bastion Server에 올려두었다.
이후 ssh -i idiot.pem ubuntu@[Private IP]
명령어를 통해 Bastion Server에서 Private Instance로 접속이 가능하다.
HTTP 프로토콜을 통해 ALB의 DNS에 접속한다.
80포트가 열린 ALB는 리스너를 통해 80포트로 접속했음을 알 수 있다.
8080포트가 열린 타겟그룹으로 해당 트래픽이 8080포트로 전달된다.
8080포트가 열린 Private Instance는 해당 트래픽을 전달받을 수 있다.
이를 통해 아파치 톰캣 위에 올려진 스프링부트 웹서버의 URL로 접속이 가능하다.