리눅스

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

란스 2021. 1. 19. 23:56

라즈베리파이를 외부 인터넷에서 접속하고 싶어서 공유기에 포트포워딩은 어찌어찌 했는데... 공유기를 껐다 켜면 공인 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 적용 끝.