hnwの日記

GS105EとMacOSXでTagged VLAN設定

やや変則的なネットワークを組むのに、VLANが使える手頃なL2スイッチGS105Eを利用してみました。その手順を紹介します。

要件

  • 有線LAN接続した端末Aの通信内容を、任意のタイミングでパケットキャプチャしたい
  • パケットキャプチャはMacbook Airで行いたい
  • 端末Aがインターネットに接続する際、Macbook Airを経由させたい
  • Macbook Airに物理的に接続できる有線LANインターフェースはUSB接続1個のみ
    • 他にWi-Fiインターフェースも通信に使える
  • Macbook Airがネットワークに参加していないときに、比較的簡単な工事で端末Aがインターネット接続できるようにしたい
    • その際にパケットキャプチャできる必要はない


これを満たすネットワークを組むのにVLAN機能を使ってみました。

準備

Tagged VLANが使えるスイッチを買う

VLAN設定ができる5ポートのL2スイッチGS105Eを買いました。Amazonで3000円台後半でした。QoSやポートミラーリングなども出来てお買い得なスイッチです。会社の詳しい人にオススメされるままに買ってみました。


Tagged VLANが使えるUSB 有線LANアダプタを用意する

私の場合、手持ちのBuffalo LUA3-U2-ATXが普通に使えました。機種によってはTagged VLAN非対応だったりするのかもしれませんが、詳しいところはわかりません。



ネットワーク設計

パケットキャプチャ時

端末A(スマートフォンのアイコンで表現)の通信はMacOSXの「インターネット共有」機能でMacbook AirWi-Fi経由としつつ、インターフェースとしてVLAN2の優先度を高くすることでMacBook Airの他の通信は有線LAN経由とするようにします。


有線LAN接続について、インターネット共有に使う分と普段の通信に使う分と論理的には2ポート分が必要なので、ここでVLANを使って物理的には1ポートで済ませてしまうわけです。



丸数字はポート番号を表しています。

MacBook Airがネットワークに不参加のとき

MacBook Airがネットワークに不参加のときに端末Aをインターネット接続させたい場合、単に4番ポートに接続されていたケーブルを2番ポート(または3番ポート)に差し替えて利用するだけで済みます。



これより簡単に要件を満たす方法が思いつきませんでした…。スイッチの設定画面を操作した方が人によっては楽かもしれません。

設定

GS105Eの設定

上記設定を実現するVLAN設定は下記のようになります。

VLAN ID 1 2 3 4 5
1 U U
2 U U U T

GS105Eの最近のファームウェアでは、ブラウザから192.168.0.239にアクセスすれば設定画面が開けます。パスワードはググってください。


「VLAN」「802.1Q」「Advanced」で、まず「Advanced 802.1Q VLAN」を「Enable」にします。


以下、次のような手順になります。

  • 「VLAN Configuration」からVLAN ID 2を「Add」
  • 「VLAN Membership」でVLAN ID 2を次のように設定


  • 「Port PVID」で次のように設定


  • 「VLAN Membership」でVLAN ID 1を次のように設定



Webインターフェースから設定できると心理的ハードルは下がりますが、若干ダルいですね。

MacBook Airの設定

「システム環境設定」「ネットワーク」の歯車アイコンから「仮想インターフェースを管理」を選び、「+」「新規VLAN」から下記のように設定します。



今回はTagged VLANは1つだけなので、こちらのみ設定します。VLAN名はわかれば何でもいいです。


また、「システム環境設定」「共有」「インターネット共有」の設定は次のようになります。



最後に「システム環境設定」「ネットワーク」の歯車アイコンから「サービスの順序を設定」を選び、「VLAN2」の優先度を最高にします。



この設定により、VLAN2の通信はMacBook AirにはVLAN ID 2のタグ付きで届くので、新規作成したVLANインターフェースで受け取ることになります。一方VLAN1からの通信はタグ無しで届きますので、VLANを意識せず通常通りのインターフェースで受け取ることができます。インターネット共有機能を使った場合は専用のブリッジインターフェースが作られますので、これに対してパケットキャプチャするなりpfctlコマンドで制御したりすることが可能になります。

余談

最初はVLANインターフェースをインターネット共有の子供側に使おうと思っていたんですが、MacOSXの「システム環境設定」からは設定できなさそうだったので逆の構成にしました。普通に考えたら上流側をUntaggedにしたいですよね…。

注意点など

紹介した構成自体に問題はありませんが、この設定のままMacBook Airの有線LANインターフェースを他の環境に接続してしまうと、接続先ネットワークに対して「インターネット共有」がDHCPIPアドレスを配ってしまって迷惑になります。こんなネットワーク構成を真似する人はいないでしょうが、念のため。