ネットワーク機器でLinuxが自由に使えたら・・・皆さんそう思ったことはありませんか?
古河ネットワークソリューション様のFITELnet-Fシリーズには、LXCをベースとしたコンテナ機能が実装されており、超軽量なAlpine Linuxが動作します!
今回は、古河ネットワークソリューション様よりお借りした、FITELnet F220にて、Linuxを動作させ、セキュリティ運用ソフトウェアをインストール。実際に監視やSYSLOGの受信ができるのか検証してみました。
インストールしたセキュリティ運用ソフトウェアはもちろん弊社のLogStare Collectorです!
※LogStare Collectorとは?
本記事におけるコンテナ設定・動作につきましては、古河ネットワークソリューション様のサポート対象外となります。
目次
対象バージョン
今回は以下の構成で検証しています。
型番:FITELnet F220
ファームウェア:Version 01.06(00)[0]00.00.0 [2021/06/10 15:00]
コンテナイメージ:Alpinelinux 3.13 aarch64 (20210124_13:00)
コンテナの設定
それでは早速、コンテナ機能の設定を行います。
コンテナの有効化
以下のコマンドでコンテナを有効化します。
# enable # configure terminal (config) # container enable (config) # end # refresh
続いてコンテナイメージからコンテナを生成します。
※特権モードで行います。
# container start
以下のコマンドを実行してコンテナが動作していることを確認します。
# show container list
+-----------+------------+---------------------+---------+---------------------+ ------+ | NAME | BASE IMAGE | IMAGE VERSION | STATE | IPV4 | IPV6 | +-----------+------------+---------------------+---------+---------------------+ ------+ | container | a58b2c065a | 3.13 20210422_15:00 | RUNNING | | | +-----------+------------+---------------------+---------+---------------------+ ------+
コンテナのネットワーク設定
続いてコンテナが外部のネットワークと接続できるようにインターフェースの設定を行います。
今回はGigaEthernet 1/1をコンテナで利用します。
GigaEthernet 1/1は「bridge-group 2」に所属しています。
ここで設定したIPアドレスが自動的にコンテナ上のAlpine Linuxに設定されます。
# enable # configure terminal (config) # container configuration (config-container) # interface 1 (config-container-if) # bridge-group 2 (config-container-if) # ip address x.x.x.x x.x.x.x (config-container-if) # ip gateway x.x.x.x (config-container-if) # exit (config-container) # exit (config) # interface GigaEthernet 1/1 (config-if-ge 1/1) # container-use (config-if-ge 1/1) # exit (config) # end # refresh
※必要に応じて「save」コマンドをで設定を保存してください。
当社で検証したconfigの抜粋を以下に記載します。
interface GigaEthernet 1/1に設定したIPアドレスと同じセグメントにコンテナ上のAlpine LinuxのIPアドレスを割り当てました。
Alpine LinuxのデフォルトゲートウェイはGigaEthernet 1/1のIPアドレスにしています。
(略) container enable ! container configuration ! interface 1 bridge-group 2 ip address 172.23.61.87 255.255.255.0 ip gateway 172.23.61.1 exit ! (略) ! interface GigaEthernet 1/1 vlan-id 2 bridge-group 2 channel-group 2 container-use exit ! (略) ! interface Port-channel 2 ip address 172.23.61.85 255.255.255.0 exit !
なお、コンテナ上のOS側ではifconfgや/etc/network/interfaces等でのIPアドレスの設定は不要で、ネットワークサービスの再起動も不要ですが、コンテナを作り直し(container restore)した場合、ネットワーク設定はconfig上には残っていますが、一度refreshしてcontainer restartしないとコンテナ上のOSに反映されないようです。
【参考:コンテナ上でのip aコマンドの結果】
~ # ip a 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000 link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8 scope host lo valid_lft forever preferred_lft forever inet6 ::1/128 scope host valid_lft forever preferred_lft forever 2: sit0@NONE: mtu 1480 qdisc noop state DOWN group default qlen 1000 link/sit 0.0.0.0 brd 0.0.0.0 3: loop0: <> mtu 65535 qdisc noop state DOWN group default qlen 1000 link/ether 00:00:01:00:00:00 brd 00:00:00:00:00:00 4: loop1: <> mtu 65535 qdisc noop state DOWN group default qlen 1000 link/ether 00:00:01:00:00:00 brd 00:00:00:00:00:00 16: eth2@if2: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000 link/ether 00:80:bd:4c:98:ad brd ff:ff:ff:ff:ff:ff link-netnsid 0 inet 172.23.61.87/24 scope global eth2 valid_lft forever preferred_lft forever inet6 fe80::280:bdff:fe4c:98ad/64 scope link valid_lft forever preferred_lft forever
【参考:コンテナ上でのip rコマンドの結果】
~ # ip r default via 172.23.61.1 dev eth2 metric 1 172.23.61.0/24 dev eth2 proto kernel scope link src 172.23.61.87
コンテナの状態を確認する便利なコマンド
コンテナの状態を確認する便利なコマンドをご紹介します。
・コンテナの一覧や割り当てられたIPアドレスを確認する
# show container list
・コンテナのストレージ情報を確認する
# show container storage information
DNSサーバを設定する
続いて、DNSサーバを設定します。
以下は一例として、8.8.8.8をDNSサーバとして設定する例です。
# enable # configure terminal (config) # container configuration (config-container) # dns 8.8.8.8 (config-container) # exit (config) # end # refresh
LogStare Collectorのインストール
いよいよここからLogStare Collectorをインストールします。
特権モードで以下のコマンドを実行すると、コンテナ上のAlpine Linuxのシェルに入れます。
# container attach
シェルに入ったら、デフォルトゲートウェイへPing疎通ができることと、ホスト名でPing(ping www.logstare.com)を実行するなどして、名前解決ができることを確認します。
Alpine Linuxは超軽量動作のため、busyboxと呼ばれる多数のLinuxコマンドを単一の実行ファイルに詰め込んで動作しています。
このため、例えばよくあるgrepコマンドなども、若干オプションが異なっている場合があります。
LogStare Collectorのインストーラーで必要な各種コマンドなどを追加しながらインストールをしていきます。
必要なパッケージとライブラリの追加
必要なパッケージやライブラリ、OpenJDKをインストールします。
インターネットからダウンロードしますので、インターネットにアクセス出来ることが前提です。
コンテナ上のシェルで以下のコマンドを順に実行します。
~ # apk add openjdk11 ~ # apk add bash ~ # apk add grep ~ # apk add coreutils ~ # apk add sed ~ # apk add tzdata ~ # exit
※coreutilsにはtailコマンドやmktempなどのコマンドが含まれています。Grepとsedはbusyboxにも備わっていますが、若干オプションが違うため、パッケージとしてインストールしています。
続いて少し特殊な操作を行います。以下から最新のsqlite-jdbcの「jar」ファイルをダウンロードし、お使いの端末等(FITEL-netにSSH等で接続している端末)で、7-zip等のツールで展開します。
※本記事執筆時点では「3.36.0.3」が最新です。
MVN REPOSITORY SQLite JDBC
展開した後に出来上がる「org\sqlite\native\Linux\aarch64\libsqlitejdbc.so」をコンテナにコピーします。
コンテナ上からscpコマンドでコピーするか、F220へまずSCPで転送した後、コンテナに転送することもできます。
F220上からコンテナにファイルを送信する場合は以下のコマンドを利用します。
# container push /drive/libsqlitejdbc.so
※「/drive」はF220本体へSCPでコピーする場合のデフォルトのフォルダ(ホームディレクトリ)です。
再びコンテナ上のシェルに入り、以下のコマンドを実行します。
# container attach ~ # cp -ipv libsqlitejdbc.so /usr/lib
LogStare Collectorのインストールとパラメータ調整
ここからLogStare Collectorをダウンロードしてインストールします。
LogStare Collectorのセットアップファイルは、サイズが大きく、前述のcontainer pushコマンドでは、一時フォルダの容量をオーバーしてしまい、転送出来ませんでした。このため、直接当社サイトからダウンロードします。
コンテナ上のシェルで以下のコマンドを実行します。
~ # wget https://www.logstare.com/software/LSC/logstare-collector-2.1.3-setup.bin
※2021年11月時点での最新バージョンの2.1.3をダウンロードしています。
今後ファイル名が変更となる可能性があります。
ダウンロード出来たら、以下のコマンドでセットアップを開始します。
※バージョン2.1.3の例です。ファイル名は適宜読み替えて実行してください。
~ # bash logstare-collector-2.1.3-setup.bin
インストールパスはデフォルトで問題ありません。
JREのパスは「/usr/lib/jvm/default-jvm/jre/」を指定してください。
続いて起動パラメータを調整します。
F220ではメモリ容量が多くないため、LogStare Collectorのデフォルト設定では動作が重くなってしまうため、起動時に確保するメモリを少なくします。
※このため多くのデバイスの監視やログ収集は行なえませんがご理解ください。
コンテナ上のシェルでviコマンドで起動ファイルを編集します。
~ # vi /usr/local/logstarecollector/sbin/start_kallista.sh
以下のような記載が2箇所ありますので、
-Xmx2048m -Xms128m \
2箇所とも以下のように変更します。(2048を512に書き換える)
-Xmx512m -Xms128m \
以上でパラメータの修正は完了です。
LogStare Collectorの起動
以下のコマンドを実行してLogStare Collectorを起動します。
~ # /usr/local/logstarecollector/sbin/start_kallista.sh
実際に動かしてみた
少し複雑な手順もありましたが、無事インストールできましたでしょうか。
無事起動できれば、ブラウザで「http://コンテナに指定したipアドレス/」でアクセスできます。
初期設定などは以下のリファレンスをご参照ください。
F220に搭載されているメモリやディスクのサイズの関係上、たくさんのデバイスを同時に監視したり、多くのログを保管することは出来ませんが、ルータ上で周辺デバイスを監視したりSYLOSGサーバとして動作させることで、追加のハードウェア投資なくネットワーク管理がスタートできます。
【参考:インストール直後のコンテナのディスク容量】
~ # df -h Filesystem Size Used Avail Use% Mounted on /dev/mmcblk0p6 2.0G 892M 943M 49% / (略)
※空きが1GB程度のため、たくさんのログを保続することは出来ませんが、LogStare Reporterと連携すればローカルディスクに多くの容量がなくても当社クラウド上にログや監視データを保存できます。
最後までお読みいただきありがとうございました!
皆様のお役に立てますと幸いです。
記載されている会社名、システム名、製品名は一般に各社の登録商標または商標です。
当社製品以外のサードパーティ製品の設定内容につきましては、弊社サポート対象外となります。