네임 서버를 Cloudflare에서 DNSZi로 변경했다.
DSM DDNS에서는 기본적으로 DNSZi DDNS 사용이 불가능하다.
실제로 변경된 IP가 정상적으로 반영되었는지까지는 확인이 안된다.
그래서 오류 없을 경우 강제로 good을 출력하여 정상적으로 인식되게 처리했다.
1. DSM 접속
2. 터미널 활성화
3. DSM에 SSH 터미널 접속
4. root 로 로그인
5. 실행할 php 파일 생성
vi /usr/syno/bin/ddns/dnszi.php
6. php 내용 작성 ( changeip.php 파일을 참고하여 작성함, 실패시 /root/ddns_log.txt 파일에 로그 남김 )
#!/usr/bin/php -d open_basedir=/usr/syno/bin/ddns
<?php
if ($argc !== 5) {
echo 'badparam';
exit();
}
$account = $argv[1];
$pwd = (string)$argv[2];
$hostname = (string)$argv[3];
$ip = (string)$argv[4];
// check the hostname contains '.'
if (strpos($hostname, '.') === false) {
echo 'badparam';
exit();
}
// only for IPv4 format
if (!filter_var($ip, FILTER_VALIDATE_IP, FILTER_FLAG_IPV4)) {
echo "badparam";
exit();
}
$url = 'http://ddns.dnszi.com/set.html?user='.$account.'&auth='.$pwd.'&domain='.$hostname.'&record=';
$req = curl_init();
curl_setopt($req, CURLOPT_URL, $url);
$res = curl_exec($req);
if(! $res = curl_exec($req))
{
echo 'badconn';
$log_file = fopen("/root/ddns_log.txt", "a");
fwrite($log_file, curl_error($req)."\r\n");
fclose($log_file);
}
else
{
echo 'good';
}
curl_close($req);
7. esc 키 누른 후 :wq 명령으로 파일 저장
8. 터미널에 붙여넣기
cat >> /etc.defaults/ddns_provider.conf << 'EOF'
[DNSZi]
modulepath=/usr/syno/bin/ddns/dnszi.php
queryurl=http://ddns.dnszi.com
EOF
9. DNSZi 인증키 생성 및 복사
10. DMS 제어판 - 외부 액세스 - DDNS - 추가 버튼
- 서비스 제공업체 : DNSZi 선택
- 호스트 이름 : 본인 도메인
- 사용자 이름/이메일 : DNSZi 계정
- 패스워드/키 : DNSZi 인증키 입력
11. 완료
댓글