[서비스] mysql 또는 SSH 원격접속시 시간 지연 문제 Computer Tip

예전부터 SSH 접속시에 같은 LAN에 붙어 있는 것이,
어느것은 0.1초만에 접속이 되어 뜨는데, 다른 것은 몇초 씩이나 지연이 된 적이 있다.
그 원인은 SSH 서비스 데몬이 접속한 Client의 IP를 가지고 정당한 인터넷 사용자인가를
체크하는 Reverse DNS 체크를 하기 때문이었다.

간단한 예를 들어, 내부에는 NAT로 사설 IP (192.168.1.9/24) 대역을 사용하고,
내부에서 내부로 SSH 접속을 하려고 한다.
192.168.1.100에서 192.168.1.200으로 접속을 하려고하면,
$100> ssh 192.168.1.200
.... <== 여기서 시간이 걸림
이 순간 200은 접속해오는 client의 IP 즉, 192.168.1.100을 DNS서버에게 query를 하여
그 IP의 역 hostname을 resolve하려고 하는데 이때 접속 DNS가 reverse DNS query를
지원하지 않는 등의 문제로 인하여 timeout이 될 때까지 클라이언트의 접속을 지연시키게 된다.

이를 해결하는 간단한 방법은,
해당 SSH 서버의 config 파일에다,
UseDNS no
라고 설정해 주면 된다.

위의 예에서는
192.168.1.200의
/etc/ssh/sshd_config
파일에다가
UseDNS no
를 설정하거나 이미 있다면 yes를 no로 변경하면 된다.

최근에 mysql을 원격으로 접속하는데 유사한 문제가 발생한 서버가 있었다.
mysql 을 접속하려고 하는 모든 접점에서 시간지연 문제가 발생한 것이다.
JDBC연결에도 그렇고, mysql -h host 명령에서도 느리고 했던 것이다.
당연히 관련 GUI도 느려졌다...

알고보니 위의 SSH와 똑같은 문제가 있었던 것이었다...
(왜 그 사실을 지금에야 알았을까나....싶다...
그간 MySql을 접한지가 십여년도 더 흘렀는데...
자신이 갑자기 한심해 진다...
그래도, 뭐 지금이라도 알았으니 천만다행으로 여긴다...
다시는 유사한 문제에 대하여 버벅대지 않을 것이다!!!)

mysql 데이터베이스의 config 파일인 my.cnf 파일에서
[mysqld]
section에다가
skip-name-resolve
한줄을 추가해주었더니, 모든 문제가 해결되었다!!!


핑백

  • 지훈현서 : [서버구축] 나만의 GitLab 서버를 집 공유기 뒤에 놓아보기 2017-04-11 12:04:59 #

    ... bsp; UseDNS no 를 설정했는지 확인합니다. 그 다음 ssh 서비스를 재기동시킵니다. $ sudo service ssh restart (UseDNS no 를 설정하는 이유를 참고하십시오) 그러면 앞으로는 암호로 접속은 불가능하고 키를 가진 경우에만 접속가능합니다. 2006년 경 레드햇 엔터프라이즈 리눅스를 ... more

덧글

  • 참버드 2013/10/25 22:46 # 삭제 답글

    와 진짜 좋은정보입니다. 감사합니다!
  • 지훈현서아빠 2013/10/26 13:26 #

    도움이 되셨다니 저의 보람입니다~ ^^
  • 일년만에 2014/05/13 10:48 # 삭제 답글

    해결 -ㅂ.-
    감사합니다. .. .ㅠㅠ
  • 지훈현서아빠 2014/05/13 11:27 #

    도움이 되셨다니 저의 보람입니다 ^^
  • 증과장 2016/04/22 11:08 # 삭제 답글

    처음 댓글 달아봅니다.
    본 정보가 저희에게 많은 도움이 되었습니다.
    감사합니다.
  • 지훈현서아빠 2016/04/22 14:16 #

    도움이 되셨다니 저의 보람입니다~ ^^
댓글 입력 영역

구글애드텍스트