ddclientでGoogle DomainsにグローバルIPを通知する
Table of Contents
Google DomainsでDDNSを利用するときのグローバルIPの通知の仕方
概要
うちは固定IP契約をしていないので、サーバの運用上DDNSを利用しているのだが、これまでは独自ドメインからYAMAHAのネットボランチサービスで取得したドメインへと転送していた。
ネットボランチDNSサービスとは、ヤマハが提供するDDNS(Dynamic Domain Name System)サービスです。
ネットボランチDNSサーバーに、グローバルIPアドレスなどを登録することにより、常に同じホストアドレス(または、ネットボランチ電話番号)で、グローバルIPアドレスの名前解決ができるようになります。
ダウンタイムが0というのが魅力で、これまでネットボランチDNSサービスのドメインを使っていたが、そもそもグローバルIPは頻繁に変わるものではないし、流石にドメイン名が長くて面倒だったので、ドメインを契約しているGoogle DomainsのDDNSサービスを利用することにした。
ツール選定
Google DomainsのIP通知はdyndns2プロトコルに対応している。(どこぞのDNSプロバイダは専用のWindowsクライアントからしか通知できないクソ仕様だったが)
この時点でいくつかクライアントの候補はあったが、「ddns client container」と検索してぱっと目についたddclient1というddnsクライアントを今回は採用することにした。
手順
Google Domains側での準備
コンソールからドメインを選択後、左のタブから「DNS」→「詳細設定を表示」→「ダイナミックDNSの管理」とクリックして、レコードを作成しておく。
また、後で必要になるので認証情報(ユーザー名&パスワード)を控えておく。
ddclientデプロイ
secretリソースにddclientの設定情報を埋め込んでコンテナにマウントする。
apiVersion: v1
kind: Secret
metadata:
name: ddclient-secret
stringData:
ddclient.conf: |
daemon=60 # 通知の間隔(秒)
syslog=yes
verbose=yes
ssl=yes
protocol=googledomains
use=cmd,cmd='curl -s ipv4.myonlineportal.net/checkip'
server=domains.google.com
login=xxx
password=xxx
4nm1tsu.com # 最後にドメイン
type: Opaque
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: ddclient
labels:
app: ddclient
spec:
replicas: 1
selector:
matchLabels:
app: ddclient
template:
metadata:
labels:
app: ddclient
spec:
containers:
- name: ddclient
image: linuxserver/ddclient:latest
volumeMounts:
- name: config-volume
mountPath: /defaults/ddclient.conf
readOnly: false
subPath: ddclient.conf
volumes:
- name: config-volume
secret:
secretName: ddclient-secret
通知の間隔はdaemon
に秒単位で指定。
login
とpassword
には先程控えたユーザ名とパスワードを入力する。
また、
syslog=yes
verbose=yes
としておくと、以下のようにしてIP通知のログが見れる。2
...
SUCCESS: 4nm1tsu.com: skipped: IP address was already set to xxx.xxx.xxx.xxx.
SUCCESS: 4nm1tsu.com: skipped: IP address was already set to xxx.xxx.xxx.xxx.
...
念の為Google Domainsのコンソール側でも同様のIPが通知されているかを確認したらおしまい。