tailscaleでDebianの監視端末にどこからでもアクセスできるようにする
概要
トラブル対応などのために顧客のネットワークをキャプチャしたり稼働状況を確認する必要があった場合、24時間その場に張り付くことはできないため監視端末を設置することがあります。 この端末にアクセスするために現地に毎回訪問することは大きな負担なので、リモートからアクセスできるようにします。 ただ、ファイアウォールに穴を開けたりポート転送の設定をすることが出来ない場合がほとんどですので、そういったことが必要のない tailscale というVPNサービスを利用します。
tailscale は、Windows / MacOS / iOS / Android だけでなく、Linuxにも対応したPeer to PeerのVPNサービスです。 個人利用であれば20台まで無料で利用できます。
環境
ソフトウェア
- Debian 11 (bullseys)
- tailscale 1.16.2
セットアップ
ダウンロードサイトにアクセスする
Debian用のインストール手順を表示する
Linux → Debian Bullseye を選択してセットアップ手順を表示します。
手順に従ってセットアップする
以下の内容は、上記の手順に従って表示された手順です。 参考までに記載していますが、必ずサイトの手順を表示して表示された手順に従ってセットアップしてください。
セットアップに必要な curl のインストール
# apt install curl
レポジトリの追加
# curl -fsSL https://pkgs.tailscale.com/stable/debian/bullseye.gpg | apt-key add - # curl -fsSL https://pkgs.tailscale.com/stable/debian/bullseye.list | tee /etc/apt/sources.list.d/tailscale.list
tailscale のインストール
# apt-get update # apt-get install tailscale
認証して tailscale ネットワークに接続する
以下のコマンドを実行すると、URLが表示されるのでブラウザで表示して認証します。 認証はWIndowsやMACなど別の端末からでも問題ありません。
# tailscale up To authenticate, visit: https://login.tailscale.com/a/xxxxxxxxxxxx ← このアドレスにブラウザでアクセスする
認証画面で認証する。
Google や Microsoft などのアカウントでも認証できます。
認証に成功すると以下のような画面が表示されます。
VPNの接続状況を確認する
# ip a
以下のように、仮想インターフェースが作成され、IPアドレスが取得できていれば成功です。 アクセスするすべての端末を同様の手順でVPNに参加させます。
VPNに参加した端末間で ping などにより接続を確認します。
# ping 100.104.134.21 PING 100.104.134.21 (100.104.134.21) 56(84) bytes of data. 64 bytes from 100.104.134.21: icmp_seq=1 ttl=128 time=17.1 ms 64 bytes from 100.104.134.21: icmp_seq=2 ttl=128 time=3.55 ms 64 bytes from 100.104.134.21: icmp_seq=3 ttl=128 time=3.28 ms 64 bytes from 100.104.134.21: icmp_seq=4 ttl=128 time=2.78 ms 64 bytes from 100.104.134.21: icmp_seq=5 ttl=128 time=2.28 ms ^C --- 100.104.134.21 ping statistics --- 5 packets transmitted, 5 received, 0% packet loss, time 4005ms rtt min/avg/max/mdev = 2.276/5.802/17.118/5.674 ms
ping が通れば完了です。
debianでインライン構成のパケットキャプチャマシンを作る
概要
トラブルシューティングの際にネットワークを流れるパケットをキャプチャしたい場合があります。 Liva Q1L はLANポートが2ポートあるためインラインでキャプチャできるデバイスにできればキャプチャ用に別途ハブなどを用意する必要が無く便利です。 キャプチャしたファイルは Wireshark などで分析することが出来ます。
環境
ハードウェア
- ECS Liva Q1L
- CPU Intel® Celeron® N3350
- メモリ 4GB
- 内蔵ストレージ eMMC 64GB
- 有線LAN 2×Gigabit LAN (10BASE-T/100BASE-TX/1000BASE-T)
- 無線LAN Wi-Fi 802.11ac
ソフトウェア
設定
現在の構成を確認する
nmcliコマンドで、現在の構成が確認できます。 LANケーブルの接続された enp2s0 と、接続されていない eno1 が存在します。
# nmcli con NAME UUID TYPE DEVICE ethernet-enp2s0 2815e4b1-4a3d-4d99-96b9-bea28eec47cd ethernet enp2s0 ethernet-eno1 07025d57-e81f-4ef6-b2ec-e324f9bd5601 ethernet --
LANをブリッジ構成にする
仮想ブリッジ br0 を作成します。ブリッジとは複数のLANポートをまとめて1つのハブのようにしたものです。無線と有線をブリッジすることで無線アクセスポイントを作成することなどもできます。ルーターと違うのは、全て同一のネットワークセグメント(ブロードキャストドメイン)になることです。
例えば、IPアドレスをDHCPで取得するブリッジを作成する場合、以下のようにします。
# nmcli con add type bridge ifname br0
IPアドレスを固定したい場合は、以下のようにします。
# nmcli con add type bridge ifname br0 ipv4.method manual ipv4.address "192.168.11.11/24" ipv4.gateway "192.168.11.1" ipv4.dns "192.168.11.1"
物理ポート enp2s0 と eno1 をブリッジに接続します。
# nmcli con add type bridge-slave ifname enp2s0 master bridge-br0 # nmcli con add type bridge-slave ifname eno1 master bridge-br0
物理ポートを 削除します。今、enp2s0にLANケーブルが接続されているなら、先にeno1から削除し、後からenp2s0を削除し再起動します。
# nmcli con del ethernet-eno1 # nmcli con del ethernet-enp2s0 ; reboot
これで、br0 を流れるパケットをキャプチャすればよいことになります。
tcpdump をインストールする
パケットキャプチャに利用するソフトウェア tcpdump をインストールします。
# apt install tcpdump
キャプチャする
# tcpdump -n -i br0 -s 0 -w /tmp/tcpdump.pcap
- -n IPを名前に変換しない
- -i キャプチャするインターフェースを指定する
- -s パケットの最大サイズ(0の場合は無制限)
- -w キャプチャしたデータの保存先
参考
Zabbixサーバーのパフォーマンスチューニング
概要
100台程度のホストを監視する想定で、パフォーマンスチューニングします。 今回は、簡易的にZabbixサーバー自身の監視設定をコピーして負荷をかけていきます。
環境
ハードウェア
- ECS Liva Q1L
- CPU Intel® Celeron® N3350
- メモリ 4GB
- 内蔵ストレージ eMMC 64GB
- 有線LAN 2×Gigabit LAN (10BASE-T/100BASE-TX/1000BASE-T)
- 無線LAN Wi-Fi 802.11ac
ソフトウェア
- Debian 11 (bullseys)
- Zabbix 5.4
- PostgreSQL 13
- nginx
- PHP 7.4
テスト環境の作成
監視設定をYAML形式でエキスポートする
エキスポートしたファイルを元に100台分の新規ホストとして編集する
サンプルファイル(zbx_export_hosts-0-99.yaml) ※注意※ 利用する場合は、groups > uuid を自身の環境に合わせて書き換えてください。
作成したファイルをインポートしてホストを作成する
「設定」→「ホスト」の右上にある「インポート」をクリックし、作成したファイルを選択する。
Zabbixサーバーの設定を修正する
ホストを100台追加するとZabbixサーバーが停止してしまいます。ログを確認して原因を確認していきます。
47586:20211107:190121.261 Starting Zabbix Server. Zabbix 5.4.7 (revision 84dc2ec5dc). 47586:20211107:190121.261 ****** Enabled features ****** 47586:20211107:190121.261 SNMP monitoring: YES 47586:20211107:190121.261 IPMI monitoring: YES 47586:20211107:190121.261 Web monitoring: YES 47586:20211107:190121.261 VMware monitoring: YES 47586:20211107:190121.261 SMTP authentication: YES 47586:20211107:190121.261 ODBC: YES 47586:20211107:190121.261 SSH support: YES 47586:20211107:190121.261 IPv6 support: YES 47586:20211107:190121.261 TLS support: YES 47586:20211107:190121.261 ****************************** 47586:20211107:190121.261 using configuration file: /etc/zabbix/zabbix_server.conf 47586:20211107:190121.351 TimescaleDB version: 20500 47586:20211107:190121.380 current database version (mandatory/optional): 05040000/05040000 47586:20211107:190121.380 required mandatory version: 05040000 47586:20211107:190121.542 server #0 started [main process] 47595:20211107:190121.543 server #1 started [configuration syncer #1] 47595:20211107:190122.230 __mem_malloc: skipped 7 asked 6296 skip_min 264 skip_max 5000 47595:20211107:190122.231 [file:dbconfig.c,line:102] __zbx_mem_realloc(): out of memory (requested 6296 bytes) 47595:20211107:190122.231 [file:dbconfig.c,line:102] __zbx_mem_realloc(): please increase CacheSize configuration parameter 47595:20211107:190122.231 === memory statistics for configuration cache === 47595:20211107:190122.231 free chunks of size 24 bytes: 24 47595:20211107:190122.231 free chunks of size >= 256 bytes: 7 47595:20211107:190122.231 min chunk size: 24 bytes 47595:20211107:190122.231 max chunk size: 5000 bytes 47595:20211107:190122.231 memory of total size 7257720 bytes fragmented into 70658 chunks 47595:20211107:190122.231 of those, 15480 bytes are in 31 free chunks 47595:20211107:190122.231 of those, 7242240 bytes are in 70627 used chunks 47595:20211107:190122.231 of those, 1130512 bytes are used by allocation overhead 47595:20211107:190122.231 ================================ 47595:20211107:190122.231 === Backtrace: === 47595:20211107:190122.232 15: /usr/sbin/zabbix_server: configuration syncer [syncing configuration](zbx_backtrace+0x3f) [0x56428eb0f601] 47595:20211107:190122.232 14: /usr/sbin/zabbix_server: configuration syncer [syncing configuration](__zbx_mem_realloc+0x160) [0x56428eb0a2c4] 47595:20211107:190122.232 13: /usr/sbin/zabbix_server: configuration syncer [syncing configuration](+0x1a2b54) [0x56428ea94b54] 47595:20211107:190122.232 12: /usr/sbin/zabbix_server: configuration syncer [syncing configuration](zbx_hashset_reserve+0xc1) [0x56428eb1557f] 47595:20211107:190122.232 11: /usr/sbin/zabbix_server: configuration syncer [syncing configuration](zbx_hashset_insert_ext+0xee) [0x56428eb157f0] 47595:20211107:190122.232 10: /usr/sbin/zabbix_server: configuration syncer [syncing configuration](zbx_hashset_insert+0x2d) [0x56428eb15700] 47595:20211107:190122.232 9: /usr/sbin/zabbix_server: configuration syncer [syncing configuration](DCfind_id+0x86) [0x56428ea95387] 47595:20211107:190122.232 8: /usr/sbin/zabbix_server: configuration syncer [syncing configuration](+0x1abc78) [0x56428ea9dc78] 47595:20211107:190122.232 7: /usr/sbin/zabbix_server: configuration syncer [syncing configuration](DCsync_configuration+0x11d9) [0x56428eaa3a08] 47595:20211107:190122.232 6: /usr/sbin/zabbix_server: configuration syncer [syncing configuration](dbconfig_thread+0x122) [0x56428e95937a] 47595:20211107:190122.232 5: /usr/sbin/zabbix_server: configuration syncer [syncing configuration](zbx_thread_start+0x37) [0x56428eb1f97a] 47595:20211107:190122.232 4: /usr/sbin/zabbix_server: configuration syncer [syncing configuration](MAIN_ZABBIX_ENTRY+0xb3b) [0x56428e9479fe] 47595:20211107:190122.232 3: /usr/sbin/zabbix_server: configuration syncer [syncing configuration](daemon_start+0x2f5) [0x56428eb0f20f] 47595:20211107:190122.232 2: /usr/sbin/zabbix_server: configuration syncer [syncing configuration](main+0x2f5) [0x56428e946ded] 47595:20211107:190122.232 1: /lib/x86_64-linux-gnu/libc.so.6(__libc_start_main+0xea) [0x7f72d9fc4d0a] 47595:20211107:190122.232 0: /usr/sbin/zabbix_server: configuration syncer [syncing configuration](_start+0x2a) [0x56428e945cca] 47586:20211107:190122.237 One child process died (PID:47595,exitcode/signal:1). Exiting ... 47586:20211107:190122.260 syncing trend data... 47586:20211107:190122.261 syncing trend data done 47586:20211107:190122.261 Zabbix Server stopped. Zabbix 5.4.7 (revision 84dc2ec5dc).
このようなログが何度も繰り返して出力されていることが分かります。 この中で、以下の行に「メモリが不足しているから CacheSize 設定を増やしてね」と記載されています。
47595:20211107:190122.231 [file:dbconfig.c,line:102] __zbx_mem_realloc(): out of memory (requested 6296 bytes) 47595:20211107:190122.231 [file:dbconfig.c,line:102] __zbx_mem_realloc(): please increase CacheSize configuration parameter
このため、Zabbixサーバーの設定ファイルを変更します。 デフォルトは8Mなので、とりあえず32Mにして様子を見てみます。 /etc/zabbix/zabbix_server.conf
CacheSize 32M
変更したらサーバーを再起動します。
# systemctl restart zabbix-server
上手く起動したら30分くらい様子見をしてからパフォーマンスを確認していきます。
32MBだと75%ギリギリなので、64MBまで増やして様子を見ていきます。 /etc/zabbix/zabbix_server.conf
CacheSize 64M
問題なさそうなので、これで行きます。
他の項目を確認していく
ポイント:queueがたまっているということは処理しきれていないということなのでチューニングが必要な状態です。
ポイント:データを収集するプロセスの稼働率をチェックします。75%を超えていると余裕がないので対応するプロセスを増やす必要があります。 遠隔地にあるサーバーを監視する場合は、途中の回線が混みあっている場合などにチェックに時間がかかりプロセスが消費されることがあります。
詳細は、以下の記事で詳細に解説されています。。 blog.serverworks.co.jp
お疲れさまでした。
debianをWindowsのファイルサーバーにする
概要
debian をWindows用のファイルサーバーとして利用できるようにします。 ユーザー認証はSambaのローカルユーザーで行います。 今回は、sambaのhomes機能を利用して、ユーザーごとに自分専用のフォルダのみアクセスできるようにします。
環境
ソフトウェア
- Debian 11 (bullseys)
- Samba 4.13
サーバーの設定
1. samba のインストール
# apt install samba
2. 設定ファイルの作成
オリジナルファイルを別名で保存
# mv /etc/samba/smb.conf /etc/samba/smb.conf.org
設定ファイルを作成する。 パラメータについてはこちらのサイトが詳しい。
/etc/samba/smb.conf
[global] workgroup = WORKGROUP dos charset = CP932 unix charset = UTF-8 log file = /var/log/samba/log.%m max log size = 1000 logging = file panic action = /usr/share/samba/panic-action %d server role = standalone server obey pam restrictions = yes unix password sync = yes passwd program = /usr/bin/passwd %u passwd chat = *Enter\snew\s*\spassword:* %n\n *Retype\snew\s*\spassword:* %n\n *password\supdated\ssuccessfully* . pam password change = yes map to guest = never usershare allow guests = no [homes] comment = Home Directories path = /data/homes/%S browseable = no writable = yes valid users = %S
3. samba ユーザーの作成
sambaのユーザーとUNIXユーザーは別で管理されているが、実際のファイルの書き込みはUNIXユーザーで行われるため、UNIXユーザーと同じユーザー名でsambaユーザーを作成する。
# pdbedit -a <ユーザー名>
4. データディレクトリの作成
# mkdir -p /data/homes/<ユーザー名> # chown -R <ユーザー名> /data/homes/<ユーザー名> # chmod 700 /data/homes/<ユーザー名>
Windows PCからの接続
Windows ユーザー名/パスワードと、UNIXユーザー名/パスワードが一致していれば、アカウント情報を聞かれることなくアクセスすることが出来る。 異なる場合は、資格情報をWindowsにあらかじめ設定しておく。
1. コントロールパネルを開く
Windowsキー → control と入力 → コントロールパネルを選択
2. 資格情報マネージャを開く
アドレスには、ホスト名かIPアドレス、ユーザー名/パスワードにはsambaユーザーのユーザー名/パスワードを入力
3. サーバーにアクセスする
エクスプローラーで、以下のアドレスを開く \<ホスト名> または <IPアドレス>
フォルダが見えて、ファイルが書き込めれば完了です。
【ZabbixServer構築#9】Zabbixサーバーのグラフの文字化けを修正する
概要
これまでの手順のままだと、グラフが以下のように□に化けていて見えないので修正します。
環境
ソフトウェア
- Debian 11 (bullseys)
- Zabbix 5.4
修正手順
1. フォントをインストールする
# apt install fonts-ipafont
2. Zabbixがフォントを利用するよう設定する
alternatives という仕組みが利用されているので、以下のコマンドでインストールしたフォントが候補の中で一番優先して利用されるように設定する
※他のサイトでは、PHPのプログラムを修正する手順が紹介されている場合がありますが、プログラムがアップデートされた際に毎回修正する必要があるため、alternativesを利用することをお奨めします
# update-alternatives --install /usr/share/zabbix/assets/fonts/graphfont.ttf zabbix-frontend-font /usr/share/fonts/truetype/fonts-japanese-gothic.ttf 20
確認
以下のように、文字が正しく表示されれば完了です。
【ZabbixServer構築#8】ZabbixデータベースにTimescleDBを設定する
概要
ZabbixデータベースにTimescaleDBを設定します。 TimescaleDBによって、履歴データのテーブルをパーティション管理することで、過去データの削除処理(ハウスキーピング処理)を劇的に軽減できます。 また、データ圧縮によりディスク容量1/10程度まで節約できます。
TimeScaleDBの設定
TimescaleDB拡張を有効にする
# echo "CREATE EXTENSION IF NOT EXISTS timescaledb CASCADE;" | sudo -u zabbix psql zabbix WARNING: WELCOME TO _____ _ _ ____________ |_ _(_) | | | _ \ ___ \ | | _ _ __ ___ ___ ___ ___ __ _| | ___| | | | |_/ / | | | | _ ` _ \ / _ \/ __|/ __/ _` | |/ _ \ | | | ___ \ | | | | | | | | | __/\__ \ (_| (_| | | __/ |/ /| |_/ / |_| |_|_| |_| |_|\___||___/\___\__,_|_|\___|___/ \____/ Running version 2.5.0 For more information on TimescaleDB, please visit the following links: 1. Getting started: https://docs.timescale.com/timescaledb/latest/getting-started 2. API reference documentation: https://docs.timescale.com/api/latest 3. How TimescaleDB is designed: https://docs.timescale.com/timescaledb/latest/overview/core-concepts Note: TimescaleDB collects anonymous reports to better understand and assist our users. For more information and how to disable, please see our docs https://docs.timescale.com/timescaledb/latest/how-to-guides/configuration/telemetry. CREATE EXTENSION
スキーマ設定
# cat /usr/share/doc/zabbix-sql-scripts/postgresql/timescaledb.sql | sudo -u zabbix psql zabbix
確認
管理 → 一般設定 → データの保存期間の設定が以下のようになっていれば完了です。
【ZabbixServer構築#7】ZabbixをPostgreSQL+nginx環境にインストールする
概要
Zabbixをインストールします。 ZabbixはDebianよりもバージョンアップが早いため追随できるように公式サイトのパッケージを利用します。 2021/11/7現在で最新の5.4を採用します。 フロントエンドには軽量WEBサーバーのnginxを利用します。
1. Zabbixをインストール
Zabbixのインストール手順は公式サイトのダウンロードから環境を選択することで手順が表示されますので、基本的にはこの通りの流れでインストールします。
a. Install Zabbix repository
# wget https://repo.zabbix.com/zabbix/5.4/debian/pool/main/z/zabbix-release/zabbix-release_5.4-1+debian11_all.deb # dpkg -i zabbix-release_5.4-1+debian11_all.deb # apt update
b. Install Zabbix server, frontend, agent
# apt install zabbix-server-pgsql zabbix-frontend-php php7.4-pgsql zabbix-nginx-conf zabbix-sql-scripts zabbix-agent
c. Create initial database
データベース(zabbix)とユーザー(zabbix)の作成
# sudo -u postgres createuser --pwprompt zabbix # sudo -u postgres createdb -O zabbix zabbix
初期スキーマとデータのインポート
# zcat /usr/share/doc/zabbix-sql-scripts/postgresql/create.sql.gz | sudo -u zabbix psql zabbix
d. Configure the database for Zabbix server
Edit file /etc/zabbix/zabbix_server.conf
DBPassword=<ユーザー(zabbix)のパスワード>
e. Configure PHP for Zabbix frontend
/etc/zabbix/nginx.conf を編集し、以下の行のコメント(#)を外す
# listen 80; # server_name example.com;
nginxのdefaultページを削除する
# rm /etc/nginx/sites-enabled/default
f. Start Zabbix server and agent processes
# systemctl restart zabbix-server zabbix-agent nginx php7.4-fpm # systemctl enable zabbix-server zabbix-agent nginx php7.4-fpm
フロントエンドの設定
サーバーのWEB画面( http://<サーバーのIPアドレス> )にアクセスしてフロントエンドの設定を完了する http://<サーバーのIPアドレス>
途中で入力したデータベースパスワードを設定
最後にログイン画面が表示されれば完了です。 デフォルトは、 Admin / zabbix です。