0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

自宅ネットワーク構築備忘録

Last updated at Posted at 2025-07-13

自宅ネットワーク構築備忘録

前提

投稿者はネットワーク知識が乏しいため、以下の内容はあくまで個人の備忘録です。

目的

自宅環境でDHCPのIP制限を回避し、複数の機器を安定して接続するためのネットワーク構築。

構成

サーバA (ホストOS) を中心に、サーバBとサーバCを接続。サーバAはカーネル機能によるルーティングを利用し、外部ネットワークへの接続を実現。
なので、DHCPからのIP割り当てはサーバAに限定され、他のサーバは静的IPを使用。

上記の外部ネットワーク接続以外に、内部のみの管理ネットワークも構成。

使った機材

マネージドスイッチ: NETGEAR GS308Ev4 VLAN機能があればいい。今後のためにsnmpも使えるものと交換する予定。
サーバ: N100のミニPCを3台使用。ホストOSはUbuntu Server 24.04 LTS。

手順概要

  1. マネージドスイッチのVLAN設定をサーバA対向とルータ対向ポートで行う
  2. サーバAに仮想IFを設定し、VLANIFを作成、IPアドレスを割り当てる。
  3. サーバBとサーバCに仮想IFとVLANIF、IPを設定し、サーバAをデフォルトゲートウェイとして指定。
  4. マネージドスイッチのVLAN設定をサーバA、サーバB、サーバCのポートに適用。
  5. 各サーバから、外部の接続、および管理ネットワークへの接続を確認。

ルーティング用のサーバ以外のおおよその設定

# NetworkManager導入
sudo apt update
sudo apt install network-manager

# 仮想IFの設定
sudo nmcli con add type bridge con-name br0 ifname br0 ipv4.method disabled ipv6.method ignore

# 物理IFをブリッジに追加
sudo nmcli con add type bridge-slave con-name <物理IF名>-slave ifname <物理IF名> master br0

# VLAN設定
# VLAN AはgwとしてサーバAを指定
sudo nmcli con add type vlan con-name vlan<A> ifname br0.<A> dev br0 id 2 ip4 172.a.b.x/24 gw4 172.a.b.1
sudo nmcli con add type vlan con-name vlan<B> ifname br0.<B> dev br0 id 3 ip4 172.c.d.f/24

# IFの順次起動
sudo nmcli con down br0
sudo nmcli con down <物理IF名>-slave
sudo nmcli con up br0
sudo nmcli con up <物理IF名>-slave
sudo nmcli con up vlan<A>
sudo nmcli con up vlan<B>

サーバAの設定

ルーティング設定のため、上記のIF設定に加えて

# ルーティング機能有効化
echo "net.ipv4.ip_forward=1" | sudo tee -a /etc/sysctl.conf
sudo sysctl -p

# NAT設定(VLAN Aセグメントから外部への通信をNAT)
# br0は外部ネットワークに接続されている仮想IF
sudo iptables -t nat -A POSTROUTING -s 172.a.b.0/24 -o br0 -j MASQUERADE

# iptables永続化
sudo apt install iptables-persistent
sudo netfilter-persistent save

穴にはまったところ

物理IFにVLAN設定ができない

nmcliで物理IFに対してVLAN設定を行ったら、下記のエラーが発生

$ sudo nmcli con up vlan<A>
Error: Connection activation failed: Failed to find a compatible device for this connection

物理IFをnmcliで再作成してもうまくいかず。
なので今回は仮想IF(br)を作成して、そこにVLANを設定する方法に変更。

トランクポートの理解の誤り

NETGEARのポートにVLAN AとVLAN Bを設定する必要があったのでトランクで設定していた。
ルータ側のポートはアクセスVLANを設定していて、サーバAのポートはトランクVLANですべてのVLANを許可していた。
しかし、サーバAからルータに対してパケットが飛ばず、外部ネットワークに接続できなかった。
トランクポートはVLANタグ付きのパケットしか別のVLANに転送せず、タグなしパケット(通常の外部向け通信)はネイティブVLANにしか転送しないからなのかな。

てっきりトランクポートが外部向けパケットもよしなに処理してくれると思っていたが、そうではなかった。外部向けのパケットはすべてアクセスVLANと同じVLAN IDで飛ぶと思ったが、そうではなかった。

一応、NETGEARのVLAN機能である拡張ポートベースVLANを使用して、サーバAのポートにネイティブVLANとVLAN A,Bを設定することで解決。これにより、タグ付きパケットはVLAN別に、タグなしパケットは外部向けに適切に転送されるようになった。

まとめ

実際にルーティングであったり、サーバのVLAN設定を行うのは初めてだったがうまくできた。
FRRなどのルーティングソフトを使うのかと考えていたが、標準搭載機能でなんとかなってよかった。
次はどこかのサーバでVMからzabbixを動かして、SNMPを使ったネットワークの監視やHTTPSの通信などを行ってみたい。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?