고정 ip가 아닌 곳에서는 일반 유동ip로 서버를 가동하기 때문에 DDNS가 필요합니다. DDNS를 제공하는 많은 서비스들 중 CloudFlare는 DDNS뿐만 아니라 여러 설정을 할 수 있는 API를 제공하고 있어서 좋습니다.
전문가라면 API를 이용해서 쉽게 사용할텐데, 저 같은 일반인들은 API를 이용하는게 여러모로 어려워서 커스텀으로 제작한 DDNS 프로그램을 찾아서 설치해봤으나 제대로 작동하지 않는 문제가 있었습니다.
우여곡절 끝에 찾은 방법은, EXE 형태가 아닌 PowerShell 형식으로 된 스크립트를 이용하여 소켓통신(아마도…)으로 DDNS Update를 전송하는 것으로 보입니다.
PowerShell 소스 (https://goo.gl/91Smjn)
문제는 PowerShell을 작업스케줄러에 실행으로 넣으면 메모장에서 실행된다는 것입니다. 그래서 찾은 해결방법은 BAT 파일로 한번 거쳐서 PowerShell을 실행합니다.
@echo off Powershell.exe -noprofile -executionpolicy bypass -file “실행하고자 하는 PowerShell 스크립트 경로 exit
위의 소스를 메모장에 복사·붙여 넣기 한 다음에 파일이름.BAT를 붙이면 됩니다.
이 방법을 사용하면 바로 동작하는가 싶지만 오류가 발생합니다.
이는 BAT 파일의 오류가 아니라 한번 거쳐서 실행되는데
위의 원문 블로그에서 API에 전송하는 소스와 이를 실행하는 코드가 나누어져 있고,
여기에서 경로 문제가 발생하기 때문입니다.
이 때는 PowerShell 스크립트 하나에 다 몽땅 넣어주면 됩니다.
쉽게 말하자면
Import-Module .\CloudFlareDynDns.psm1Update-CloudFlareDynamicDns -Token 1234567893feefc5f0q5000bfo0c38d90bbeb -Email example@example.com
이런식으로 별도로 API에 전송하는 소스를 import 할게 아니라
아래와 같이 한꺼번에 몰아서 넣어주면 됩니다.
그런데 KT에서 렌선을 뽑지 않는 이상 IP회수는 잘 안해가서 굳이 안써도 될것 같습니다. 이도저도 모르겠다면 만들어둔 파일 받아서 사용하는게 장땡입니다.