리눅스 - 포트 (port)

김민재·2021년 7월 21일
1

Gotcha Linux!

목록 보기
19/22

포트란 무엇인가?


ip주소 뒤에 생략할 수 있는 저 숫자가 포트이다.

ssh 중간에 다가 -p 22, port를 의미하는 옵션과 포트번호를 함께 입력해주면 정상적으로 작동되는데 이는 기본적으로 ssh 라고 하는 방식은 22번 포트를 쓰기에 가능하다.

모든 컴퓨터에는 포트 라고 하는 것이 있는데 포트를 구멍 같은 이미지로 생각해보자.
이 구멍은 0번 구멍 부터 6만 5천 개의 구멍이 있는데 22번 구멍 80번 구멍 역시 있다.

웹브라우저를 설치하고 ssh 서버를 설치하면 22번 포트에 연결 되도록 약속이 되어 있습니다
웹서버를 설치하게 되면 웹 서버는 80번 포트에 기본적으로 접속하기 로 약속이 되어있다

클라이언트 컴퓨터가 있고 통해서 서버 주소를 입력해서 엔터 치면 웹브라우저는 서버 컴퓨터로 가는데 서버 컴퓨터에 80번 포트를 찾아간다. 웹 서버는 80번 포트에서 대기하고 있도록
약속되어 있기 때문이죠

그럼 80번 포트에서 대기를 하고 있었던 웹서버가 접속이 들어왔다는 것을 알고 약속된 대로 동작한다 음에 그 결과를 웹브라우저 에게 돌려 준다.

마찬가지로 ssh 클라이언트가 있을 때 ssh 클라이언트는 22번 포트를 쓰도록 약속되어 있기 때문에 우리가 특별히 포트번호를 적지 않는 다면 그러면 22번에 접속하고 22번 에서 리슨하고 있던 ssh 서버가 그것을 받아서 처리한 다음에 그 결과를 ssh 클라이언트 에게 보내주는 겁니다

ssh 는 설치를 하면 기본적으로 22번 포트 웹서버는 80번 포트에 설치가 된다

그래서 이 네트워크의 세계에서 1024 개의 구멍 까지는 잘 알려진 포트 라고 해서 표준 처럼 사용하고 있는 여러가지 통신시스템, 웹 서버, ssh 이런 것들은 포트 값을 고정해서 접속할 때 포트 번호를 치치 않아도 접속 가능하도록 한 것이다

etc 에 ssh ssh 컴피그 라는 파일을 열어보면 이 파일에는 포트 22 라고 적혀있는데
여기서 포트를 수정하여 ssh 서버에 설정을 바꿀 수 있다.

포트포워딩 소개


가정에 인터넷을 사용해야 되는 기계가 한데 이상 있다라고 했을 때
통신사 영어로는 isp 인터넷 서비스를 프로바이더 제공하는 제공자 해당되는 회사들이 여러분의 집에 회선을 하나를 계약을 하고 여러대의 컴퓨터가 하나의 회선을 공유할 때 사용하는 기계 공유기 또는 라우터 라고 부르는 그런 장치를 사용한다.

그 케이블을 이렇게 꽂는 거죠 또는 노트북이나 스마트폰 은 일반적으로 안테나의 연결을 해서
우선으로 이렇게 접속을 합니다
그 다음에 각각의 컴퓨터들은 각각의 프라이빗 ip 를 부여 받게 되요

라우터 쪽에 붙어 있는 ip를 퍼블릭 ip 어드레스 각각의 기기에 있는 ip를 프라이빗
ip 어드레스 라고 부른다.

외부에 있는 사람들이 퍼블릭 ip를 알고 있으면 접근이 가능합니다
하지만 각각의 기기에 ip로 접근하고 싶어도 ip 로 들어갈 수 있는 방법이 없다. 왜냐면 사설 ip 외부에는 공개되지 않는 ip이기 때문이다.

여기 있는 이 기기 중 컴퓨터에 서버를 설치하고 컴퓨터에 설치되어 있는 서버에 외부에 있는 사용자가 접근할 수 있게 하는 방법이 바로 포트포워딩을 통해서 가능하다.

라우터도 네트워크 기능이 있고 라우터의 존재하는 포트와 컴퓨터에 존재하는 포트를 활용해서 사용자가 접속이 들어왔을 때 어떤 특정 포트로 접속이 들어오면 그 접속을 어떤 특정한 컴퓨터로 전달하는 것이 포트포워딩하는 기능이다

예를 들어서 라우터에 사용자가 접근할 때 9000 번 포트로 접근한다면 사용자는 ip주소:9000 엔터를 치면 사용자는 이 회선을 통해서 라우터의 도착을 하고 그때 라우터의 설정을 열어서 그 라우터의 이렇게 설정에 9000 번 포트는 192. 168.0.4에 해당되는 컴퓨터 중에 80번 포트로 보내는 설정을 한다.

그러면 컴퓨터에는 80번포트에 웹서버가 설치가 되어 있기 때문에 그 웹서버가 동작해서 그
신호를 받은 다음에 반대로 이렇게 라우터를 경유해서 요청한 사용자에게 돌아가면 사용자의 컴퓨터에 이 컴퓨터에 저장되어 있는 웹페이지가 해석되어 출력되게 된다.
이것이 바로 포트포워딩이다.

공유기는 회사마다 다르기 때문에이 환경 설정을 하는 방법은 다 다르지만 본질적인 것은 다 비슷할기에 이러한 기능이 필요하다면 자신의 그 공유기 회사의 환경 설정 관련된 사용설명서를 보고 따라하시면 된다.

이 공유기 의 환경설정을 열기 위해서는 공유기의 내장되어 있는 서버에 여러분이 접근해야한다. 공유기의 는 기본적으로 웹서버가 깔려 있습니다

여기에 있는 공유기에 접속하기 위해서는 이 공유기가 내부에서만 통용되고 외부에서는 통용되지 않는 ip를 가지고 있어야 된다.

그 공유기의 안 쪽에서만 통용되는 그러한 ip를 디폴트 게이트웨이라고 한다.
공유기는 바깥쪽으로 나가는 관문과 같은 역할을 하기에 이 공유기가 갖고 있는 ip를 우리가 디폴트 게이트웨이라고 한다.

포트포워딩 예제

디폴트 게이트웨이 는 어떻게 알아낼 수 있냐면
ip route를 입력해면 vim 옆에 디포틀 게이트웨이의 ip가 나온다.

192.168.0.2 이라고 되어있는데 디플트 게이트웨이의 ip 를 여러분이 브라우저 에다가
이렇게 입력하고 엔터 치면 라우터의 관리자 화면이 나온다.

고급 설정에 nat/라우터 관리에 포트포워드 설정을 선택한다.

내부 ip에 서버를 설치하고 싶은 컴퓨터의 내부에서의 ip를 적어주고 이 규칙의 이름을 적어준다.

외부포트 라고 적혀 있는데 접근할 사용자가 사용할 포트에 번호로, 라우터가 안쪽으로 들어오는 라우터 쪽에 포트이며 내부 포트 라는 것은 바로 이 컴퓨터 상에서의 포트로 컴퓨터에 설치되어 있는 웹서버가 몇 번째 포트에서 리스닝을 하는 가를 설정한다.

추가한 리눅스 러브규칙에 의해서 9,000 번 포트로 누군가 들어왔을 때 192 .168 0.65 ip 에 해당되는 컴퓨터로 80번 포트로 신호를 보낸다고 정책을 정한 것이다.

정책을 정해 놓면 서버에 접근할 사용자들에게
예 사용자는 211.46.24.37로 접속하는데 그때 뒤에다가 9,000 번 포트를 적어준다.

이 라우터의 ip 는 curl ip 를 알려주는 서비스, http://ipinfo.io/ip를 적어주면
우리가 접속한 그 컴퓨터가 어떤 공개ip 를 사용하고 있는가를 보여주고 사용자들은 브라우저에 이 ip를 입력하고 뒤에다가 9000 이라고 입력하고 헬로 웹서버가 뜬다.

헬로 웹서버 라는 것이 뜨는 이유는 이 사용자가 이 ip 뒤에다가 9000 이라고 적고 접속을 시도하게 되면 이 ip 해당되는 라우터에게 접속이 진행이 되고 그 라우터의 있는 9000 번 포트로 진입을 한 건데 9000번 포트는 192.168.0.65:80번 포트로 포트포워딩한다는 정책을 세워 놓았기 때문에 이 접속은 192.162.0.65에 80번 포트에서 대기하고 있는 웹 서버에 접속한다.

웹서버가 동작해서 그 결과를 선에 따라서 공유기에 전달하면 이 공유기가 그것을 요청한 사용자에게 보내주면 접속이 끝난다.

profile
자기 신뢰의 힘을 믿고 실천하는 개발자가 되고자합니다.

0개의 댓글