commit and push
article thumbnail
Published 2025. 4. 21. 20:54
[Network] NAT란 무엇인가 Network
반응형

기나긴 취준을 지나 회사 업무에 치여 사느라 블로그를 한동안 쓰지 못했다. 지금부터라도 회사 업무를 하며 필요한 공부를 하고 조금씩 정리를 해보려 한다. 목표는 서비스 기업이었지만 어쩌다 보니 은행에 취직하여 일을 하고 있는데 이 이야기는 차차 풀도록 하고, 오늘은 폐쇄망이 기본인 은행에서 자주 사용하는 NAT에 대해 정리하겠다.

NAT(Network Address Translation)란?

NAT의 구성

이름 그대로 네트워크 주소 변환으로써, 컴퓨터 네트워킹에서 주로 사용한다. IP 패킷의 TCP/UDP 포트 숫자와 소스 및 목적지의 IP 주소 등을 재기록하면서 라우터를 통해 네트워크 트래픽을 주고받는 기술을 말한다. 이렇게 말하면 어려울 수 있는데, 쉽게 말하자면 사설 IP 주소를 공인 IP 주소로 변환해 주는 기술이다. 인터넷은 공인 IP만 통신이 가능하기 때문에, 내부 사설망에 있는 서버나 클라이언트가 외부와 통신하려면 NAT를 통해 주소를 변환해야 한다.

NAT의 동작 흐름
1. 내부 클라이언트 → NAT 라우터 → 공인 IP로 변환 → 외부 인터넷
2. 외부 서버 → NAT 라우터 → 내부 클라이언트에게 라우팅

NAT의 주요 유형

SNAT(Source NAT)

  • 내부 IP → 공인 IP로 변환(Outbound)
  • 내부 API 서버가 외부 기관 API 호출 시

DNAT(Destination NAT)

  • 공인 IP → 내부 IP로 변환(Inbound)
  • 인터넷 뱅킹 접속 시 요청을 실제 WAS로 전달

PAT(Port Address Translation)

  • 여러 내부 IP를 단일 공인 IP + 포트 번호로 매핑
  • 지점 단말기들이 하나의 회선을 공유할 때

NAT의 종류로는 위와 같이 존재한다. 이번에 내가 사용했던 건 DNAT으로 특정 IP가 내부 개발 서버에 접근 가능하도록 접근 허용 신청서를 제출하고 해당 도착지 IP(Destination IP)와 포트를 입력하였을 때 내부 개발 서버의 IP와 포트에 연결될 수 있도록 하였다.

처음에는 NAT의 개념을 제대로 몰라 해당 NAT 접근이 허용된 후엔 내부 개발 서버를 해당 IP에서 바로 접근할 수 있다고 생각하고 시도하였는데 계속 실패하였고 telnet을 통해 어떤 IP에 접근 가능한지 찍어보면서 바로 내부 개발 서버 IP로 붙는 것이 아닌 외부에 접근 가능하도록 열어둔 Destination IP로 접근해야 NAT를 통해 내부 IP에 접근 가능하다는 것을 알 수 있었다.


금융시스템에서의 NAT

보안과 내부망 분리

은행에서 대부분의 시스템은 DMZ, 내부망, 외부망으로 나뉜다. 외부 인터넷 요청이 DB나 내부 WAS까지 직접 접근할 수 없다. 이때 NAT는 경계 보안의 역할을 하여 직접적인 노출 없이 통신을 가능하게 한다.

고객이 내부 API를 호출하는 과정
고객 브라우저 → NAT + WAF → DMZ의 프록시 서버 → 내부 API

 

외부 기관 연계

금융권 특성상 카드사, 보험사, 정부 기관과 연동이 많다. 실제로 나도 일을 하면서 매일 카드사와 파일을 주고받고, 공기업, 공공기관 등과 API 통신을 한다. 내부 서버에서 외부 기관의 API를 호출할 때 사설망에서는 직접 호출이 안 되므로 NAT + 방화벽을 통해 접근한다.


일반적인 개발자와 달리 금융권에서 개발자로 일을 하면 수많은 제약사항이 존재한다. 흔히들 하는 구글링 후 Ctrl + C → Ctrl + V는 상상할 수 없고... 코드를 조금만 수정해도 해당 코드를 운영 서버에 배포하기 위해서는 결재를 받아야 한다. 수많은 고객이 사용하고 금전이 오가는 업무이기에 어쩔 수 없다고 생각은 하지만 그래도 이런 제약 사항들이 조금은 완화되고 개발의 자유성이 조금 늘어난다면 더 나은 서비스를 개발할 수 있지 않을까 생각한다. 업무에 어느 정도 적응을 하고 글로 풀어낼 만큼 이해를 하게 될 때쯤 은행 개발자에 대한 글을 기재하겠다.

반응형
profile

commit and push

@prao

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!

profile on loading

Loading...