[네트워크] 포트 포워딩port forwarding 이란?
페이지 정보
작성자 Daisy 날짜24-11-13 14:27 조회2회 댓글0건본문
첫 포워딩 팀플 과제까지 끝내고 나서야 글 작성하는 나태한 인간11월 5일 11시 59분까지 제출해야하는 첫 개강 과제가 있었다.Spring 강의를 듣고 만들었던 웹 어플리케이션을 AWS EC2와 RDS를 활용하여 배포하여 링크를 제출해야 했다.이전에 Naver Cloud Platform에서 배포를 진행한 경험과 AWS에서 배포했다가 익숙치도 않고 어렵게 느껴져 의도치 않게 꽤나 거금을 결제하게 되었던, 허우적 거렸던 경험 외에는 AWS에서 배포를 성공한 제대로 된 적이 없었다.이번 TIL에서는 AWS 배포를 하면서 내가 새롭게 배운 점 + 겪었던 문제점 &어려웠던 점 + 해결 방안에 대해 작성해보려 포워딩 한다.???? AWS EC2 ? RDS ? 새롭게 배운 내용 정리과제의 정확한 주제가 AWS - EC2, RDS를 활용하여 배포하기"였는데, 그전에 내가 알아본 것들을 정리해보겠다.처음에 과제를 할 때 그냥 배포하는 거구나- 하고 넘어갔는데,정작 왜 쓰는건지 설명하라면 못할 것 같아 작성하는 내용이다.???? AWS는 왜 사용하는 걸까Amazon Web Services의 약자로 물리적인 서버나 데이터 센터가 없어도 서버, 데이터베이스, 스토리지 등등 다양한 IT 자원을 클라우드 인프라와 서비스를 통해 이용할 수 있다.???? EC2는 무엇일까AWS의 가상 서버 서비스이다. 웹 서버, 어플리케이션 서버 등의 서버 포워딩 역할을 해준다.원하는 운영체제를 설치할 수 있고 AMI(Amazon Machine Image)를 통해 커스터마이징이 가능하다.AWS EC2에서 직접 캡쳐를 해왔다.처음에 봤을 때 이 카테고리들이 왜 존재하는지, 애초에 EC2가 뭔지 모르고 무작정 따라만 하려니 더 복잡하게 느껴졌던 것 같다.여기서 인스턴스가 가상서버인데 그럼 EC2랑 뭐가 다른가,EC2는 서비스 자체를 의미하고, 인스턴스는 EC2에서 생성한 개별 가상 서버를 뜻한다.이번 과제에서 Ubuntu 22.04버전을 구매하였다.???? RDS란 무엇일까Amazon Relational Database Service로 관리형 관계형 데이터베이스이다.내가 직접 데이터베이스 서버를 설치 및 관리를 하지 않아도 운영이 가능하다.이번 과제에서 RDS를 구매하고 MySQL을 포워딩 세팅하였다.이후 Filezila를 이용하여 배포 파일을 업로드한 후 EC2에서 배포를 진행하였고외부에서 들어오는 요청(이게 인바운드 요청이라고 한다)에 대한 포트를 열어줘야 내 EC2 인스턴스에 접속이 가능하기 때문에 포트(문 역할)를 열어 줘야 한다.AWS에서 Security Group에서 열어 두는 것이 가능하고,각각에 대한 설명을 덧붙이자면8082 : 내 서비스는 8082 포트를 사용하기로 했다.22 : SSH(보안 셸) 접속을 위한 포트이다. SSH를 통해 EC2 인스턴스에 원격 접속이 가능하다 .(SSH는 원격 서버에 접속할 때 사용되는 보안 프로토콜이다)배포를 진행한 뒤, 주소 마지막에 :8082를 매번 붙여줘야했다.이 번호를 붙이지 않고도 포워딩 매번 자동 접속을 하기 위한 추가 작업을 하게 되었다.여기서 사용된 것이 포트포워딩(Port Forwarding)이다.???? 포트 포워딩이란 무엇일까이 작업을 해주기 전 나의 웹 서버는 포트 8082에서 실행되고 있었다.포트 포워딩을 설정해 포트 80으로 들어오는 요청을 포트 8082로 전달해줄 수 있다.이렇게 하면 나의 포트번호를 외부로 노출시키지 않을 수 있다.이렇게 작성하는 것이라고 한다.그런데 여기서 문제가 발생했다.이후 SSH 접속을 끊어도 서버가 계속 돌게 하는 작업까지 문제 없이 명령어를 실행했는데막상 포트번호를 떼고 접속을 시도하면 접속 거부가 뜨는 것이었다.???? 포트 80에서 들어오는 요청이 제대로 포워딩 redirect 되지 않는 문제 해결하기따로 캡쳐를 해놓지는 못해서 내게 발생한 에러가 정확하게 뭔지 찾아 제목에 달아봤다.마침 팀장 님께서 배포 진행이 잘되고 계시냐 여쭤봐주셔서 바로 문제점을 말씀드렸고다행히 먼저 마주쳤던 문제여서 해결하신 방법을 공유해주셨다.아주 친절한 대장일단 과제 제출이 급했기 때문에 알려주신대로 진행하고 제출했으나나중에 내가 브라우저 설정을 잘못 건드려서 설정이 날아갔고 다시 배포 A to Z를 진행하는 일이 발생했었다.그때 또 이 문제가 발생했고 알려주신 방법대로 다시 진행하며, 이게 어떤 원리로 해결 되는거지?라는 의문이 생겨이렇게 TIL로 남기게 되었다.???? redirect 문제 포워딩 해결 - nftables로 포트포워딩 설정하기팀장님께서 알려주신 해결 코드는 nftables라는 리눅스 방화벽 도구를 사용해 포트포워딩 설정하는 방식이었다.나는 Ubuntu 22.04 버전을 사용하고 있었는데,Ubuntu 22.04에서는 기본적으로 nftables가 iptables의 백엔드로 설정되어있다고 한다.=>iptables 명령어를 사용해도 실제로는 nftables가 규칙을 처리한다는 뜻이다.이렇게 되면 둘이 규칙이 혼합되면서 이런 예상치못한 일들이 발생하는 것이다.그래서 그냥 아예 nftables로 포트포워딩을 설정하여 일관된 방법을 유지해주는 것이다.진행과정은 아래와 같다.nftables 설정 파일 수정해주기.conf 파일은 nftables의 규칙을 설정해 저장한다. 재부팅해도 유지된다.2. 포트포워딩 설정 추가해주기포트포워딩 규칙을 정의해준다.TCP 프로토콜로 포트 80으로 들어오는 요청을 포트 포워딩 8082로 리다이렉트 하게한다.3. nftables 서비스 재시작하기새로 설정한 포트포워딩 규칙이 적용되도록 nftables를 재시작해준다.위의 방식대로 진행해주니 포트 80으로의 접속 문제가 해결이 되어 이후 SSH 접속을 끊어도 서버가 계속 돌아가는 부분도 함께 문제없이 잘 진행되었다.AWS를 알지 못하고 무턱대고 다른 블로그들을 보며 따라하다가 과금이 되었던 안좋은 기억.. 때문에AWS 사용을 꺼려했는데 이번 기회에 극복할 수 있어서 무척 기쁘고 뿌듯했다!그리고 팀원 분께 공유받은 해결 방안을 그저 복붙하고 끝내는 것이 아닌, 어떤 원리로 해결되는지에 대해 따로 공부를 해보는 것이 보충학습에 크게 도움이 되었다.
포워딩댓글목록
등록된 댓글이 없습니다.