네트워크 공부는 끝이 없다. 기본 지식이 없으니까 나는 공부할 게 넘쳐난다네~~~~
팀 업무 중에는 네트웍 작업을 하면 서비스 체크를 해야하는데 진땀 한번 뺐다 ㅠ
지난 주말에 서비스 체크를 하는데 잘 되던 기능이 안되는거 아닌가..?
그래서 여기저기 물어서 찾아보니까 네트워크 작업을 하면서 SNAT 으로 작동해서 내 서비스의 아이피를 연동 시스템에서 인식을 못해서 문제라네…
부장님들이 해결책을 알려줬는데 도대체 어떻게 접근해서 해결하는지 알아듣기 위해서는 내가 공부를 해야지.
NAT 이란..?
간단히 말하면 같은 네트워크 내의 여러 아이피들이 하나의 대표 아이피로 소통하는 것이다. Network Address Translation 의 줄임말.
여러가지 장점이 있지만 사내 내부망 같은 경우 같은 네트워크 임을 관리 하기 위함으로 사용되기도 한다.
SNAT
Source NAT 이란 뜻으로 패킷의 출발지 주소를 변경한다. 잘 와닿지 않아서 그림으로 그려봤다.
여러 요청들이 들어와도 내부망으로 들어올땐 SNAT 때문에 요청 패킷의 소스 ip 가 모두 같게 들어온다.
여기서 문제는 L4 를 통해 내부망의 서버가 다른 내부망 내 서버에 요청을 하면, 요청은 SNAT 된 ip 로 갈아 끼게 되고 내부망 내의 ip로 인증 예외 처리를 설정에 명시해 놓은 경우, 설정 예외된 ip 로 요청이 오는게 아니니까 예외가 안된다.
그렇다고 해서 SNAT ip 를 다 인증 예외 처리하기엔 외부에서 들어오는 요청이 모두 같은 ip 로 갈아껴서 들어가는데 모두 예외처리 해주는 것과 같아서 문제가 되었던것.
내 서비스 같은 경우는 호스트 파일에 내부 서버 ip 를 특정하여 L4서버 안 타게 만들어서 해결했었다.
DNAT
DNAT 은 반대로 패킷의 목적이 ip 를 갈아껴준다. 외부 사용자가 요청을 할때는 외부에 공인된 ip 를 가지고 요청을 할텐데 이걸 가지고 내부의 리얼 서버 ip 로 변경해주는 작업이다. 로드 밸런서가 하는 역할이라고 할 수 있다.