本文は「FreeBSD Advent Calendar 2017」の10日の記事です。
https://adventar.org/calendars/2797
1.事の発端
職場のメール環境は某大手メーカーが提供しているメールサービス上(本文では以降「クラウド」と書きます。)にあるのですが、FreeBSD上で構成したルータの/etc/rc.firewallにSMTP/IMAP用の穴をあけときました。
${fwcmd} add allow tcp from LOCAL-IP to SMTP-SERVER smtps,submission setup
${fwcmd} add allow tcp from LOCAL-IP to IMAP-SERVER imaps,pop3s setup
これなんですが、、、 専用サーバなら問題ないんですが、クラウドだとダメだったりします。実際設定直後は動作していましたが、しばらくして確認したらダメになっとりました。
理由は簡単です。クラウドサービスはIPアドレスがたまに変わります。
FreeBSDのFirewall(ipfw)は、hostnameを指定した場合でも名前参照は初回のみで、IPアドレスが変わっても動的に変化しません。
http://www.jp.freebsd.org/man-jp/search.html
日本語マニュアル RELEASE 10-1-RELEASE-K
ipfw抜粋
numeric-ip | hostname
ドットで区切った数字 4 つ組またはホスト名で指定した、1 つ
の IPv4 アドレスが適合します。ホスト名の名前解決は、その
規則がファイアウォールのリストに追加されるときに行われま
す。
つまり、最初に挙げた設定は、専用サーバなら問題ありませんがクラウドだとダメなんですね。
2.DNSを監視してルールを追加削除する必要あります
同様の事で困った方はいるだろうと思ってMLの「FreeBSD-users-jp」に尋ねてみました。
https://lists.freebsd.org/pipermail/freebsd-users-jp/2017-March/001055.html
[FreeBSD-users-jp 96055] DNSを監視して動的にipfwのルールを追加/削除するツール.
すぐに回答いただきました!
https://lists.freebsd.org/pipermail/freebsd-users-jp/2017-March/001056.html
[FreeBSD-users-jp 96056] Re: DNSを監視して動的にipfwのルールを追加/削除するツール.
ありがどうございます。
3.実は、、
私のメール自動仕分けの設定が悪かったがため、メールを見落としていました(;_;)
返事がないと思い込み、自作のツールを作成していました。 せっかく作ったのでこちらで公開しています。
一応履歴機能がありまして、IPアドレスが変化してもしばらくは古いIPアドレスのルールを覚えている機能があります。
https://github.com/githubmatumoto/ipfw-dns-kanshi
ipfw-dns-kanshi
よろしければどうぞ(^_^;
以上です。