public IP와 private IP

지노·2021년 5월 24일
0
post-thumbnail
post-custom-banner

private IP? public IP?

public IP - 공인 IP

private IP - 사설 IP

NAT - Network Address Translation

  • 내부 네트워크에서 외부로 나가는 패킷들의 주소를 외부 네트워크 주소로 변환하고 그 패킷에 대한 응답 패킷의 목적 주소를 다시 패킷이 발송된 내부 네트워크 주소로 변환해주는 기능
  • 간단하게 private IP와 public IP의 연결

하나의 public IP를 가지고 있는 공유기에 연결되어 있는 모든 컴퓨터는 어떻게 외부와 통신할 수 있을까?

  1. 컴퓨터 A에서 www.naver.com으로 http 메시지(패킷 1) 전송
  2. 패킷 1에 source IP로 컴퓨터 A에 할당된 private IP 지정
  3. 패킷 1이 공유기(라우터)를 지나면서 source IP로 외부 통신을 위한 public IP로 대치
  4. 이후 공유기에 연결된 장치와 각 장치에서 보낸 요청을 구분하기 위한 source Port에 공유기의 포트로 대치
  5. NAT Translation Table에 private IP & Port와 public IP & Port 등록

  1. 네이버 서버에서 요청에 대한 응답 전송
  2. 공유기(라우터)를 지나면서 destination IP와 Port를 NAT Table을 참조하여 대치
  3. 공유기에서는 port를 통해 어떤 컴퓨터에서 온 요청인지, 해당 컴퓨터의 어떤 포트에서 온 요청인지 구분할 수 있음!

PAT(Port Address Translation)

  • 위와 같이 하나 또는 하나 이상의 public IP를 여러 private IP들이 공유하여 사용할 때 사용
  • 같은 public IP로 변환하는 대신 port를 구분자로 사용

Nginx, Mysql 등등 설정 파일에 사용하는 IP

대부분의 경우에는 private IP나 127.0.0.1을 사용!

  • private ip를 사용하면 외부 라우팅 테이블을 거치지 않고 내부 네트워크로 바로 향함
  • public ip를 사용한다면 굳이 거치지 않아도 될 외부 라우팅 테이블을 타고 다시 내부 네트워크로 들어옴

127.0.0.1과 private IP 차이

  • 내 맥북의 8080포트로 서버를 구동시킨 상태

  • 브라우저를 사용하여 127.0.0.1:8080 으로 요청을 보내나 내 맥에 할당된 private ip인 182.16.101.102:8080 으로 요청을 보내나 loopback 인터페이스를 통해 요청이 전달된다.

  • wireshark를 통한 확인

  • 내부 라우터를 통한 확인

설정파일에 public IP를 꼭 사용해야만 하는 경우?

  • 연결하려는 서비스를 같은 네트워크에서 사용할 수 없는 상황?
  • 다른 회사의 서비스를 연결해야만 하는 상황?
profile
Spring Framework를 이용한 웹 개발과 AWS 서비스, Container를 사용한 CI/CD 인프라에 관심이 있습니다.
post-custom-banner

0개의 댓글