본문 바로가기
PROGRAM

도로명주소 API 호출 시 connection timed out 원인 파악, IP 차단 여부 확인

by ojava 2021. 2. 1.
반응형

세상을 이롭게 하는 API 개발자들 덕분에 잘 개발해둔 서비스를 콜 한 번으로 불러다가 쓸 수 있는 좋은 세상이다.

여기저기서 잘 쓰고 있을텐데 그렇게 여기저기 사용 중인 API가 제대로 호출되지 않는다고 생각해보자.
API를 통한 결과값이 프로세스 구성에 필수적인 형태로 되어있다면? 그런 경우는 더욱 영향도가 커진다.


외부 API를 그대로 사용하면 개발자가 할 일이 크게 줄어드는 대신에 의존도가 높아진다.
(아 물론 선택적으로 쓰는 경우는 별개로 생각할 수 있겠지만!)
API 호출 속도가 느린 것이 곧 내가 관리하는 사이트의 응답속도가 느려지는 것이고, API 결과값 호출이 안되거나 실패하는 경우 서비스 이용도 불가해진다.

 


최근에 API 구성 시 고려해야 할 점에 대해서도 작성한 적이 있는데 API 파라미터나 결과값 변경에 유연하게 대응할 수 있는 방식으로 설계해야 한다고 했던 것도 의존성과 종속성에서 벗어나기 위한 것이었다.
서비스 결과값은 API를 따라가겠지만 프로그램까지 API 때문에 변경하게 되는건 어째 주객이 전도되는 일이니 그것만은 막아야 한다.

~ 참고로 전에 올렸던 글 추가 ~
https://ojava.tistory.com/174

 

도로명 주소 API 연동방식, 외부 API 연동 시 유의사항

처음에 도로명 주소 쓰라고 했을 때는 이걸 어떻게 쓰나 싶었다. 뭐든 간에 익숙한 것을 새로운 것으로 바꾸는 데는 큰 저항이 있는 법이다. 그게 오랜 시간 사용했을 수록 더더욱. 지번으로 구

ojava.tistory.com







몇 년간 잘 쓰던, 심지어 어제까지 아까까지 잘되던 API 호출이 갑자기 잘 안된다면?
내가 프로그램을 변경해서 찔리는 구석이 있는 것도 아니고 네트워크 방화벽 정책이 변경된 것도 아니고 어디 누군가가 뭔가를 건드렸을 것 같다는 어떠한 의심도 들지 않을땐 뭘 의심해야 할까?

이 갑작스러운 추리소설 전개는 무엇인가.
관련된 모든 사람을 의심하고 로그를 뒤져보고 서비스 호출 이력을 다 뒤져보면서 뒷조사에 들어간 흥미진진한 스토리가 재미없는 이유는 바로.
내 얘기이기 때문이다 ^_ㅠ 원래 이런건 남이 해주는 얘기만 재밌지 내가 겪으면 식은땀 나고 눈도 제대로 깜빡이지 못하고 모니터만 보게 된다.




도로명 주소 API 호출 시 Connection timed out 오류 발생, 갑작스러운 호출 불가, IP 차단여부 확인



도로명 주소 API 정말 잘 쓰고 있었다.
점심 먹고 돌아와서 오전에 정리해둔 프로세스대로 로직을 짜볼까 하고 있는데 갑자기 서비스가 안된다고 연락이 온다.




호출 해보니 한참을 빙글빙글 돌더니 connection timed out 에러를 뱉는다. 외부 서비스 호출하는 정책이 바뀌었나 싶어서 방화벽쪽에 확인해보니 이상이 없다.

나도 바꾼게 없는데 갑자기 뭘까. 이때부터 식은땀 나기 시작했는데 서비스 중단되니까 여기저기서 전화가 온다.




믿을 구석은 도로명 주소 도움센터 뿐이다. 현재 상황에 대해 공유하고 개발자와 연결되기를 기다리고 있었는데 문의전화 몇 통 받는 중에 드디어 받게 된 연락.

IP가 차단되었을 수 있다고 한다.
ㅇ0ㅇ... 세상에 무슨일이야 어떻게 매번 새롭지 대체




실제 IP 차단 여부를 확인한 절차는 아래와 같다.

도로명 주소 도움센터 문의를 통해 IP 차단 가능성 확인 후, 국가정보자원관리원에 연락해서 관리하는 사이트의 NAT IP (내부에서 관리하는 서버 IP가 아니라 대외적으로 외부와 통신하는 대표 IP)의 차단여부를 확인한다.

여기서 국가정보자원관리원이 뭔가 싶은데, 도로명 주소 시스템은 행정안전부 주소정책과에서 관리하는 서비스인데 실제적으로는 정부부처의 IT 서비스를 통합관리하는 국가정보자원관리원에서 도로명 주소 API를 통한 공격을 탐지하고 IP를 차단했다고 한다.
아마도 거기서 전체적인 관제를 담당하고 있지 않나 싶다.

실제 해커나 악의적인 사용자의 공격일 수도 있으나 회사 자체적인 취약점 진단 등으로 인해 인위적인 공격 시도를 진행하는 경우가 잦은 듯 했다.

☆협조 요청이나 사전 통보 등으로 IP가 차단되는 것을 막을 수 있는 듯 하나 굳이 도로명 주소 API를 쓰는 페이지에 악의적인 공격을 시험해보지 마시길... 물론 사전에 공격 차단을 위한 조치도 미리 해두심이 좋습니다☆


반응형

 



오늘의 핵심! 실제 IP 차단 여부 확인을 위해 본인 서버의 대표 IP를 알아야한다.

Linux 서버의 경우에는 콘솔에 curl ifconfig.me 이라고 치면 본인이 접속중인 서버의 NAT IP 확인이 가능하다.

curl [option] url
형태로 사용하는 명령어인데 command line에서 웹 url 호출을 진행할 수 있다. 위 명령어는 ifconfig.me 라는 사이트를 호출해서 접속 서버의 IP를 확인할 수 있게끔한다.

외부와 통신하는 대표 IP를 찾고싶은거라면 딱 저기서 호출되는 결과값을 가지고 API 담당자 혹은 IP 차단 여부를 확인해주는 대상자와 소통하면 된다.





참 별의 별 경험을 다 한다 싶으면서도 오 이거 블로그에 써야지 싶은 나도 참 웃긴다 ㅋㅋㅋㅋㅋㅋㅋㅋ

오늘도 재밌는 에피소드 하나 추가한 하루
공문쓰느라 늦어버렸지만 내일은 정시퇴근해야지 ^_ㅜ


반응형