SSブログ

Unboundを有効活用する その5 (FreeBSD 13.3R、2024/04/12) [FreeBSD]

muninの設定としては、こんな感じで。controlなどの設定はFreeBSDのlocal_unboundの初期設定でちゃんと面倒みてくれているはずですが、心配なら、/usr/sbin/local-unbound-control statusを実行して、ちゃんと結果が返ってくることを見ておけば良いです。
unbound.stateの指定は、私が参考にしたWebから設定を流用したため、しばらく間違ったまま運用していたのですがその際も可視化できていたので、実際に有効な設定なのかよくわかりません。
root@MyFreeBSD:~ # cat /usr/local/etc/munin/plugin-conf.d/plugins.conf
[unbound*]
user root
env.statefile /var/munin/plugin-state/root/unbound.state
env.unbound_conf /etc/unbound/unbound.conf
env.unbound_control /usr/sbin/local-unbound-control

結果はこんな感じで、ちゃんと可視化できていますね。端末が多ければもっと派手にグラフが立ち上がるのでしょうが、こんなものでしょう。
20240412_unbound_munin_hits-week.png








タグ:Unbound FreeBSD
nice!(0)  コメント(0) 
共通テーマ:日記・雑感

Unboundを有効活用する その4 (FreeBSD 13.3R、2024/04/12) [FreeBSD]

ちゃんと動けば、あとはDHCP払い出しでのDNSサーバに追加するだけです。これはその2で示したように、障害時などの冗長性を考えて設定します。

次に、ここからは完全オプションですが、Unboudの統計情報をmuninで可視化してみます。muninについては、基本的な可視化(情報収集やWebサーバでの公開)は、既に実現できているものとします。
muninには標準で可視化用のpluginが多数用意されており、FreeBSDの場合、pkgから導入すると /usr/local/share/munin/plugins/ 配下にインストールされます。ここでのポイントとしては、Unbound用のpluginはmunin標準では提供されず、Unbound側の成果物として提供されていることです。

うれしいことに、FreeBSDのlocal-Unboundでも、munin用のpluginはきちんと配布物に包含されています。分かりにくいですが具体的な場所は以下となります。
/usr/src/contrib/unbound/contrib/unbound_munin_

muninを設定した人なら分かると思いますが、自分が可視化したい情報(plugin)をシンボリックでpluginの実体に紐付ける設定構造になっています。これはシンボリックの名前の付け方で対象を指定する設定構造となっており、理にかなっていますね。
たとえば「if_」の実体に対し、「if_re0」でリンクを張ればインタフェース「re0」が可視化対象になるといった感じです。
root@MyFreeBSD:~ # ll /usr/local/etc/munin/plugins/
total 0
lrwxr-xr-x  1 root  wheel  34 Jun 12  2022 cpu@ -> /usr/local/share/munin/plugins/cpu
lrwxr-xr-x  1 root  wheel  39 Jul  2  2022 dev_cpu_freq@ -> /usr/local/share/munin/plugins/dev_cpu_
lrwxr-xr-x  1 root  wheel  33 Jul  1  2022 df@ -> /usr/local/share/munin/plugins/df
lrwxr-xr-x  1 root  wheel  42 Jun 12  2022 if_errcoll_re0@ -> /usr/local/share/munin/plugins/if_errcoll_
lrwxr-xr-x  1 root  wheel  42 Jun 12  2022 if_packets_re0@ -> /usr/local/share/munin/plugins/if_packets_
lrwxr-xr-x  1 root  wheel  34 Jun 12  2022 if_re0@ -> /usr/local/share/munin/plugins/if_
....


Unboundのplugin構造もそういった構造になっており、一つのpluginの実体に対し、リンクの張り方で取得する情報を指定できるようになっています。具体的な名前の付け方はドキュメント等に書いてあると思われますが、pluginの中を覗けば分かるようになっています。(cat等でそのまま中を見ればOK)
私の今のバージョンだと、unbound_munin_hits、unbound_munin_queue、unbound_munin_queue、
unbound_munin_memory、unbound_munin_by_type....(以下略)など、いろいろ指定できるようです。

その5へ続く。





タグ:Unbound FreeBSD
nice!(0)  コメント(0) 
共通テーマ:日記・雑感

Unboundを有効活用する その3 (FreeBSD 13.3R、2024/04/08) [FreeBSD]

不具合の状況がよく分からないので、まずはログですね。以下を追加してログを残すようにします。なお、chroot環境なので、ログのひな形を事前touchする際は作成場所の注意が必要です。
root@MyFreeBSD:/etc # cat /etc/unbound/unbound.conf
server:
        verbosity: 1
        logfile: /var/log/unbound.log


で、分かったのは以下の大量のエラーが表示されているということ。
[1712290383] local-unbound[40359:0] info: generate keytag query _ta-4f66. NULL IN
[1712290384] local-unbound[40359:0] info: failed to prime trust anchor -- could not fetch DNSKEY rrset . DNSKEY IN
[1712290384] local-unbound[40359:0] info: generate keytag query _ta-4f66. NULL IN
[1712290384] local-unbound[40359:0] info: failed to prime trust anchor -- could not fetch DNSKEY rrset . DNSKEY IN
[1712290384] local-unbound[40359:0] info: generate keytag query _ta-4f66. NULL IN
[1712290384] local-unbound[40359:0] info: failed to prime trust anchor -- could not fetch DNSKEY rrset . DNSKEY IN
[1712290384] local-unbound[40359:0] info: generate keytag query _ta-4f66. NULL IN
[1712290384] local-unbound[40359:0] info: failed to prime trust anchor -- could not fetch DNSKEY rrset . DNSKEY IN
[1712290384] local-unbound[40359:0] info: generate keytag query _ta-4f66. NULL IN
[1712290384] local-unbound[40359:0] info: failed to prime trust anchor -- could not fetch DNSKEY rrset . DNSKEY IN

DNSSEC絡みか…とちょっと頭が痛い感じです。最近、DNSSEC関連のトラブルはよく聞きますよね。私は正直なところあまり理解できてないです。エラーメッセージはGoogle検索してみたのですが、これといった有力な解決策は提示されていない感じです。
ただ、個人的な感覚として、そもそもコンフィグファイルで設定されている内容がほとんどなく、ルートキー関連の設定も問題なさそうなので、ハマる要素はないように思えるのですが。。。

で、Google見つけた回答(翻訳)ですが、「フォワーダーに設定しているISPのDNSサーバがDNSSECに対応していないので、DNSSEC自体を無効にすればいいよ」というものです。確証はないですが、私もなんとなくそんな気がしました。(笑)
DNSSECを無効化するにはauto-trust-anchor-fileの設定をコメントアウトすれば良いので、修正してサービスを再起動します。
…うまく動きました。

その4へ続く。

タグ:Unbound FreeBSD
nice!(0)  コメント(0) 
共通テーマ:日記・雑感

Unboundを有効活用する その2 (FreeBSD 13.3R、2024/04/07) [FreeBSD]

そういえば、やりたいことを説明していませんでした。
やりたいことはUnboundを自宅内のキャッシュDNSサーバとして稼働させることです。FreeBSDサーバ機自身だけでなく、DHCP等で家庭内にアドレス配布し、Windows機、スマートホンなどにも使わせるイメージです。

ただ、以前似たようなことをBINDで実装したとき、FreeBSD機の障害や電源OFF時に、家庭内でDNS名前解決ができなくなり、復旧が面倒だったので、今回は一工夫入れます。

至ってシンプルですが、
・キャッシュDNSサーバ(FreeBSD)のフォワーダーはISPのDNSサーバを設定する
・DHCPで配布するDNSサーバは、①FreeBSD Unbound ②ISP DNSサーバとする

こうやることで、FreeBSD障害時でも最低限の名前解決は維持できるようにします。

その3へ続く。
タグ:FreeBSD Unbound
nice!(0)  コメント(0) 
共通テーマ:日記・雑感

Unboundを有効活用する その1 (FreeBSD 13.3R、2024/04/05) [FreeBSD]

うちのFreeBSDのサーバ、CPUはPentium Silver J5040、メモリは16GBでそこそこ良いモノを装備しているんですが、あまり有効に使えてなかったりします。ほぼ常時稼働のNASサーバとしても使っているので(というかこれがほぼメイン)、なんかないですかね?

というわけで、FreeBSD標準添付のUnboudを使って、DNSキャッシュサーバ兼、muninの可視化でもやってみることにしました。
FreeBSDには標準構成にUnboundが含まれており、pkgから導入しなくてもそのまま使うことができます。さすがBSDライセンスですね。標準添付のUnboundは自分自身に対するローカルキャッシュサーバの用途に特化しているようで、rc.confの設定上でも「local_unbound」としてpkg導入のものと区別されています。

ただ、local_unboundに関してはあまり参考ドキュメントがないようで、正直使い方がよく分からない。デフォルトコンフィグがどこにも置かれていない。share/exapmlesのどこかにあるかなと思って探してみたのですが、それそれもなさそう。

賢いFreeBSDのことなので、エラーメッセージで何か教えてくれるだろうと思い、rc.confにlocal_unbound_enable="YES"を書き込んで強制的にサービス開始。と、…/etc/unbound配下に勝手にコンフィグ作って動作してくれました。しかもほぼ完成版で、修正する箇所がなくて困るぐらい。
 control.conf
 forward.conf
 lan-zones.conf
 root.key
 unbound.conf

ただ、これでめでたしめでたし、といかないのが楽しいところ。名前解決…できませんでした!
resolv.confも修正されており、もともと設定されていたDNSサーバはforward.confにちゃんと移植されていて、コンフィグは問題なさそう。
root@MyFreeBSD:/etc # cat /etc/unbound/forward.conf
# This file was generated by local-unbound-setup.
# Modifications will be overwritten.
forward-zone:
        name: .
        forward-addr: 192.168.x.x

サービスも立ち上がっていて、127.0.0.1でListen状態だし、はてな?? 勝手に作成されたコンフィグ本体のunbound.confも特には問題なさそうです。
root@MyFreeBSD:/etc # cat /etc/unbound/unbound.conf
# This file was generated by local-unbound-setup.
# Modifications will be overwritten.
server:
        username: unbound
        directory: /var/unbound
        chroot: /var/unbound
        pidfile: /var/run/local_unbound.pid
        auto-trust-anchor-file: /var/unbound/root.key


その2へ続く。

タグ:FreeBSD Unbound
nice!(0)  コメント(0) 
共通テーマ:日記・雑感

Jailで遊んでみる (FreeBSD 13.1R、2023/01/09) [FreeBSD]

FreeBSD jailで遊んでます。めっちゃ面白いです。

1点、jailを作るとネットワークアドレスが以下のように割り当てられます。(親と同じように/24にすることも可)
root@MyFreeBSD:~ # ifconfig
re0: flags=8943<UP,BROADCAST,RUNNING,PROMISC,SIMPLEX,MULTICAST> metric 0 mtu 1500
        options=201b<RXCSUM,TXCSUM,VLAN_MTU,VLAN_HWTAGGING,WOL_MAGIC>
        ether 11:22:33:44:55:66
        inet 192.168.10.11 netmask 0xffffff00 broadcast 192.168.10.255
        inet 192.168.10.12 netmask 0xffffffff broadcast 192.168.10.12


このとき、192.168.10.11のホストから192.168.10.12にpingをうつと、loopbackインタフェース経由で、かつ192.168.10.12 → 192.168.10.12という通信になるんですね。言われてみればルーティングテーブルもそうなってるし、ちょっと納得。

タグ:jail
nice!(0)  コメント(0) 
共通テーマ:日記・雑感

bhyveが使える その3(FreeBSD 13.1R、2022/11/13) [FreeBSD]

.templates/default.confを編集しましたが、実際は以下の各OS用のひな形をコピーして使うことになります。
root@MyFreeBSD:/home/bhyve # ll /usr/local/share/examples/vm-bhyve/
total 88
-rw-r--r--  1 root  wheel    437 Jul 19 17:40 alpine.conf
-rw-r--r--  1 root  wheel    280 Jul 19 17:40 arch.conf
-rw-r--r--  1 root  wheel    354 Jul 19 17:40 centos6.conf
-rw-r--r--  1 root  wheel    163 Jul 19 17:40 centos7.conf
-rw-r--r--  1 root  wheel  16800 Jul 19 17:40 config.sample
-rw-r--r--  1 root  wheel    331 Jul 19 17:40 coreos.conf
-rw-r--r--  1 root  wheel    177 Jul 19 17:40 debian.conf
-rw-r--r--  1 root  wheel    136 Jul 19 17:40 default.conf
-rw-r--r--  1 root  wheel    460 Jul 19 17:40 dragonfly.conf
-rw-r--r--  1 root  wheel    156 Jul 19 17:40 freebsd-zvol.conf
-rw-r--r--  1 root  wheel    755 Jul 19 17:40 freepbx.conf
-rw-r--r--  1 root  wheel    468 Jul 19 17:40 gentoo.conf
-rw-r--r--  1 root  wheel    151 Jul 19 17:40 linux-zvol.conf
-rw-r--r--  1 root  wheel    212 Jul 19 17:40 netbsd.conf
-rw-r--r--  1 root  wheel    243 Jul 19 17:40 openbsd.conf
-rw-r--r--  1 root  wheel    222 Jul 19 17:40 resflash.conf
-rw-r--r--  1 root  wheel    131 Jul 19 17:40 ubuntu.conf
-rw-r--r--  1 root  wheel    566 Jul 19 17:40 windows.conf

loaderまわりが特にシビアな設定なので、素直にテンプレートのlodearまわりを信じた方がよいと思います。起動しないときはいろいろ苦労するかもしれません。
graphics="yes"があるとGUI系の操作ができますが、vncviewerが必要になります。私はWindows環境にUltraVNCをインストールしています。

ここまでくれば自由に使える状態なので、他の解説サイトにある通り、vm ~コマンドで、起動・停止などができるようになります。

私はZabbixを使いたかったのですが、Centosをベースに作成されているZabbixがうまく起動しませんでした。Webを調べるとCentos系がうまく起動しないという報告が上がってそうなんですが、それに該当しているのでしょうか。

タグ:FreeBSD bhyve
nice!(0)  コメント(0) 
共通テーマ:日記・雑感

bhyveが使える その2(FreeBSD 13.1R、2022/11/13) [FreeBSD]

ちょっと時間が空いてしましまいました。

bhyveはUFS2上にデプロイするか、UFS2上にデプロイするかでコンフィグが変わってきます。私は軽いUFS2を好んで使ってるのでrc.confには以下のように記述します。
root# cat rc.conf
# bhyve
vm_enable="YES"
vm_dir="/home/bhyve"

vm initすると、該当ディレクトリに設定ファイルのひな形が作成されます。初期インストールに必要なISOイメージは、.isoの中に置くことになります。

また、ブリッジインタフェースが必要になるので作成しておきます。
root# vm switch create public
root# vm switch add public re0
root#
root# ifconfig
vm-public: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500
        ether aa:bb:cc:dd:ee:ff
        id 00:00:00:00:00:00 priority 32768 hellotime 2 fwddelay 15
        maxage 20 holdcnt 6 proto rstp maxaddr 2000 timeout 1200
        root id 00:00:00:00:00:00 priority 32768 ifcost 0 port 0
        member: re0 flags=143<LEARNING,DISCOVER,AUTOEDGE,AUTOPTP>
                ifmaxaddr 0 port 1 priority 128 path cost 20000
        groups: bridge vm-switch viid-4c918@
        nd6 options=9<PERFORMNUD,IFDISABLED>


bhyveのテンプレートが.templates配下に作成されるので、自分のメモも兼ねて.templates/default.confを以下のようにしておきます。CPU数はマルチコアではなく、マルチプロセッサ(ソケット)の扱いらしいので、Windows10 Homeでは「1」、Proでは「2」が上限値となります。
root# cat .templates/default.conf
loader="bhyveload"
cpu=2
memory=2048M
network0_type="virtio-net"
network0_switch="public"
disk0_type="virtio-blk"
disk0_name="disk0.img"

loaderの指定が難解で苦戦することになりますが、以下によると「bhyveload、grub、uefi、uefi-csm」が指定可能なようです。
https://github.com/churchers/vm-bhyve/blob/master/sample-templates/config.sample




タグ:FreeBSD bhyve
nice!(0)  コメント(0) 
共通テーマ:日記・雑感

pkg upgrade、QuarterlyとLatest Ports ブランチ(FreeBSD 13.1R、2022/09/16) [FreeBSD]

pkg upgradeって少し前まではアップグレード対象が大量に表示されていたのですが、13系からかな? ほとんど表示されなくなりましたね。たぶん、ポリシが安定志向になったのかな。
そう思って調べてみたら、そのことに触れている文章がありましたね。

4.4.2. Quarterly および Latest Ports ブランチ
Quarterly ブランチを使うと、 ユーザは、port および package のインストールおよびアップグレードを、 より予測可能で安定して行うことができます。 基本的には、このブランチでは機能のアップデートは行われません。 Quarterly ブランチの目的は、セキュリティに関連する修正 (バージョンアップデートやコミットのバックポートなど)、 バグの修正および ports のコンプライアンスおよびフレームワークの変更の入手です。 Quarterly ブランチは、毎年の毎四半期 (1 月、4 月、7 月および 10 月) のはじめに HEAD から作成されます。 ブランチには、作成された年 (YYYY) をよび四半期 (Q1-4) により名前がつけられます。 たとえば、2016 年 1 月に作成された quarterly ブランチの名前は 2016Q1 となります。 Latest ブランチは、 最新バージョンの package をユーザに提供します。
https://docs.freebsd.org/ja/books/handbook/ports/

つまりは/etc/pkg/FreeBSD.conf を書き換えれば、最新版を追いかけることは可能なようです。

nice!(0)  コメント(0) 
共通テーマ:日記・雑感

bhyveが使える その1(FreeBSD 13.1R、2022/08/22) [FreeBSD]

ずっと12系を使っていたFreeBSDですが、ベアメタル化する際に13系(13.1R)に入れ替えています。環境の最新化以外に、bhyveを使ってみたかったんですよね。結論から言うとちゃんと使えます。まだ荒削り感はありますが、結構面白いです。

私は以下を参考にさせてもらいました。
http://web.cc.yamaguchi-u.ac.jp/~hiroshi/FreeBSD/FreeBSD-vm-bhyve-ubuntu18-sagemath.html
https://nobwak.github.io/posts/2019-05-12-freebsd_12%E3%81%AEbhyve%E3%81%ABwindows10%E3%82%92%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB%E3%81%99%E3%82%8B%E3%81%9D%E3%81%AE2vm-bhyve%E4%BD%BF%E7%94%A8/
https://nofu.jp/wiki/freebsd/bhyve/freebsd_11.1r_use_vm-bhyve
https://qiita.com/bsd-hacker/items/1505f8888147f93bb763

まずpkgで必要なコンポーネントをインストールします。おまけで入ったものもありますが、現時点の私の環境は以下の通りです。tmuxやscreenのようなターミナルを多重化するソフトウェアは必須ではありませんが、後述するとある理由によりあった方が便利かと思います。
GUIで操作する場合はVNC系のビュワーも必要ですが、私のFreeBSDサーバはCLIオンリーなのでVNCはWindowsからUltraVNC Viewerで操作することにします。
root@MyFreeBSD:~ # pkg info | grep bhy
bhyve-firmware-1.0_1           Collection of Firmware for bhyve
edk2-bhyve-g202202_1           EDK2 Firmware for bhyve
grub2-bhyve-0.40_8             Grub-emu loader for bhyve
uefi-edk2-bhyve-csm-0.2_3,1    UEFI EDK2 firmware for bhyve with CSM (16-bit BIOS)
vm-bhyve-1.4.2                 Management system for bhyve virtual machines




タグ:bhyve FreeBSD
nice!(0)  コメント(0) 
共通テーマ:日記・雑感