본문 바로가기

리눅스

라즈베리파이에 DDNS 부여해서 고유 도메인 주소 주는 방법

라즈베리파이를 외부 인터넷에서 접속하고 싶어서 공유기에 포트포워딩은 어찌어찌 했는데... 공유기를 껐다 켜면 공인 IP가 바뀌어서 접속이 안된 경험 해보셨나요?

 

그리고 어디 나가서 내 라즈베리파이 서버에 접속을 할때에도 IP를 치고 들어가야 하기 때문에 뭔가모르게 내 IP가 만천하게 공개되는 것 같은 찝찝한 느낌은 지울수가 없더군요.

 

찾아보다가 발견한게 Duck Dns 라는 아주 좋은 사이트가 있어서 공유 합니다!

 

(공유기에 바깥 인터넷에서 접속 할 수 있게 포트포워딩을 안하신 분들은 포트포워딩 먼저 하고 이 글을 봐 주세요!)

 

 

Duck Dns 는 DDNS 를 무료로 해주는 사이트이며 기간도 제한이 없기 때문에 라즈베리파이와 같이 간단한 서버에 도메인을 주기 아주 유용합니다.

 

 

그럼 시작하겠습니다.

 

 

먼저 Duck Dns 사이트가 들어갑니다.

www.duckdns.org/

 

Duck DNS

Duck DNS free dynamic DNS hosted on AWS support us: become a Patreon new: moved forum to Google Groups

www.duckdns.org

 

여기 가보시면,

위와 같이 여러 로그인 방식이 있는데 뭐든 상관 없습니다.

 

가입하면서 로그인을 합시다.

 

 

자 이제 로그인을 하시면,

 

아래와 같이 바로 주소를 부여할 수 있는 화면이 나옵니다.

저는 실제 쓰고있어서 빨갛게 가렸는데..

 

윗쪽 검은 부분에 원하는 도메인을 입력하고 add domain 버튼을 누르면 http://원하는이름.duckdns.org 로 도메인이 만들어 집니다.

 

그리고 아랫쪽에 한줄이 추가 되었을 텐데, 여기서 current ip 부분에 현재 나의 공인 IP 주소를 넣어주고 update ip 버튼을 눌러줘야 합니다. 그래야 내 공인IP가 도메인 주소와 매칭이 되면서 인터넷에서 접속을 할때 도메인 주소를 치면 내 공인 IP로 연결을 해서 라즈베리파이로 들어올 수가 있게 됩니다.

 

여기까지 한 후 도메인주소에 ssh 22번포트던 http 던 본인이 열어놓은 포트로 접속을 해보시면 아마 접속이 될겁니다!

 

현재는 잘 되긴 하나... 맨 위에서 언급했던 것처럼 집 공유기를 껐다켜면 내 공인 IP가 랜덤하게 바뀌게 됩니다. 그러면 그때 또 내 공인IP 를 찾아가지고 이 사이트에 입력을 해줘야 하느냐?

 

네, 그렇게 하셔도 되긴 합니다.

 

근데 매번 너무 번거롭죠.. 그래서 duck dns 사이트에서 duck.sh 을 제공하고 있습니다.

 

www.duckdns.org/install.jsp

 

Duck DNS - install

linux cron if your linux install is running a crontab, then you can use a cron job to keep updated we can see this with ps -ef | grep cr[o]n if this returns nothing - then go and read up how to install cron for your distribution of linux. also confirm that

www.duckdns.org

여기로 가서 linux cron 으로 된 것을 보시면 방법이 나와 있는데 아래에 제가 다시한번 설명 하겠습니다.

(일단 crontab 은 라즈베리파이에 설치가 되있어야 합니다)

 

mkdir -p ~/duckdns

~/duckdns 위치에 폴더를 하나 만듭니다.

 

그리고 ~/duckdns 폴더로 들어와서,

vi duck.sh

로 쉘을 하나 만들어 줍니다.

 

 

duck.sh

echo url="https://www.duckdns.org/update?domains=exampledomain&token=a7c4d0ad-114e-40ef-ba1d-d217904a50f2&ip=" | curl -k -o ~/duckdns/duck.log -K -

 

쉘 내용은 위와 같고 내용을 자세히 보시면,

 

exampledomain 이라고 써있는 부분에 본인이 조금 전에 정한 도메인 이름을 넣어줍니다. (예 : mydomain.duckdns.org 이면 mydomain 만 입력)

 

그리고 token= 이라고 되어있는 부분에 아까 duck dns 사이트 로그인 후에 오리 그림 옆에 보시면 본인의 Token 이 있습니다. 그 값을 저 예시 토큰 대신에 집어 넣어 줍니다.

 

여기까지 했으면

:wq! 로 저장하고 빠져 나옵니다.

 

 

이제 duck.sh 권한을 바꿔 줍니다.

chmod 700 ~/duckdns/duck.sh

 

그리고,

crontab -e

위 명령어로 크론탭으로 들어가 줍니다.

 

 

그리고,

*/5 * * * * ~/duckdns/duck.sh >/dev/null 2>&1

위와 같이 입력해 주고 저장하고 빠져 나옵니다.

 

그러면 5분에 한번씩 ~/duckdns/duck.sh 을 실행하게 됩니다.

 

이 쉘은 공인 IP 주소를 duckdns 쪽으로 보내주기 떄문에 만약 내 공유기가 꺼졌다 켜져서 나의 공인IP 가 바뀌더라도 5분내로 저 쉘이 돌아 새 공인 IP 주소를 다시 duckdns로 보내줄겁니다!

 

 

이제 테스트를 해 보겠습니다.

sh ~/duckdns/duck.sh

쉘 실행!

 

그리고,

cd ~/duckdns

 

위치로 가보시면 duck.log 가 하나 있을텐데 이 파일을

cat ~/duckdns/duck.log

cat으로 열었을 때 OK 가 출력되면 잘 된겁니다.

 

KO가 뜨면 잘못된 것이니 이땐 처음부터 차근차근 다시해보시길 권장 합니다.

 

 

그럼 무료 DDNS 적용 끝.