공유기의 외부 IP 주소
가정용 공유기의 초기 설정으로는 외부 인터넷 망에서 공유기 내부망으로 접속할 수는 없습니다. 그러나 포트 포워딩(port forwarding)으로 내부망의 IP주소와 그 IP 주소에 속한 포트를 외부에 열어 둘 수가 있습니다. 이 때 공유기의 외부 IP 주소와 열려 있는포트를 사용하여 공유기 내부로 접속할 수 있습니다. 문제는 공유기의 외부 IP 주소가 통신사의 사정에 따라 변경될 수 있다는 점입니다.
duckdns.org에서 도메인을 이용하면 좋은 점
즉 gildong777.duckdns.org과 같은 도메인을 사용할 수 있습니다. 여기서 gildong777 부분은 중복되지 않는 이름으로 지정해야 합니다.
도메인 gildong777.duckdns.org에 공유기의 외부 IP 주소인211.201.39.xxx를 연결해 두면 도메인 이름으로 공유기에 접속할 수 있게 됩니다.
공유기 안에 있는 라즈베리 파이에 duckdns.org용 소프트웨어를 설치하여 공유기의 외부 IP주소를 도메인 gildong777.duckdns.org에 주기적으로 알려주도록 하면 됩니다. 그러면 공유기의 외부 IP주소를 통신사에서 바꾸더라도 금방 새로운 주소가 gildong777.duckdns.org에 등록되게 됩니다.
duckdns.org 에 도메인 등록하기
로그인하면 도메인 등록 화면이 나옵니다. 원하는 ID를 입력하고 add domain 버튼을 누르면 도메인이 등록됩니다.
current ip 아래에 공유기의 외부 IP주소를 입력하고 update ip 버튼을 누르면 됩니다.여기서는 수동으로 공유기의 외부 IP를 등록하였지만, 공유기 안의 라즈베리 파이에 공유기 외부 IP 갱신 소프트웨어를 설치하여 주기적으로 자동 갱신합니다.
라즈베리 파이에 공유기 외부 IP 갱신 소프트웨어 설치하기
먼저 라즈베리 파이에 PuTTY로 로그인합니다.
만약 이미 로그인 중이라면 다음 명령어로 홈 디렉토리로 이동합니다.
cd ~
다음 명령어를 차례대로 실행합니다.
mkdir duckdns
cd duckdns
nano duck.shnano는 파일을 편집하는 명령어 입니다. 그래서 다음과 같은 편집 화면이 나타납니다.
다음 명령어를 복사하여 PC의 노트패드에 붙여 넣은 후, 도메인은 gildong777.duckdns.org와 같이 본인의 것으로 바꾸고, 토큰은 로그인 화면의 token의 값으로 바꿉니다. 작업 결과를 클립보드에 복사해 둡니다.
echo url="https://www.duckdns.org/update?domains=도메인&token=토큰" | curl -k -o ~/duckdns/duck.log -K -
편집창에 마우스를 옮긴 후, 마우스의 오른 쪽 버튼을 눌러서 앞에서 준비한 클립보드의 내용을 붙여 넣습니다. 다음에 ctrl+o를 누릅니다. File Name to Write: duck.sh가 나타나면 Enter 키를 누른 후, ctrl+x를 누르면 명령어 입력 화면으로 돌아옵니다.
다음 명령어를 입력하면 duck.sh가 실행 가능한 스크립트가 됩니다.
chmod 700 duck.sh
다음 명령어를 입력하면 crontab(자동 수행 기능) 편집을 시작합니다.
crontab -e
다음과 같은 화면이 나오면 1을 입력합니다.
다음과 같은 편집화면이 나타납니다.
다음 명령어를 복사하여 편집화면의 맨 아래에 붙여 넣습니다. 붙여 넣을 때에는 ▼ 키를 눌러서 맨 아래로 이동한 후, 마우스의 오른 쪽 버튼을 누르면 됩니다.
*/5 * * * * ~/duckdns/duck.sh >/dev/null 2>&1ctrl+o, Enter, ctrl+x키를 차례로 누르면 명령어 입력 화면으로 돌아 옵니다.
다음 스크립트를 실행합니다.
./duck.sh
다음 명령어를 입력하여 결과가 OK가 나오면 제대로 된 것이고, KO가 나오면 잘못 된 것입니다.
cat duck.log
만약 위 명령어의 수행 결과가 OK라면 앞에서 지정한 도메인과 토큰이 올바르다는 의미입니다. 이제 다음 명령어를 실행하면 5분 간격으로 공유기의 외부 IP 주소를 duckdns.org에 갱신하게 됩니다.
sudo service cron start