Cisco 891FJでDuckDNSのDDNSを更新する
VPN周りの設定を入れるにあたり、ついでにDDNSの更新も891FJにやらせました。
IPv4 CBAC設定
- DuckDNS宛通信の戻りを許可するためCBACを定義する。WAN側inにACLがかかってない場合は不要
- CBACを使う理由は以下2点
- Reflexive ACLだとルーター発の通信は評価されない
- DuckDNSのIPアドレスは固定されてるとは限らないので普通のACLだと開けにくい
# 参照するDNSサーバの指定
ip name-server 8.8.8.8
ip name-server 8.8.4.4
# tcp/udp通信をCBACで評価。router-trafficをつけるとルーター発の通信も評価される
# httpやdnsといった単位でもCBACで評価できるが、router-trafficの設定が無い
# この設定を入れると内部からの通信が全開になるので、必要に応じてACLでoutを絞り込む
ip inspect name ROUTER-CBAC tcp router-traffic
ip inspect name ROUTER-CBAC udp router-traffic
# WAN側InterfaceにCBACをかける。フレッツだったら大抵Dialer1
interface GigabitEthernet8
ip inspect ROUTER-CBAC out
exit
テストしてみる
# httpなら通るはず
copy http://www.duckdns.org/img/ducky_icon.png flash:ducky.png
# うまく行ったら消す
delete flash:ducky.png
# httpsは証明書検証に失敗してI/O errorが出るはず
copy https://www.duckdns.org/img/ducky_icon.png flash:ducky.png
https用CA設定
- DuckDNSはAmazonの証明書を使っているのでそれを信用する
- 本来ならルートCA証明書を信頼すべきだが、うまく動かなかったので中間CA証明書のCA1Bを信頼する
# trustpointの定義
crypto pki trustpoint AMAZON-CA1B
enrollment terminal
exit
crypto pki authenticate AMAZON-CA1B
# ここで https://www.amazontrust.com/repository/R1-ServerCA1B.pem の中身を貼り付ける
テストしてみる
# 今度はhttpsも動くはず
copy https://www.duckdns.org/img/ducky_icon.png flash:ducky.png
# うまく行ったら消す
delete flash:ducky.png
なにかおかしい時は debug ssl openssl errors
を入れてからログを見てみる
DDNS設定
# DDNS定義
ip ddns update method DDNS-DUCKDNS
# IPアドレスが変わっていなくても更新を投げる間隔。1時間に1回
interval maximum 0 1 0 0
# IPアドレスがものすごい頻度で変わってもこの時間は待つという間隔。最低1分は間隔あける
interval minimum 0 0 1 0
# 定期的に叩くURLの定義
HTTP
# DuckDNS側のURL。普通に入力すると ? が入力できないので、必ずコピペで入力する
# なおmacで試したがコピペでも ? が入力できなかったので後でテキストエディタ経由でいじる
# また、DuckDNSの仕様として、パラメータにIPアドレスを指定しない場合は送信元IPアドレスをAレコードに設定してくれる
# ここのURLに<a>や<h>を使うと適宜置き換えられるらしい(未検証)
add https://www.duckdns.org/update?domains=<ドメイン名>&token=<トークン>
exit
exit
# DDNSの通信を出すInterfaceの紐付け
interface GigabitEthernet 8
ip ddns update DDNS-DUCKDNS
exit
URLにどうやっても ? が打てなかった場合、USBメモリを挿して以下を行う
# config保存
copy running-config startup-config
# USBメモリをフォーマット
format usbflash0:
# 保存したconfigをUSBメモリにコピー
copy startup-config usbflash0:startup-config
ここでUSBメモリを適当な端末に繋ぎ直し、configをいじって ? を入れる
# 終わったら書き戻す
copy usbflash0:startup-config startup-config
# 保存されてるか見てから再起動
show startup-config
reload
なにかおかしい時は debug ip ddns update
を入れてからログを見てみる
おわりに
忘れずに no debug all
でデバッグログを全部切る