1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

ヤマハルータのFQDN フィルター機能を外部へのサーバ公開に使うときは注意

Posted at

はじめに

自宅サーバの Let's encrypt 証明書の更新は certbot に任せていたはずなのに更新されてないよメールが飛んできたので、その対処をしたときのメモ。

切り分け

まず始めに自宅サーバで tcpdump -i eth0 -n を実行しながら certbot renew を実行してみる。
⇒何もパケットが飛んでこない。もちろん証明書更新は失敗。
⇒ルータのフィルタが原因か?でも前回の更新は成功して、そこからフィルタ設定変えてないよな?

フィルタをいったんガバガバにしてみる
【Before】
ip filter 11000 pass * yourserver.example tcp * 80,443
【After】
ip filter 11000 pass * * tcp * 80,443
⇒通った

念のため、外部サイトを使って名前解決結果と実アドレスが一致することを確認しておく。
http://www.cman.jp/network/support/nslookup.html
vs
ip address show dev eth0
⇒一致

これによって、使用しているヤマハルータのFQDNフィルター機能の仕様が原因では?と推察し、詳しく調べてみることにした。

原因

ヤマハルータのFQNフィルター機能は、ヤマハルータ自身がDNSリカーシブサーバとして解決し自身のDNSキャッシュに載っているFQDNについてのみ、動作する。
そのため、外部から特定のグローバルIPアドレス(yourserver.example)を持つサーバへの着信のみを許可したい場合に

ip filter 11000 pass * yourserver.example tcp * 80,443

と書いたとしても、yourserver.exmaple がヤマハルータ自身によって解決されDNSキャッシュされていない限り、
つまり、ヤマハルータ配下の他の端末によって yourserver.example の解決がリクエストされない限り pass しない。

対策

自宅サーバの cron にでも名前解決を突っ込んでおきましょう。

* * * * * dig yourserver.example >/dev/null

参照

FQDN機能

ip hostコマンドの設定値、dns staticコマンドの設定値、DNSキャッシュの順で検索します。

いやこの仕様読み取れんだろ・・・

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?