NAT 관련한 이슈랑 L7, L4 라우팅 장비로 인한 이슈를 경험해봐서
네트워크도 지식도 중요하다고 생각하네요.
이번에는 진작에 공부하긴 했는데 다시 정리하자는 느낌으로 글을 쓰겠습니다.
공인 IP와 사설 IP를 변환시켜주는 IP 변환 기술
해당 그림에서는
공인 IP : 123.45.67.89
사설 IP : 192.168.1.1, 192.168.1.2, 192.168.1.3
로 NAT을 사용하고 있는 모습입니다.
그냥 바로 통신하면 되는데 굳이 이러한 변환 기술이 필요한걸까요?
NAT 기술을 이용하면 하나의 공인 IP 가지고 여러개의 사설 IP를 사용할 수 있습니다.
예를 들어
집에 컴퓨터 10대를 설치했다고 가정해볼게요
네트워크랑 통신하려면 공인 IP 10개가 필요합니다.
하지만 공인 IP 10개의 대한 비용이 발생하겠죠?
하지만 NAT을 사용하면
공인 IP 1개, 사설 IP 10개를 이루어서
네트워크 통신을 가능하게 할 수 있습니다.
공인 IP 1개만 비용 부담하면 되서 비용적인 측면에서 매우매우 절약적이죠
트래픽이 밖으로 나갈때도 공인 IP로 나가기 때문에
외부에서는 실제로 트래픽이 발생한 IP를 모르는 보안적인 효과도 존재합니다.
정적 NAT은 사전에 미리 공인 IP, 사설 IP를 1:1 로 매핑시켜서
항상 매핑한 데이터 가지고 IP 변환을 합니다.
동적 NAT은 공인 IP와 사설 IP를 1:1 매핑 시켜주는것 까지는 동일하지만 동적으로 매핑하는 형식이라 고정적으로 매핑되어 있는 것이 아닙니다.
PC가 사용중이면 그 PC의 사설 IP와 공인 IP가 매핑되어 있지만, PC가 사용중이지 않는다면 매핑되어 있는 공인 IP가 반환되고, 매핑이 필요한 다른 PC가 해당 공인IP를 매핑합니다.
이런 식으로 동적 할당해줌으로써 더 적은 공인 IP로 여러 PC가 외부 네트워크와 통신하게끔 만듭니다.
공인 IP 하나에 여러 사설 IP가 매핑이 되어있는 방식인데
이게 가능한 이유는 포트별로 또 분리를 하기 때문입니다.
예를 들어
121.156.242.211:20 <=> 192.168.0.1:3000
121.156.242.211:21 <=> 192.168.0.5:8080
121.156.242.211:22 <=> 192.168.0.3:8000
이런식으로 1개의 공인 IP에 포트별로 매핑을 하기 때문에 여러 사설 IP에 연결이 가능합니다.
아마 가장 많이 쓰는 방법이 아닐까요?
서버의 공인 IP 확인을 하고 싶으면
curl ifconfig.me
를 사용하시면 됩니다. (리눅스 기준)
그외에도 리눅스에 도메인IP 확인(nslookup), etc 호스트 파일 확인 등등
좀 꿀인 것들이 많더라고요.
리눅스 많이 들어가면 해당 키워드들은 알면 좋을 것 같습니다.
네트워크 구축 및 관리를 직접 하지는 않지만
네트워크때문에 이슈생긴 적이 여러번이라서 확실히 배우면 많이 도움될 것 같습니다.
또한 네트워크 구축 분들이 이야기 하시면 NAT 설정 관련하여 자주 이야기하시는걸 들어서
네트워크 에서 매우 기본적인 지식인 것 같습니다.