EdgeRouter LiteにFreeBSDをインストール - DS-Lite編では、FreeBSDをインストールしたEdgeRouter LiteをDS-Lite接続のためのゲートウェイとして用いるための設定について説明しました。

DS-Lite接続の導入により、混雑が最もひどくなる夜間についても快適にネットを利用できるようになりました。正確には測っていませんが、遅くても10Mbpsくらいはでているようです。参考までに、PPPoEとIPoE+DS-Lite接続でのping応答時間の違いを計測してみましたが、その差は一目瞭然です。通信速度の測定結果ではありませんが、PPPoE接続が夜間に混雑していることがよくわかると思います。

さて、速度的には満足のいく結果となりましたが、いまのままではファイアウォールが有効になっておらず、セキュリティ的な不安があります。(FreeBSDはデフォルトではファイアウォールが有効になっていません。)

FreeBSDにはipfw (IP Firewall), ipfilterおよびpf (Packet Filter)という3種類のファイアウォールが用意されており、ユーザが好きなものを選択して使うことができます。今回は、EdgeRouter Lite上のFreeBSDにファイアウォールを設定するわけですが、いまのところEdgeRouter Liteではipfwがうまく動作しないようです(カーネルモジュールのロード時にエラーが発生してしまいます)。 ipfilterは使ったことがなく、ネット上の情報も少ないようなので、OpenBSD由来のpfを使ってみることにしました。

特にサーバを公開するわけでもない(というか、DS-Lite接続ではトンネル終端装置のグローバルアドレスをユーザが共有することになりますので、サーバ公開はできません)ので、以下のポリシーで最低限のルールを設定することにします。

これにそって作成したファイアウォールルールを以下に示します。

次に、ファイアウォールを有効化する方法ですが、デフォルトでインストールされているため、非常に簡単です。pf自体の有効化のため、およびログ出力のための設定を/etc/rc.confに追記すればOKです。

ログはデフォルトで/var/log/pflogに、テキストではなくバイナリで出力されます。内容を確認するにはtcpdumpコマンドを用いますが、いちいちtcpdumpを起動するのが面倒なので、こちらを参考にして、テキストファイルとして出力するようにしました。以下の各行を/etc/rc.localおよび/etc/syslog.confに追加します。

以上でファイアウォールの設定は完了です。EdgeRouterを再起動すればファイアウォールが有効になります。

参考文献

  1. OpenBSD PF - User’s Guide, https://www.openbsd.org/faq/pf/
  2. Building The Network You Need With PF, The OpenBSD Packet Filter: Log To Syslog, https://home.nuug.no/~peter/pf/newest/log2syslog.html