FreeBSD / OPNsense

OPNsense / FreeBSD based firewall

$Date: 2021/05/14 01:23:20 $

ipfwからOPNsense(pf)へ乗り換え

過去なんども透過型Firewallが必要になることがあり、クリティカルな部分はJuniper SSG/NetScrennシリーズを使って来ましたが、予算の都合があったり、ちょっとした部分にはFreeBSD + ipfwで透過型firewallを構築してきました。 今回(2018年9月の話)も透過型Firewallが必要になったので、いつものように手持ちの余剰マシン(Let's note CF-J10 , Corei5 4GB RAM)+FreeBSD+ipfwで透過型Firewallの構築に挑戦するも、なぜか思い通りに動かない....Raspberry Pi2が余っていたので、これでipfwを動かすと「動く」けど「使い物にならない」。通常下りで100Mbpsを越えるものがRaspi F/Wを経由すると数Mbps程度に...流石にこれではね。

いろいろと試しながら調べながらの過程でOPNsenseなるFreeBSDベースのFirewallがあることを発見。 透過型Firewallもできるようなので、さっそく挑戦してみることにしました。

OPNsense

OPNsenseの特徴は....()は個人の感想です

  • FreeBSDベース (個人的にGood!! 今回OPNsenseをチョイスした最大の理由)
  • pfベース (ipfwじゃない。当然 iptablesでもない。ipfwになれている自分..)
  • GUIで管理できる (あまり好きじゃない。本当はテキストベースでルールを記述したい)
  • OPNsenseの祖先は m0n0wallであり、pfsenseと兄弟。pfsenseはアプライアンスとして製品に組み込まれ販売されている。それも比較的安価。研究費でも買える。
  • Firewall/NATだけでなく、他にも様々な機能(Caching Proxy...透過型もできる, Anti Virusなど)を装備(一部、プラグインの有効化が必要)
  • HA(CARP)にも対応

OPNsenseのインストール

仮想環境(自分が使えるのはVMware 6.5かQNAPのVirtualization Station)か物理マシンにインストールかを悩んだ末に、レスポンスを求めることにしたので、物理マシンにダイレクトにインストールことに決意。HP Microserver , AMD II Neo N36L (2core), 4GB, SATA HDD, 内蔵NIC (gbe)にPCI expressのLANカードを増設。これまでFreeBSD 8.4を動かしていたマシンなので、FreeBSD 11.xも動くであろうとの予想。

公式サイトのDownloadからISOをダウンロード。 このダウンロードページではアーキテクチャとファイルのイメージタイプ、ダウンロード先のミラーサイトを選択します。 今回、私の場合は amd64、dvdを選びました。 次にダウンロードしたファイルDVD-ROMに焼いてインストールの準備完了。 インストールするマシンにDVDをセットして電源ON(と、ここまではいつもの手順)。

で、ここからが若干他のOSのインストールとは手順が違います。 通常(OSのインストールなど)は、OSの入ったCD-ROM,DVDから起動すると、そのままインストール作業に入りますが、OPNsenseの場合はOPNsenseがライブ状態で起動します。 FreeBSDが起動して、しばらくすると Login: と Password: が表示されます。(この時点ではDVDからライブ状態でOSとOPNsenseが起動しているだけで、HDDにはまったくインストールされていません

この状態でOPNsenseはNATとしてライブ起動しています。WAN側はDHCPクライアントでIP取得、LAN側にはスタティックIP (192.168.1.1/24)、DHCPサーバ有効の状態になりますので、LAN側に接続された端末から http://192.168.1.1をアクセスすると、GUIで設定ができるようになります。DVDからのライブ起動の状態でも、GUIにアクセスでき設定できますので、ここで勘違いしないようにしないといけません(私は最初気づかずに、無駄な時間を.....)

HDDにインストールするにはコンソール画面でユーザ名: installer、パスワード:opnsenesでログインします。HDDにインストールが開始されます。後は対話形式でWAN, LANのインタフェースの選択などを行えば、NATの状態でOPNsenseがインストールされます。 この後、GUIで設定を行います。

ueは使えなかった

Firewallの場合、ネットワークインタフェースが原則2つ必要になりますので、LANカードを追加する必要がありました。 私の場合、手持ちのUSB接続のNICを試してみました。FreeBSDからはue0で認識されました。しかし、なぜかueが使えないトラブルに遭遇。使ったBuffaloのUSB NICの個体あるいは固有の問題の可能性もあるので、amazonで他のメーカの同等製品を購入して試したところ、これもueとして認識されるものの、同じく使えず。 今回使う予定だったBuffaloのUSB NICは、過去にFreeBSD + ipfwの透過型firewallのLAN側として動いた製品(同じ個体)だったので、大丈夫と踏んでいたのですが...今回、使えない原因の詳細は不明です。 半年前まで、学生たちのYoutubeやLineのトラフィックをまかなっていたNICだったのですが。

代わりに用意したNICはこれ

PCIのLANカードはストックがあったので使えるかと目論んだが、当然ながら使えず(物理的に刺さらない)、PCI ExpressのLANカードを物色。PCI ExpressのNICはお高いかと思っていたら、1K円ちょっとのものがあったので、amazonでポチ!

FreeBSDからはreで認識されました。

インストールしようとしたHP Microserverには、これまでFreeBSD8.4が乗っていたので、そのままの状態で、このPIC-eのNICを認識させるとreで認識されるものの、ifconfigで見てみると media: 10Base との表示。 えっ、10Gbpsと思いきや、よく見るとGはなく無印10Mbps。 実際、スイッチに接続すると、スイッチ側でも10Mbpsの表示。 嫌な予感!? その後、FreeBSD 11にしたら、無事にre1Gbpsで動作しました。

仮想環境へのインストール

当然ながらNICをプロミスキャスモード(無差別モード)にするのをお忘れなく。

透過型firewallの設定

Transparent Filtering Bridgeを参考に設定を行いました。

注意点

  • 設定を変更し、保存する度に"Apply"と聞いてくるが、これは最後までクリックしない!
  • 上記のページのスクリーンショットは、少し前のOPNsenseのもので、最新版とは微妙にメニューが異なる。
  • 設定をミスるとGUIで操作できなくなるので、その場合はコンソールから設定リセット(工場出荷状態の戻す)あるいは、過去の設定に戻す必要があるため、設定時はコンソールを触れるようにしておくのが安心

注意点2 (OPT1 / bridge)のルール設定

  • LANインタフェース側にはアンチロックアウトルールが予め設定されています。
  • 透過型Firewallにする際に、OPT1(bridge0)にも、同様の設定をかけておかないと、OPNsenseにアクセスできなくなります。 LANの部分にルールを記述した(上図)のでOPT1側には記述しなくても問題ないように思えますが、OPT1にも必要です。
  • 他のルールはOPT1に設定を行う。

スループットも実用範囲

なんとか透過型Firewallとして動くようにし、最低限のFirewallの設定を行った後に、スループットを計測してみました。計測はGoogleのspeedtestです(Google Chromeでspeedtestで検索すると、表示される速度計測)。 100MBpsから200Mbps程度でていましたので、スループットも十分です。

LAN側の端末からネットワークの速度を計測
LAN側の端末からネットワークの速度を計測
Googleを利用
Hardware HP Microserver
スペック CPU: AMD II Neo N36L 2core, RAM: 4GB, HDD: 250GB SATA
NIC 内蔵 (bge) + TP-Link TG-3468 PCI express (re)
上流 SINET 熊本 (1Gbps専用線接続)

OPNsenseの良い点、悪い点

(個人的感想です)

良い点

  • インストールが簡単(NATとして稼働させるなら、設定をインストール後にほぼ何もいじる必要がない)
  • 製品並の機能を備えている。
  • 日本語化も可能(設定(GUI)で簡単に変更できる)。
  • 設定をしくじった場合(自分自身をロックアウトさせてしまった場合)、コンソールから直前の設定状態に戻せる。(実際には、過去の設定変更毎に設定ファイルが自動的にバックアップされており、その任意の段階に戻せる)(今回、この機能に何度もお世話になった)
  • レスポンスもよい(OSレベルでチューニングしているのかどうかは?)

悪い点

悪い点というより、個人的に気に入らない部分です(自分にとって都合の悪い点)。

  • bridge(透過型firewall)として利用する場合、LAN, WAN, OPT(bridge)の関係がよくわからず、自分自身でロックアウトを頻繁に喰らった(涙&笑)。最終的に分かったことは、何も考えずにOPTに記述すれば大丈夫。
印刷日: 2024-04-25 21:39:12
User:
URL: https://ketaitracker.info/blog/index.php?page=opnsense