はじめに
この記事は、自宅ネットワークを見直してアップデートをした内容についてかんたんに説明する記事となります。
この記事を読んで、「Fortigate使ってみようかな」「Zabbixちょっとやってみよっかな」という方の後押しになれば幸いです。
ちなみに、私の初めての自宅ネットワーク構築については、次の記事を参照ください。
今回ネットワークの環境を更新しようと思った理由
自分のさらなるスキルアップを図るため、よりプロ?の業務のような環境を学びたいと思い挑戦しました。
また、環境更新にあたっては、次の新しい技術を導入しました。
⭐環境更新のポイント
- 業務用?FirewallのFortigateの導入
- ネットワーク&サーバ監視のZabbixの導入
「ちゃんとFirewall触ってみたい!」って思ったのと
やはり実践的にするためにはログ監視を含めて、しっかり管理できる環境の経験は必要だろうと思いこの2つの新しい技術に挑戦しました。
今回構築したネットワーク環境
セキュリティの観点から、一部実際と違う部分がありますが、おおむねこんな感じになりました。
今回も、みんな大好き?ラズパイを調達しました。
物理ネットワーク
論理ネットワーク
論理ネットワークは、イメージですがこんな感じです。
Zabbixエージェントは、見た目を簡素化するために、DMZ内については監視しているものを対象に、併記しています。
LAN2についても簡素化を図るために省略しました。

Fortigate導入
調達方法
Fortigate 60Fをヤフオクで約9,000円で調達しました。
本当は、2台ゲットしてHA構成もしてみたかったのですが、まだファイアウォール(以下「FW」)を触ったこともないひよっこなので、1台のみにしました。
Fortigateを触った感想
やはり実機を触ると学びが多いですね。
情報も充実していますし、生成AIもかなり高精度でサポートしてくれたのでほとんど躓かずに導入することができました。
ビギナーにはとても扱いやすいと思いました。
Fortigateおすすめポイント
- 比較的安価
- GUIはとても分かりやすいし、CLIでもFWの基本操作が学べる!
- インターフェースの設定やファイアウォールポリシーなどの(おそらく)一通りの設定を試すことができてGood
- Zabbix導入時に、SNMPによる監視も試せてよかった!
Zabbix導入
導入前の準備
Zabbixの本を図書館で借りてきて少し勉強しました。
が、結局ネットの情報の方がスムーズだったため、ネット情報で基本を学習しました。
環境構築は、Dockerに比較的慣れていたのと、今の公開サーバもDockerで環境構築をしていたので、ZabbixもDockerで環境構築しました。
Dockerのファイルたち
セキュリティに関する注意
これらの設定ファイルは学習・検証環境向けのサンプルです。実際に利用される場合は:
- パスワードなどの機密情報は環境変数ファイル(.env)で管理し、Gitリポジトリにコミットしない
- デフォルトポート番号の変更を検討
- 適切なファイアウォールルールの設定
などのセキュリティ対策を必ず実施してください。
ネット情報やらなんやら試行錯誤して、最終的に次のようなファイルを作成しました。
もしご利用される方は自己責任でよろしくお願いします。
なお、利用される際は、別途「.env」ファイルを作成し、ポート設定などを調整する必要があると思います。
Zabbix AgentのDockerのファイル(サンプル)
docker-compose.yml
services:
zabbix-agent:
build:
context: .
dockerfile: Dockerfile**
container_name: ${CONTAINER_NAME}
environment:
- ZBX_HOSTNAME=${ZBX_HOSTNAME}
- ZBX_SERVER_HOST=${ZBX_SERVER_HOST}
init: true
restart: unless-stopped
cap_add:
- NET_RAW # Pingコマンド実行に必要
group_add:
- "991" # これでdockerグループにイン。これがないとPingがエラーになる。
volumes:
- /var/run/docker.sock:/var/run/docker.sock # Dockerソケットのマウント
ports:
- "10050:10050" # ポートフォワーディング設定
Dockerfile
# 公式 Zabbix Agent2 Ubuntu イメージをベースにする
FROM zabbix/zabbix-agent2:trunk-alpine
# root 権限でパッケージをインストール
USER root
RUN apk update && apk add --no-cache netcat-openbsd iputils iproute2
# デフォルトのユーザーに戻す
USER zabbix
Zabbix ServerのDockerのファイル(サンプル)
Zabbix Server、Web UI、PostgreSQLの構成
docker-compose.yml
version: "3.9"
services:
postgres:
image: postgres:16
container_name: zabbix-postgres
restart: unless-stopped
environment:
POSTGRES_DB: ${POSTGRES_DB}
POSTGRES_USER: ${POSTGRES_USER}
POSTGRES_PASSWORD: ${POSTGRES_PASSWORD}
volumes:
- postgres_data:/var/lib/postgresql/data
# network_mode: host は削除 → デフォルトは bridge
zabbix-server:
image: zabbix/zabbix-server-pgsql:alpine-7.0-latest
container_name: zabbix-server
restart: unless-stopped
depends_on:
- postgres
environment:
DB_SERVER_HOST: zabbix-postgres # bridgeモードならサービス名でアクセス
POSTGRES_DB: ${POSTGRES_DB}
POSTGRES_USER: ${POSTGRES_USER}
POSTGRES_PASSWORD: ${POSTGRES_PASSWORD}
ports:
- "10051:10051" # ポートフォワーディング設定
zabbix-web:
image: zabbix/zabbix-web-nginx-pgsql:alpine-7.0-latest
container_name: zabbix-web
restart: unless-stopped
depends_on:
- zabbix-server
- postgres
environment:
DB_SERVER_HOST: zabbix-postgres
POSTGRES_DB: ${POSTGRES_DB}
POSTGRES_USER: ${POSTGRES_USER}
POSTGRES_PASSWORD: ${POSTGRES_PASSWORD}
ZBX_SERVER_HOST: zabbix-server
PHP_TZ: ${PHP_TZ}
ports:
- "8080:8080" # ポートフォワーディング設定
zabbix-agent:
image: zabbix/zabbix-agent2:alpine-7.0-latest
container_name: zabbix-agent
hostname: zabbix-agent
restart: unless-stopped
group_add: # groupIDは適宜確認
- "8" # これでadmグループにイン。これがないとsyslogが読めない。
environment:
ZBX_SERVER_HOST: zabbix-server
volumes:
- /var/log/syslog:/var/log/syslog:ro # syslogのマウント
volumes:
postgres_data:
Dockerfile
FROM zabbix/zabbix-server-pgsql:alpine-7.0-latest
USER root
RUN apk add --no-cache net-snmp-tools
USER zabbix
Zabbixで今できていること
Zabbixで実装できたこと
- 各サーバの基本的な障害検知(CPU、メモリ、ディスク使用率など)
- 不正ログインの疑いの検知
- ネットワークインターフェースなどのステータスの監視
ハマったポイント
Zabbixを導入する際にハマったポイント
- 別サーバ内のDockerコンテナのZabbix Agentとの通信
- 実機のポートに対するコンテナのポートフォワードの設定や、実機のポート開放などしっかり通信の流れを意識しながら解決しました。一度FWを含め全開放しながら絞っていくなどの作業をコツコツしました。
Zabbixを導入しての感想
よかったポイント
- おうちのネットワークやサーバの状況を一か所で監視できる
- ちゃんと設定したらなんでも通知で検知できるようになる(きっと)
- 実際の現場でも(おそらく)こんな感じなのかなーという疑似体験ができる
さいごに
Fortigateは本当に扱いやすい機器だと思います。
また、Zabbixも環境を作るだけなら、そこまで難しくないのでは?と感じています。
Zabbixについては、導入したあとに、どういったことにアラートを出して、どんな時に通知を出すかという設定をするのかがとても大事で、また難しい部分になると思います。
私自身、Zabbixの設定自体は、本当に表面的なことしかできていないので、今後は、合間を見てアップグレードしていきたいと思います。
最後まで読んでいただきありがとうございました。
