OPNsenseでDDNSの自動更新のためにdyndnsというものを使っていますが、エラー吐いてうまく更新してくれなかったので、
解消法をこちらに残しておきます。
かなり単純すぎる間違いを起こしていたのであまり役に立たないかもしれないですが、
ご了承ください。
1. 基本
1.1. OPNsenseとは
m0n0wallからフォークされたものであり、オープンソースで作られているファイアウォールOSです。
このOPNsenseはFreeBSDベースで作られており、様々な種類の拡張機能があるのが特徴です。
また、pfsenseも同様にm0n0wallからフォークしたものですが、Electric Sheep Fencing
という企業に買収されているが開発が停滞状況になっているらしいです。
1.2. dyndnsとは
https://github.com/opnsense/plugins
ここのdns/dyndns以下にソースコードが書かれています。
Dynamic DNS SupportとあるようにDDNSに対応させるツールになります。
2. 環境
OPNsense version: OPNsense 19.7.9_1-amd64
OPNSense FreeBSDversion: FreeBSD 11.2-RELEASE-p16-HBSD
OPNSense os-dyndns: 1.18_1
2.1. 構成
–| ONU |—WAN—| OPNsense Router |—-LAN—| HomeNetwork |
WAN側(PPPoE側)のIPが変更されると自動検知し、dyndnsを用いて自動的に更新する。
更新させるDDNSサービスとしてDuckDNSを使用しています。
注意: ログのWAN側のIPは182以下はコメントで隠しているので注意してください。
3. 状況
これからログを取ります。
Jan 17 00:51:04 opnsense: /services_dyndns_edit.php: Dynamic DNS: (Unknown Response)
Jan 17 00:51:04 opnsense: /services_dyndns_edit.php: Dynamic DNS: PAYLOAD: KO
Jan 17 00:51:04 opnsense: /services_dyndns_edit.php: Dynamic DNS (mydomain.duckdns.org): Current Service: duckdns
Jan 17 00:51:04 opnsense: /services_dyndns_edit.php: Dynamic DNS (mydomain.duckdns.org): _checkStatus() starting.
Jan 17 00:51:02 opnsense: /services_dyndns_edit.php: Dynamic DNS (mydomain.duckdns.org via Duck DNS): _update() starting.
Jan 17 00:51:02 opnsense: /services_dyndns_edit.php: Dynamic DNS (mydomain.duckdns.org): running dyndns_failover_interface for wan. found pppoe0
Jan 17 00:51:02 opnsense: /services_dyndns_edit.php: Dynamic DNS (mydomain.duckdns.org): 182.*.*.* extracted
Jan 17 00:51:02 opnsense: /services_dyndns_edit.php: Dynamic DNS: updatedns() starting
このようになりました。
以上のようにWAN側のIPアドレスはしっかり取れているので、取得自体には問題なさそうですがなぜかUnknown Responseと返ってきています。
4. 原因
Service->Dynamic DNS->MyService
DuckDNSの場合は Username にTokenが書かれています。
このTokenが間違っているかもしれないということで、DuckDNSにログインして確認してみると当たっていました。
Token部分を修正して設定を反映させるとしっかりと動いてくれるようになりました。
修正後の成功時の状態は以下のようなログになります。
Jan 17 01:17:53 opnsense: /services_dyndns.php: Dynamic DNS: (Success) IP Address Updated Successfully!
Jan 17 01:17:53 opnsense: /services_dyndns.php: Dynamic DNS: updating cache file /var/cache/dyndns_wan_mydomain.duckdns.org_0.cache: 182.*.*.*
Jan 17 01:17:53 opnsense: /services_dyndns.php: Dynamic DNS (mydomain.duckdns.org): 182.*.*.* extracted
Jan 17 01:17:53 opnsense: /services_dyndns.php: Dynamic DNS (mydomain.duckdns.org): Current Service: duckdns
Jan 17 01:17:53 opnsense: /services_dyndns.php: Dynamic DNS (mydomain.duckdns.org): _checkStatus() starting.
Jan 17 01:17:52 opnsense: /services_dyndns.php: Dynamic DNS (mydomain.duckdns.org via Duck DNS): _update() starting.
Jan 17 01:17:52 opnsense: /services_dyndns.php: Dynamic DNS (mydomain.duckdns.org): running dyndns_failover_interface for wan. found pppoe0
Jan 17 01:17:52 opnsense: /services_dyndns.php: Dynamic DNS (mydomain.duckdns.org): 182.*.*.* extracted
Jan 17 01:17:52 opnsense: /services_dyndns.php: Dynamic DNS: updatedns() starting
5. まとめ
このようにログではなかなかわかりにくいメッセージが出ていましたが少しでも参考になれば幸いです。