아마도 제가 이 작업을 수행한 최초의 사람은 아닐 것입니다. 하지만 자리를 비울 때 LAN에 있는 리소스에 액세스할 수 있도록 장치와 컴퓨터를 쉽게 구성할 수 있도록 NO-IP의 동적 DNS 서비스를 사용해야 했습니다. NO-IP에 익숙하지 않은 분들을 위한 무료 동적 DNS 서비스입니다. 대부분의 가정 및 소규모 사무실 인터넷 연결에는 동적 IP가 있습니다. 즉, 라우터에서 연결이 설정될 때마다 IP 주소가 가장 많이 변경됩니다. 일반적으로 도메인 이름이 작동하려면 고정 IP 주소가 필요합니다. 동적 DNS를 사용하면 IP 주소가 변경될 때 NO-IP를 새 IP 주소로 업데이트하여 도메인 이름(예: subdomain.example.com)이 동적 IP를 사용할 수 있습니다. 그런 다음 NO-IP는 해당 IP를 도메인 이름과 연결하므로 변경되는 IP가 아닌 도메인에 대해 서비스를 설정할 수 있습니다. 이렇게 하면 구성이 더 쉬워집니다.
많은 라우터에는 NO-IP 클라이언트가 내장되어 있지만 내 라우터는 NO-IP를 지원하지 않으며 어떤 이유로든 Linux 호스트가 작동하도록 NO-IP가 권장하는 클라이언트를 얻을 수 없습니다. 소스를 다운로드하고 지침에 따라 컴파일했는데 실행 중인 것처럼 보였지만 내 IP 주소는 업데이트되지 않았습니다. 내가 찾을 수 있는 문제를 진단하기 위한 콘솔이나 로그 파일에 대한 출력이 없었기 때문에 직접 작성하기로 결정했습니다. bash 스크립트와 몇 가지 간단한 유틸리티를 사용하여 수행하는 것은 실제로 그렇게 어렵지 않았습니다. 내 리눅스 박스에. 다음은 이를 설정하는 방법 가이드 및 문서입니다. 저는 Ubuntu 서버를 실행 중이므로 apt와 nano를 사용하고 있지만 이는 Mac OS X, BSD, 모든 종류의 Linux, 심지어 Raspberry Pi와 같은 POSIX 기반의 모든 것에서 작동합니다.
스크립트는 명령줄 매개변수가 있는 단일 인스턴스로, crontab(일정에 따라 프로그램을 실행하기 위한 유틸리티)을 사용하여 데몬으로 또는 Linux 서비스로 실행할 수 있습니다.
이 스크립트에는 wget이라는 하나의 종속성이 있습니다. 이것은 일반적으로 대부분의 Linux 및 BSD 배포판에 기본적으로 설치되지만 그렇지 않은 경우 패키지 관리자를 사용하여 설치하십시오.
sudo apt-get install wget
-또는-
sudo yum install wget
no-ip.sh -u=username -p=password -h=host.sample.com -d=true -l=/path/to/logfile.log
매개변수:
-u, --username
no-ip.com에 로그온하기 위한 사용자 이름입니다.
-p, --password
no-ip.com에 로그인하기 위한 비밀번호입니다.
-h, --hostname
업데이트할 도메인 이름입니다.
-d, --detectip
외부 IP 주소를 감지하도록 스크립트에 지시합니다. 이는 -i보다 우선합니다.
-i, --ip
업데이트할 IP 주소를 수동으로 설정합니다. -d 또는 -i를 모두 지정하지 않으면 no-ip는 감지한 IP 주소를 사용합니다.
-n, --interval
스크립트를 데몬/서비스(설치 참조)로 실행하면 n분마다 no-ip가 업데이트됩니다.
-l, --logfile
로그 파일의 경로를 설정합니다. 이 파일은 쓰기 가능해야 합니다.
-c, --config
구성 파일의 경로를 설정합니다. 이 파일은 읽을 수 있어야 합니다. 구성 파일 매개변수는 명령줄 매개변수보다 우선합니다.
no-ip.sh
기본 위치 /etc/no-ip/no-ip.conf에 있는 구성 파일의 설정을 사용하여 스크립트를 실행합니다.
no-ip.sh -u=username -p=password -h=host.sample.com -d=true -l=/path/to/logfile.log
UP을 감지하고 결과를 기록하는 일회성 업데이트를 수행합니다.
no-ip.sh -c=/home/username/no-ip.conf
구성 파일의 설정으로 스크립트를 실행합니다.
no-ip.sh /dev/null 2>&1 &
기본 위치 /etc/no-ip/no-ip.conf에 있는 구성 파일의 설정을 사용하여 스크립트를 데몬으로 실행합니다.
구성 파일은 간단한 구문을 사용하여 매개변수를 정의합니다. --config를 제외한 모든 명령줄 매개변수를 구성 파일에 지정할 수도 있습니다. 구성 파일 매개변수에는 명령줄 매개변수와 동일한 규칙이 적용됩니다(예: 둘 다 지정된 경우 "Detectip"이 "ip"보다 우선 적용됨).
예:
user=username
password=password
hostname=hostname.example.com
logfile=/var/log/no-ip.log
interval=10
detectip=true
스크립트를 설치하기 전에 파일을 다운로드하여 로컬 컴퓨터에 추출하세요. 지침에서는 사용자가 no-ip-master 폴더에 있다고 가정합니다.
cd ~
wget https://github.com/theonemule/no-ip/archive/master.zip
unzip master.zip
cd no-ip-master
방법 1: 크론탭
Crontabs를 사용하면 스크립트 실행 일정을 지정할 수 있으며 crontab이 구성된 사용자로 스크립트를 실행할 수도 있습니다. 사용자에게 스크립트에 대한 실행 권한, 구성 파일에 대한 읽기 권한, 로그 파일에 대한 쓰기 권한이 있는지 확인하십시오. Crontabs는 일정에 따라 스크립트를 실행하므로 간격을 지정할 필요가 없습니다.
루트로 스크립트를 실행하는 방법은 다음과 같습니다.
1.) 등에 폴더를 만듭니다.
sudo mkdir /etc/no-ip
2.) 구성 파일을 생성합니다.
sudo touch /etc/no-ip/no-ip.conf
3.) 선호하는 편집기로 매개변수를 설정하세요. 저는 나노를 사용합니다. 자세한 내용은 위의 구성 파일 섹션을 참조하세요.
sudo nano /etc/no-ip/no-ip.conf
user=username
password=password
hostname=hostname.example.com
logfile=/var/log/no-ip.log
detectip=true
4.) no-ip.sh를 /usr/sbin에 복사합니다.
sudo cp no-ip.sh /usr/sbin/no-ip.sh
5.) 스크립트를 실행 가능하게 만듭니다.
sudo chmod +x /usr/sbin/no-ip.sh
6.) 루트로 로그온
sudo -i
7.) 루트의 crontab 편집
crontab -e
8.) 하단에 항목을 추가합니다. */10은 현재 시간이 10으로 나누어질 때마다 또는 10분마다 스크립트를 실행하고 crontab을 저장하도록 crontab에 지시합니다.
*/10 * * * * /usr/sbin/no-ip.sh
방법 2: Linux 서비스(Debian 기반 배포판용으로 작성되었습니다. 이는 다른 배포판에 따라 다를 수 있음)
루트에 스크립트 실행 권한, 구성 파일에 대한 읽기 권한, 로그 파일에 대한 쓰기 권한이 있는지 확인하세요.
1.) /etc에 폴더를 만듭니다.
sudo mkdir /etc/no-ip
2.) 구성 파일을 생성합니다.
sudo touch /etc/no-ip/no-ip.conf
3.) 선호하는 편집기로 매개변수를 설정하세요. 저는 나노를 사용합니다. 자세한 내용은 위의 구성 파일 섹션을 참조하세요.
sudo nano /etc/no-ip/no-ip.conf
user=username
password=password
hostname=hostname.example.com
logfile=/var/log/no-ip.log
interval=10
detectip=true
4.) no-ip.sh를 /usr/sbin에 복사합니다.
sudo cp no-ip.sh /usr/sbin/no-ip.sh
5.) 스크립트를 실행 가능하게 만듭니다.
sudo chmod +x /usr/sbin/no-ip.sh
6.) no-ip-service를 init.d에 복사하세요.
sudo cp no-ip-service /etc/init.d/no-ip-service
7.) no-ip-service를 실행 가능하게 만듭니다.
sudo chmod +x /etc/init.d/no-ip-service
8.) 서비스 시작
sudo service no-ip-service start
9.) 부팅 시 시작할 서비스를 추가합니다.
update-rc.d no-ip-service defaults