해결된 질문
작성
·
48
1
안녕하세요. 좋은 강의 잘 듣고 있습니다.
강의를 들으며 실습을 하다가 궁금한 점이 생겨 질문드립니다.
크게 두 가지 질문이 있습니다 ㅜㅜ
첫 번째로, public subnet에 NAT 인스턴스를 만들었는데, 역할이 잘 이해가 가지 않아 질문드립니다.
제가 이해한 바로는
관리자가 서버에 직접 접근할 때 bastion host를 통해 인스턴스에 접근할 수 있다
클라이언트로부터의 요청은 alb를 통해 인스턴스로 요청된다
이렇게 이해를 했습니다. 생성한 NAT는 언제 사용되는건지 잘 이해가 가지 않습니다..
두 번째로, IGW를 통해 요청이 들어오면 IGW가 NAT 역할을 해준다고 검색을 해서 찾았는데.. 그렇게 되면 강의에서 생성한 NAT의 역할이 잘 이해가 가지 않습니다 ㅜㅜ
강의 항상 잘 듣고 있습니다. 감사합니다 :)
답변 2
2
안녕하세요.
일단 질문을 주셔서 감사합니다. 😀
첫번째 질문부터 답변을 드리자면,
NAT 인스턴스 즉 NAT 게이트웨이의 역할은 프라이빗 서브넷에 존재하는 리소스가 외부로 나갈때 필요합니다. 즉 프라이빗 서브넷에 존재하는 리소스의 아웃바운드 처리를 위해 NAT 인스턴스나 NAT 게이트웨이가 사용 됩니다. 😀
두번째 질문의 답변은 아래와 같습니다.
IGW가 NAT역할을 해준다는것은 조금 오해가 있으신거 같습니다. IGW는 퍼블릭 서브넷과 연결된 인터넷 게이트웨이를 말하며, 이는 즉 퍼블릭 서브넷은 IGW를 통해서 인터넷과 다이렉트로 통신을 하기 때문에 NAT 게이트웨이 및 NAT 인스턴스가 필요 없는 부분 입니다. 😀
두 개의 질문 모두 서브넷과 관련되어 보시면 해결이 될 문제라고 생각되며 퍼블릭 서브넷과 프라이빗 서브넷을 좀 더 이해하시면 완벽히 이해되시리라 생각 됩니다. 😀
추가로 이해가 안되시거나, 좀 더 설명이 필요한 부분이 있으시면 언제든지 문의 주세요. 감사합니다. 😀
강의와 직접적인 관련은 없는 내용인데 혹시 ec2가 생성되거나 auto scaling될 때, bastion hsot로 생성되는 ec2의 private ip를 넘길 수 있는 방법이 있을까요..? ansible을 이용해 생성된 서버들을 관리하고 싶은데 ip를 자동으로 받을 수 있으면 좋을 것 같다는 생각이 들어.. 혹시 괜찮은 방법이 있다면 의견 여쭙고 싶습니다... :)
안녕하세요.
질문 주셔서 감사합니다. 😀
일단 첫번째 질문인 bastion host와 NAT 인스턴스의 서브넷을 다르게 둔 이유는 아래와 같습니다.
각각의 서브넷은 서로다른 가용영역 즉 AZ에 물려 있습니다. 그래서 예를들면 AWS 같은경우는 4개의 가용영역이 존재하며, 제가 구성한 서브넷은 A AZ와 C AZ를 사용하도록 구성을 했을 겁니다. 이렇게 가용영역별 서브넷을 별도로 두는 이유는 궁극적으로는 리소스의 고가용성, 보안강화, 네트워크 성능향상, 비용절감 등의 이유로 AZ를 분리하여 구성을 합니다. 하지만 강의에서 bastion host와 NAT 인스턴스를 각각의 서브넷에 배치한 이유는 위에 언급한 고가용성 등의 이유가 아닌 리소스의 밸런스를 맞추기 위한 배치였다고 이해해 주시면 될거 같습니다. 😅 bastion host와 NAT 인스턴스를 1개의 AZ 즉 A AZ에 함께 배치를 해도 큰 문제는 없습니다. ㅎㅎ 하지만 1개의 AZ에 2개의 리소스를 배치 하는것보단 AZ 별로 각각 나눠서 배치하는게 밸런스 측면에서 좋다고 느껴져서 그렇게 배치를 하였습니다. 😀
혹시 추가로 또 질문 있으시면 질문 주십시오. 😀
두번째 질문인 "ec2가 생성되거나 auto scaling될 때, bastion hsot로 생성되는 ec2의 private ip를 넘길 수 있는 방법이 있을까요..?" 에 대한 답변을 드리면 아래와 같습니다.
일단 여러가지 방법이 있을거 같습니다.ㅎㅎ
음 여기서는 가장 쉬운 방법을 안내 드리겠습니다.
User Data 스크립트 사용
EC2 인스턴스가 시작될 때 실행되는 User Data 스크립트를 사용하여 Private IP를 Bastion Host로 전송할 수 있습니다.
예를 들어, User Data 스크립트에서 curl 명령어를 사용하여 Bastion Host로 HTTP 요청을 보내 Private IP를 전달할 수 있습니다.
#!/bin/bash
PRIVATE_IP=$(curl http://169.254.169.254/latest/meta-data/local-ipv4)
curl -X POST -d "private_ip=$PRIVATE_IP" http://bastion-host-endpoint
위의 방법이 가장 쉬운 방법일거 같습니다. 😀
참고로 오토스케일링 그룹을 생성하거나 업데이트할 때 Launch Configuration 또는 Launch Template에 유저 데이터를 포함할 수 있습니다. 😀
혹시 다른 문의사항이나 구성시에 질문이 있으시면 언제든지 질문 주십시오. 😀
감사합니다. 😀
1
안녕하세요, 인프런 AI 인턴입니다. 구태형님.
NAT Gateway에 대한 역할과 IGW와의 차이에 대해 질문해 주셨는데요, 이 부분은 네트워크 아키텍처에서 중요한 부분입니다.
첫 번째 질문에 대한 설명입니다:
NAT Gateway는 주로 프라이빗 서브넷에 있는 리소스가 인터넷과 통신할 수 있도록 해주는 역할을 합니다. 이 프라이빗 리소스가 직접적으로 인터넷과 연결될 수 없는 환경에서, NAT Gateway 또는 NAT 인스턴스를 활용하여 외부로의 출발 트래픽이 가능하도록 해주는 것이죠. 주로 아웃바운드 인터넷 접근을 위한 용도입니다.
두 번째 질문에 대한 설명입니다:
IGW(Internet Gateway)는 퍼블릭 서브넷에 있는 리소스가 인터넷과 양방향 통신을 하는 데 사용합니다. IGW와 NAT의 차이점은 IGW는 퍼블릭 서브넷 리소스의 인바운드 및 아웃바운드에 모두 사용되지만, NAT는 프라이빗 서브넷 리소스의 아웃바운드 트래픽에 주로 사용됩니다. IGW는 NAT의 역할을 대체하지 않습니다. NAT는 프라이빗 리소스가 외부로 나가는 경우에 필요하며, IGW는 퍼블릭 리소스를 위한 것입니다.
이를 통해 AWS 네트워크 구조에서 NAT의 역할에 대한 명확한 이해가 가능하실 것이라고 생각합니다.
관련 강의 및 질문에 대한 답변이 추가적으로 궁금하시다면 아래 링크를 참조하세요:
- AWS 인프라에서 NAT 게이트웨이 설정 및 활용
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.
직접 설정하면서 하다보니까 궁금한 점이 모두 해결이 되었습니다! 답변 감사합니다 🙂
추가적으로 bastion host와 NAT의 subnet이 다르게 설정되어있던데 두 subnet을 분리한 이유가 궁금합니다.
이번에 배포를 하면서 어떻게 하면 쉽게 할 수 있을지 공부하다가 테라폼을 공부하게 되었는데 강사님 강의 덕분에 시간을 많이 아낄 수 있던 것 같습니다. 항상 감사합니다^^