ページ

2021年4月25日日曜日

NETGEAR製スマートスイッチ GS308T を使用して,NIC が1つしかない PC でルーターを自作する

我が家ではRaspberry Pi にUSB-NIC を接続することで,LAN ポート(NIC)を増設してルーター化していますが,以下のサイトで紹介されているようにタグVLAN を使用することで,LAN ポートを増設すること無く Linux PC をルーター化できることが判ったので,早速試してみました.

Linuxルータのタコ足配線を解消しよう ~ タグVLAN(IEEE 802.1Q)の活用
http://dsas.blog.klab.org/archives/50391881.html
LinuxとVLANで作る、シンプル&スケーラブルネットワークの極意
https://www.irori.org/doc/infra/wd41.html

VLAN に対応したスイッチングハブを所持していなかったため,NETGEAR 製の GS308T を購入しました.5,000 円ちょっとでこれだけ高機能な代物が手に入るのは本当に凄いことだと思います.

近い将来,ネットワークカメラも導入したいと考えているので,PoE 対応製品にすることも考えましたが,GS308T と比べてだいぶ値段が上がってしまうことと,配線の関係から結局ネットワークカメラもWi-Fi 接続になるような気がしたので,PoE については見送ることにしました.

それでは,GS308T について紹介してきます.外装はこんな感じです.

同梱品は余計なものは一切なく,本体とACアダプタ.あとは,簡単な取説や保証書などの書類のみ.

ポートは8口あり,ポートごとの区別は特にありません(多分).ACアダプタからの電源供給プラグ差込口はポートとは反対側にあり,うっすら写っている底面には,MACアドレスなどの製品情報がプリントされたシールが貼付されています.

また,通信速度に応じて各ポート左上のランプの色が変化します.(100Mbpsはオレンジ.1Gbpsは緑.)

さて,ここからインストールに移ります.

まず物理的な接続としては,8番ポートをWAN側に接続し,7番ポートは別のスイッチングハブ.6番ポートにラズパイルーター.その他のポートは,blu-ray プレイヤーなどのネットワーク機器を繋ぎました.

したがって,8番ポートと6番ポートでひとつの Virtual LAN,1〜7番ポートでもうひとつの Virtual LAN を組めば実現したい構成になります.

ブラウザでアクセスした画面は直感的に操作できる UI になっているので,迷いなく操作できると思います.今回は,VLAN IDとして「3」を追加し,1〜7番ポートをデフォルトのVLAN ID:1に,6番,8番ポートを追加したVLAN ID:3に繋ぎました.

余談ですが,NETGEAR 製のスイッチングハブはDHCPでIPアドレスが自動付与される仕様のため,IP アドレス探索用の専用アプリも提供されているようですが,我が家のように Linux ルーターであれば,SSH でログインして arp コマンドもとい ip neighbor show コマンドを使用すれば,すぐにIP アドレスを特定することができます.

VLAN ID:1の設定画面
1〜7番ポートをUntaggedポートとして接続.

VLAN ID:3の設定画面
8番ポートをUntaggedポート.6番ポートをTaggedポートとして接続.

これで設定は完了.と思っていたので,うまく接続できなくてかなり焦りました.

ここからラズパイの設定を色々弄ったり,ハブのポートをあれやこれや繋ぎ変えて実験したり,そもそもVLAN自体使うのが初めてだったので,VLANの仕組みを一から勉強し直したり...2,3日悩み続けようやく答えにたどり着きました.

それが下記のPort VLAN ID(PVID)設定です.
この画像ではすでに正しい設定になっていますが,初期状態ではg1〜g8の全てのPVIDが1に設定されています.つまり,8番ポートはVLAN ID:3のVirtual LANにしか所属しない設定になのに,PVIDは1というチグハグな状態になっていた訳です.

色々と柔軟に設定できるように敢えてそのような状態を許容しているのかもしれませんが,普通はやらない設定だと思うので,せめてアラートぐらい出してほしいですね...ともあれ,これでスイッチングハブ側の設定は完了です.

次にラズパイルーター側の設定に移ります.まずは VLAN を使うためのパッケージをインストールします.
 $ sudo apt install vlan

パッケージのインストールが完了したら,VLAN 用の仮想インターフェイスを作成します.eth0 を分割し,VLAN ID:3 で使用するため,インターフェイス名は eth0.3 になります.
/etc/network/interfaces
----------
auto eth0.3
iface eth0.3 inet manual
  vlan-raw-device eth0

必須ではありませんが,ここで一度再起動してから,ip link show コマンドを実行して eth0.3 が正常に作成されているか確認しても良いかもしれません.

最後に,eth0.3 を使用するための設定です.ここで,これまでの自作ルーターの記事を以下に纏めておきます.結論から言うと,下記記事の eth1 で設定していた項目を全て,eth0.3 に書き換えると設定は完了です.
  1. Raspberry Pi を楽天ひかりのIPv4 over IPv6(DS-Lite・Xpass)に対応したルーターにする
  2. Raspberry Pi ルーターで DS-Lite と PPPoE 接続を共存させる
  3. Raspberry Pi ルーターに Dynamic DNS を導入する
  4. Raspberry Pi ルーターでポートフォワーディングして,LAN 内の VPN に接続する.


具体的には,
1番の記事の,「IPv4 over IPv6(DS-Lite・Xpass)の設定」で eth1 を eth0.3 に書き換えます.
1番の記事の,「NAT及びFireWallの設定」で eth1 を eth0.3 に書き換えます.
2番の記事の,「PPPoE接続の設定」で eth1 を eth0.3 に書き換えます.

最後にラズパイルーターを再起動して,設定が反映されたことを確認します.

0 件のコメント:

コメントを投稿