본문 바로가기
서버 및 보안

No-IP

by 다움위키 2023. 12. 25.

Vitalwerks LLC는 유료 및 무료 서비스에 대해 동적 DNS(dynamic DNS) 제공 업체인 No-IP의 모회사입니다. No-IP는 DNS 서비스, 이메일, 네트워크 모니터링 및 SSL 인증서를 제공합니다. 이메일 서비스에는 POP3 이메일, 아웃-바운드 SMTP 이메일, 백업 메일 서비스 및 메일 반영 및 필터링이 포함됩니다.

FQDN이 없는 상황에서 공인 ip를 외부에서 접근하기 위해서는 공인 ip를 직접 적어주면 가능합니다. 그러나 만약 공인 ip가 dhcp로 바뀌게 되는 경우라면 매번 사용자들에게 서버의 ip를 알려주어야 하는 문제가 생깁니다. 이를 해결하는 방법 중에서 공인 ip를 no-ip.com에서 제공하는 도메인에 원하는 서버명을 등록함으로써, ip가 변하더라고 서버명으로 서버에 접근을 할 수 있습니다. 이를 위해서는 ip가 바뀔 때마다 no-ip에 그 내용을 전달해야 함으로써 변화된 ip에 대해서 서버명을 연결할 수가 있습니다. 즉, 웹서버 등이 운영되는 컴퓨터에서 주기적으로 이 내용을 전달하는 프로그램을 설치해야 합니다.

수시로 정책을 바꾸어서, 무료 사용자를 유료 사용자로 만들려는 시도가 계속됩니다. 예를 들어, 갱신 기간이 8일 남고, 다음 날은 7일 남아야 하는데, 갱신 이메일이 오고, 갱신 기간이 1일 남았다고 변경되기도 합니다.

계정 만들기

No-ip에 접근하셔서 Sing-Up을 누르시면 아래와 같은 화면이 뜹니다.

  • Email
  • Username
  • Password
  • Hostname
  • How will you use NO-IP?

Hostname에는 원하는 서버명을 적고 무료로 제공되는 .hopto.org, .zapto.org, .sytes.net, .ddns.net중에 하나의 도메인을 선택합니다. 마지막 질문은 제공할 원하는 서비스를 선택해 줍니다. 계정을 만들었으면, Sign In으로 접근합니다.

설치 및 설정

이제 클라이언트 프로그램을 받아서 설치를 해야 합니다. 이때, 의존성 프로그램이 필요할 수 있는데, 설치 중에 make not found 또는 missing gcc 등의 메시지가 나오면서 중단이 될 수도 있습니다. 해당 프로그램을 먼저 설치하고 시작해야 합니다.

설치 마지막에 최초 설정을 진행합니다. 먼저 시스템에 동작하는 네트워크 디바이스를 아래와 같이 찾아줍니다.

  • sudo apt install net-tools
  • ifconfig

몇 개의 네트워크 디바이스 중에서 외부에서 접속이 가능한 것을 기억해 둡니다.

설정 과정은 아래와 같이 5가지 과정으로 이루어집니다.

  1. 네트워크 디바이스 선택
  2. 이메일 입력 (또는 user-id)
  3. 암호 입력
  4. 복수개 호스트 업데이트 유무
  5. 업데이트 주기 입력(엔터)
  6. 다시 입력(엔터)

설정중에 강제로 빠져나오기(ctrl+c)를 하셨다면 처음부터 새롭게 설정할 수 있습니다.

이때, 인수로 소문자(c)가 아니고 대문자(C)를 사용해야 합니다:

  • sudo noip2 -C

설정이 완료되었으면 아래와 같이 서비스를 시작합니다.

  • sudo noip2

시작 서비스 등록

서버가 부팅이 될 때 noip 서비스가 자동으로 시작되도록 설정을 해야 합니다.

SysV Init Script

아래 내용을 /etc/init.d/noip2에 만듭니다.

#!/bin/sh
### BEGIN INIT INFO
# Provides:          noip2
# Required-Start:    $remote_fs $syslog
# Required-Stop:     $remote_fs $syslog
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: Start daemon at boot time
# Description:       Enable service provided by daemon.
### END INIT INFO 
# . /etc/rc.d/init.d/functions  # uncomment/modify for your killproc 

PATH=/bin:/usr/bin:/sbin:/usr/sbin

case "$1" in 
start) 
echo "Starting noip2." 
/usr/local/bin/noip2 
;; 
stop) 
echo  "Shutting down noip2." 
killall -TERM /usr/local/bin/noip2 
;; 
*) 
echo "Usage: $0 {start|stop}" 
exit 1 
esac 
exit 0
  • sudo chown root:root /etc/init.d/noip2
  • sudo chmod +x /etc/init.d/noip2

서비스를 시작하고 확인을 하는 과정입니다.

  • sudo /etc/init.d/noip2 start
  • ps aux |grep noip2

nobody 17181 0.0 0.0 19132 2140 ? Ss 23:09 0:00 /usr/local/bin/noip2

시작 시에 자동으로 시작하도록 등록해 줍니다.

  • sudo updated-rc.d noip2 defaults

시스템을 재시작 후에 아래와 같이 프로세서가 존재하는지 확인을 합니다.

  • ps aux |grep noip2

nobody 824 0.0 0.0 19132 2088 ? Ss 23:14 0:00 /usr/local/bin/noip2

Systemd Init Script

정해진 위치에 스크립트 파일 /lib/systemd/system/noip2.service을 만듭니다.

[Unit]
Description=No-IP Dynamic DNS Update Client
Wants=network-online.target
After=network-online.target

[Service]
Type=forking
TimeoutStartSec=30
ExecStart=/usr/local/bin/noip2 -c /usr/local/etc/no-ip2.conf
Restart=on-failure
RestartSec=30

[Install]
WantedBy=multi-user.target

부팅시 서비스가 실행되도록 등록을 하고, 서비스를 실행합니다. 서비스가 잘 실행되고 있는지 확인을 합니다.

  • sudo systemctl daemon-reload
  • sudo systemctl enable noip2
  • sudo systemctl start noip2
  • sudo systemctl status noip2
이전 스크립트를 홈페이지를 참고해서 만들었지만, 시스템 로그에 오류가 생깁니다. Can't get our visible IP address from ip1.dynupdate.no-ip.com 이에 대한 버그리포트가 레드헷 벅질라에 있습니다. 현재는 수정이 된 상황이니, 이 설정을 이용하시기 바랍니다.

Troubleshootings

시작 스크립트 오류

네임 서버에 지연 시간을 추가했더니, noip에서 읽어올 서버의 주소를 판독하지 못하는 문제가 생깁니다. 시작 스크립트에서 다음과 같수 수정합니다:

After=named.service

External Resources