ESXi on intel NUC でアクセスポイントを作る備忘録

Networks
Photo by hyt.

ESXi on intel NUC でアクセスポイントを作る備忘録です.

機器の概要

今回アクセスポイント化するのは,ESXi8 で仮想マシンサーバーとして運用している Intel NUC7I5BNH です.

ESXi7 to 8 アップデート備忘録
ESXi7 to 8 アップデート備忘録です. 環境バックアップ いちおうメジャーバージョンのアップデートなので,元に戻せるようバックアップをしておきます.ただし,仮想マシンのバックアップは, の通りなので,システム構成情報のみとすることに...

もともとこの NUC に搭載されていた Intel® Dual Band Wireless-AC 8265 を ESXi8 の PCI パススルー機能を用いて Linux 仮想マシン(Alpine Linux ver. 3.18.4)から利用することでアクセスポイント化します.

アクセスポイント化する目的

アクセスポイント化の目的は,異なる VLAN ネットワークに簡単にアクセスできるようにすることです.

実はウチの自宅はいろいろ理由があって,複数 VLAN にネットワークを分けています.

自宅 LAN の理想と現実 (2) 〜タグVLANの使いどころ〜
自宅でタグVLANって便利ですよ.何で? って記事です.どんな複雑なことやってんだ!って言われそうですが,我が家ではNTTのフレッツ光用のホームゲートウェイと高速無線LANルーター,それにFAXをそれぞれ離れたところに設置するために使ってま...

主に使う VLAN ネットワークには,NETGEAR NIGHTHAWK AX1800

NETGEAR NIGHTHAWK AX1800 雑観
NETGEAR NIGHTHAWK AX1800 雑観です. いつもの通り結論から言うと, Wifi6 かつメッシュ対応製品として最安価な製品だとおもいますが,今のところ大きな不満はないです.あえて言うならもう少し(サテライトだけでも)小さ...

をアクセスポイントとして設置しているのですが,メインで使っている以外の VLAN ID を持つネットワークにも無線LAN経由でアクセスしたいことがたまにあります.

業務向けのアクセスポイントの場合 VLAN 毎に SSID を設定することができるものがありますが,自宅で使うルーター機能とセットになっているアクセスポイントにはまずありませんし,もちろん現在使用中の AX1800 にもありません.ということで,現在使っている ESXi8 サーバーである NUC7I5BNH に搭載されていて使っていなかった Wifi をアクセスポイント化してメインの VLAN 以外のネットワークも Wifi に対応させようと考えた訳です.

制限事項

上記の通りの目的なので,本来なら VLAN ID ごとに異なる SSID となるようにしたいところです.しかし残念ながら,Intel のカードの場合は,これが(多分ハードウェア的に)これが実現できないようです.

これは,Linux の場合,iw コマンドで当該 LAN カードの valid interface mode combinationsの AP を見れば良いようで,実際,見てみると,

$ iw phy0 info
Wiphy phy0
  wiphy index: 0
  max # scan SSIDs: 20
  max scan IEs length: 422 bytes
  max # sched scan SSIDs: 20
  max # match sets: 11
  Retry short limit: 7
....
  valid interface combinations:
     * #{ managed } <= 1, #{ AP, P2P-client, P2P-GO } <= 1, #{ P2P-device } <= 1,
       total <= 3, #channels <= 2
....

の通り,AP<=1 となっているので,最大で1のアクセスポイントのみであることがわかります(Atheros のものだとできるらしい).

RasPiをVLAN毎にSSIDを分けるAPにする(hostapd) — かないノート

また,Intel の Wifi カードを Linux から AP として使う場合は,地域設定を上手く切り替えることができない(5GHz 帯は国によって発して良い電波の周波数帯域が異なっている)という問題があり,結果5GHz帯のアクセスポイントには(少なくとも素直な方法では)できないっぽいです.

Linux | Intel AC 8265 | Creating 5GHZ Wifi Network with Hostapd
I am trying to setup a 5GHZ Wifi Network with Hostapd. The problem is that I cant select a channel because all my 5ghz c...

提供するAPの仕様

という事で,今回は,以下のようなインターフェスを持つ Alpine Linux で構成された仮想サーバーを作成します.

  • eth0: 日常的に使用しているLAN(管理用,VLAN100)へのインターフェス
  • eth1: AP を提供する先の VLAN ID を持つ LANへのインターフェース
  • wifi0: Intel® Dual Band Wireless-AC 8265 を表すインターフェース
  • br0: eth1 と wifi0 のブリッジインターフェース

このようにすることで,AP を提供する VLAN を変更したい場合は,単に eth1 の所属ネットワークを対応する VLAN ID を持つネットワークに ESXi の管理画面から切り替えれば良いだけになります.

Photo by hyt.

もちろんこのやり方だと,この AP で接続できる VLAN ネットワークは一つです.しかし,少なくとも私の場合は異なる VLAN ネットワークに同時に接続したいという訳ではありませんし(つまり一つにアクセスできれば十分),VLAN を切り替えても,SSID とパスワードは変わらず,畢竟,クライアントの接続先を変更する必要もないということになります.

次に,AP が提供する周波数帯は(Intel のカードの制限から)もちろん 2.4GHz 帯に限定されますが,

  • 802.11n, ac に対応
  • WPA-PSK 対応(WPA2対応)
  • SAE 対応(WPA3対応)

とすることにしました(本当はさらに WPS にも対応させたかったのですが,少なくとも Alpine Linux で標準的に提供されているソフトウェアの場合はどうも WPS オプションなしでコンパイルされているようで,この実現は今回は見送りました).

構築の実際

OS の準備

ESXi の仮想マシンとして Alpine Linux の最新版を導入しますが,気をつけなければならない点は以下の通りです.

  1. ネットワークのポートグループから,各VLAN ID に対応する仮想スイッチをあらかじめ作成しておく必要があります.また,仮想 NIC として eth0 は管理ネットワークに,eth1 は AP を提供する VLAN ネットワークに所属させます.
  2. メモリは512MBで十分ですが,「すべてのゲスト メモリを予約(すべてロック)」にチェックが必要です.
  3. ゲストOSのバージョンは「その他のLinux 6.x 以降(64ビット)」です.
  4. セキュアブートは無効化します.
  5. STANDARD バージョンの Alpine Linux をインストールする必要があります(VIRTUAL 等だと無線LANのドライバが提供されません).

Photo by hyt.

Photo by hyt.

Alpine Linux の実際のインストール手順や open-vm-tools のインストール等については以下の記事をご覧ください.

Alpine Linux インストール備忘録
Apine Linux インストール備忘録です. Alpine Linux ってなに? Alpine Linux と言えば,最近 Docker なんかのコンテナのベースとして利用されるディストリビューションです.これ,Linux のディスト...
Alpine Linux に open-vm-tools を追加する備忘録
Alpine Linux に open-vm-tools を追加する備忘録です. 公式の情報は以下の通り. 手順は以下の通りでした. まず,apk の Community Repository を以下の通り有効化します.単に communi...

sysctl.conf の設定

IPv4 や IPv6 のパケットの転送が正常に行われるよう /etc/sysctl.conf に以下のように設定します.

/etc/sysctl.conf

# content of this file will override /etc/sysctl.d/*
net.ipv4.ip_forward=1
net.ipv6.conf.all.forwarding=1
net.ipv6.conf.eth0.accept_ra=2

なお,最後の行の net.ipv6.conf.eth0.accept_ra=2 は RA を用いて eth0(管理ネットワークへのインターフェース)に IPv6 アドレス他を自動設定するためのものです.IPv6 も固定アドレス運用する場合は,net.ipv6.conf.eth0.accept_ra=0 と設定しなければなりません.

bridge 関係ソフトウェアの追加とブリッジの設定

今回は eth0 と wifi0 をブリッジしますので,そのためのソフトウェアを追加します.

# apk add bridge bridge-utils

また,/etc/networks/interfaces にブリッジの設定を行います.管理ネットワークの IPv4アドレス他を DHCP で設定します(IPv6 は RA で自動設定です).

# vi /etc/networks/interfaces
auto lo
iface lo inet loopback

auto eth0
iface eth0 inet dhcp

auto br0
iface br0 inet manual
  bridge-ports eth1
  bridge-stp off

hostapd の追加

無線LANアクセスポイント機能を提供するサーバソフトウェアである hostapd を追加し,その設定を行います.まず追加は,

# apk add hostapd

とするだけです.

次に,デフォルトでインストールされる設定フェイルをバックアップします(デフォルトの設定ファイルはあまりに多岐に渡る設定の説明が載せられており,分かりにくいので,今回は設定ファイルを書き換えるのではなく,新しく作成します).

# cp -rf /etc/hostapd /etc/hostapd.orig

また,新たな設定ファイルである hostapd.conf を以下の内容で作成します(SSID 名は ssid = 以下に,パスワードは,wpa_passphraseと sae_password に設定しますが,それ以外項目の詳しい説明は割愛します).

# rm -rf /etc/hostapd/*
# vi /etc/hostapd/hostapd.conf
interface=wlan0
bridge=br0
driver=nl80211
ssid=test
country_code=JP
hw_mode=g
channel=11
auth_algs=1
ieee80211n=1
ieee80211ac=1
wpa=2
wpa_passphrase=xxxxxxxxxxxxxx
wpa_key_mgmt=SAE WPA-PSK
rsn_pairwise=CCMP
group_cipher=CCMP
ieee80211w=1
sae_password=xxxxxxxxxxxxxxx
wps_rf_bands=ag

テスト起動は以下のように行います.

# hostapd -d /etc/hostapd/hostapd.conf

hostapd の自動起動を設定は以下の通りです.

# rc-update add hostapd boot
# reboot

設定は以上です.

使用雑感

実際の使用感ですが,2.4GHz 帯のみではありますが,数台つなぐくらいだと全く気にならない程度の速度が出ます(自宅は住宅地で,10じゃきかないくらいの大量のアクセスポイントが見える環境です).

WPA-PSK の接続も WPA3 の接続も全く問題なくPC,スマホ,タブレットから行えますし,VLAN の切り替えも簡単です.さすがにいつもつかう多数の機器を接続するネットワーク用のアクセスポイントとしては訳者不足だと思いますが,実験用とかあまり使われないネットワーク用のものとしては手軽で良いのではないかなと思います.もちろん ESXi で動かしてますので,逸般の誤家庭向けなんですけどね.

以上!

NetworksServer
スポンサーリンク
Following hyt!
タイトルとURLをコピーしました