개요
이번 글에서는 내부망 TO 내부망에 있는 웹서버를 탈 때 애플리케이션의 IP 수집과 관련해서 이야기해 보려고 합니다.
배경
사내 프로젝트 QA 환경에서 결제 API를 사용 중에 문제를 만났다.
분명 한국에서 VPN 없이 결제 시도를 했는데 해외 결제 모듈이랑 연동되는 현상을 발견했다.
결제 모듈을 불러오는 방식은 아래 플로우와 같다.
- Client IP 수집
- 수집된 IP 기반으로 국가 코드 조회 API 요청
- Response된 국가 코드를 통해 결제 API 요청시 같이 파라미터로 넣어 요청
하지만 이때 국내 IP임에도 불구하고 국가 코드 조회 API가 US(미국)라는 국가 코드를 반환했다.
해당 API의 파라미터 로그를 확인해보니 IP가 사내 Private IP로 잡혀 전달되고 있었던 것이었다.
IP 수집 메서드 자체에 문제가 없었는데 특정 환경에서는 Public이 어느 환경에서는 Private IP가 잡히는 기이한 현상이 일어났던 것이다.
원인과 문제 해결
원인을 알아내기 위해 Public IP가 잡히는 환경과 Private IP가 잡히는 환경에 대한 차이를 확인해보니 내부망(사내망)에 있는 개인 PC에서 QA 서버(내부망)으로 요청시에 해당 메서드가 Private IP를 수집했고 내부망을 타지 않고 QA 서버로 요청하는 경우에는 해당 메서드가 Public IP를 반환하는 현상을 확인하였다.
해당 내용을 필두로 조사해보니 이는 네트워크 아키텍쳐와 관련이 있는 부분이였다.
내부 네트워크에서는 Private IP를 사용하여 내부 기기들을 구성하며, 이 주소들은 외부 인터넷에서 접근할 수 없는 주소이다.
대신에 라우터나 방화벽 등을 통해 외부와의 통신을 관리하고, 이를 통해 내부 기기들이 외부로 나가거나 외부에서 접근할 수 있게 된다.
이런 상황에서 공인 IP 주소가 수집되는 것은 보안 및 네트워크 구성의 관점에서 일반적으로 권장되지 않고
외부에서 내부 네트워크의 사설 IP 주소를 알아내는 것은 보안 위험을 초래할 수 있다.
따라서, 사내망의 웹 서버에 접근하는 경우에는 보통 Private IP가 수집된다.
즉, 사내망의 컴퓨터에서 사내의 웹 서버에 접근할 때 Private IP가 수집된다는 것은 애플리케이션 문제가 아닌 일반적인 현상인 것이였다.
위 내용들을 참고하여 QA 환경과 같이 Private IP가 잡히는 환경에 대해서는 Default 국가 코드를 반환하게 해주어 문제를 해결할 수 있었다.
라이브 환경에서는 내부망 TO 내부망 접근이 아닌 클라우드 환경에서 애플리케이션을 운영하므로 해당 내용을 고려하지 않아도 된다.
'네트워크' 카테고리의 다른 글
[네트워크] 네트워크의 기초 (0) | 2025.03.08 |
---|---|
[네트워크] 네트워크 계층의 역할 (0) | 2022.04.18 |
[네트워크] 데이터가 케이블에서 충돌하지 않는 구조 (0) | 2022.04.13 |
[네트워크] 네트워크의 구성 - 스위치 (0) | 2022.04.13 |
[네트워크] MAC 주소의 구조 (0) | 2022.04.13 |