
ProxmoxにWiFiアクセスポイントを設定してWiFi経由でアクセスする

Intel N100のミニPCにはWiFiデバイスがついていますが、Proxmoxでは使えません。
ProxmoxでWiFiデバイスの利用を推奨しない理由は、公式Wikiに書いてありますが、ご家庭の遊びマシンではWiFiが利用できたほうがやっぱり嬉しいです。
今回はProxmoxにアクセスポイントを作って、Proxmoxの仮想マシンにアクセスできるようにしました。
- ソフトウェアアクセスポイント - ArchWiki: https://wiki.archlinux.jp/index.php/%E3%82%BD%E3%83%95%E3%83%88%E3%82%A6%E3%82%A7%E3%82%A2%E3%82%A2%E3%82%AF%E3%82%BB%E3%82%B9%E3%83%9D%E3%82%A4%E3%83%B3%E3%83%88
おことわり
今回使ったN100マシンは、自宅サーバーに使ってるBeelink Mini S12 Proではなく、預かっているT-Bao T8 PlusというLANポートが2つあるN100マシンを使っています。そういうことでLANポートもBeelinkはIntelチップでデバイス名はwlo1
、T-BaoはRealtekでwlp3s0
に変わっています。
今回はデバイスが多いのでまとめました。ネットワークは、そのままデバイス、ブリッジ、コンテナ直結です。
役割 | ネットデバイス | Linuxブリッジ | コンテナデバイス | OpenWrtデバイス | OpenWrtブリッジ |
---|---|---|---|---|---|
外側 | enp1s0 | vmbr0 | eth0 | WAN | |
内側(有線) | enp4s0 | vmbr1 | eth1 | LAN | BR-LAN |
内側(無線) | wlp3s0 | (同上) | (同上) | (同上) | (同上) |
Proxmox本体側(ノード)の作業
アクセスポイントが使えるか調べる
アクセスポイントとして使うには無線LANデバイスがAPモードをサポートしていることが必要です。N100マシンでは大丈夫ですが、ひとまず確認しておきます。
Proxmoxノードの[シェル]を開いて、無線デバイス設定ツールのiwをインストールします。そして、iw list
で無線デバイスの情報を表示します。すると中に「Suported interface mode」があって、その中にAP
と書いてあればアクセスポイントとして使えます。
# apt install iw
# iw list | less
(中略)
Supported interface modes:
* IBSS
* managed
* AP
* AP/VLAN
* monitor
* mesh point
無線デバイスのブリッジを追加する
無線デバイス用のブリッジを追加します。無線デバイスですが、存在していてもProxmoxが認識している場合と認識していない場合があります。Proxmoxノードの[システム]→[ネットワーク]を開いて、無線デバイスがなければ、/etc/network/interfaces
に設定を追加します。
無線デバイスが認識されていない場合
無線デバイスを追加するには、Proxmoxノードのシェルを開いてip a
で無線デバイス名を確認します。
# ip a | less
(中略)
3: wlo1: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN group default qlen 1000
link/ether c4:3d:1a:d6:bb:31 brd ff:ff:ff:ff:ff:ff
デバイス名がwlo1
と分かったのでエディタで/etc/network/interfaces
を開いて追記します。
nano /etc/network/interfaces
設定ファイルを開いたら下の1行を末尾に追記します。wlo1
は無線デバイス名なので上で調べたデバイス名と違っていれば環境に合わせて置き換えてください。
iface wlo1 inet manual
これで、Proxmoxノードの[システム]→[ネットワーク]に戻ると無線デバイスが見えるようになります。では続けてブリッジを追加します。
無線デバイスが認識されている場合
Proxmoxノードの[システム]→[ネットワーク]を開くと、LANポートのデバイスenp1s0
にはブリッジvmbr0
、enp4s0
にはブリッジvmbr1
がそれぞれ作成されています。このブリッジに無線デバイスを参加させれば共有されるので、参加させたいブリッジデバイス(今回はvmbr1
)を選択して上のメニューにある「編集」を選択します。
ブリッジの設定ダイアログが開いたら、ブリッジポートにenp4s0
が入っていますがその後ろにスペースを開けて、無線デバイスwlp3s0
を追記します。
そして「編集を適用」ボタンを押して適用すれば設定は終了です。
hostapdをインストールする
無線デバイスとブリッジの準備ができたので、アクセスポイントにするためのhostapdをインストールして設定します。hostapdのインストールは、Proxmoxノードの[シェル]を開いてaptからインストールします。
apt install hostapd
インストールしたらhostapdを設定します。設定ファイルhostapd.conf
は無いのでエディタから/etc/hostapd/hostapd.conf
を作成します。
nano /etc/hostapd/hostapd.conf
hostapd.conf
の設定はArch Linux Wikiにあるものをほぼそのまま使っています。hostapdをインストールすると/usr/share/doc/hostapd/example
以下に説明付きの設定ファイルやシチュエーションに応じた設定ファイルのサンプルがあるので、それをコピーして利用しても構いません。ひとまずアクセスできるようにしたいのでパスワード固定で設定しています。
ssid=(アクセスポイントのSSID)
wpa_passphrase=(アクセスポイントのパスワード)
interface=wlp3s0 # Proxmoxの無線デバイス
bridge=vmbr1 # Proxmoxで無線デバイスに設定したブリッジデバイス
auth_algs=3
channel=1
driver=nl80211
hw_mode=g
logger_stdout=-1
logger_stdout_level=2
max_num_sta=5
rsn_pairwise=CCMP
wpa=2
wpa_key_mgmt=WPA-PSK
wpa_pairwise=TKIP CCMP
country_code=JP
utf8_ssid=1
設定ファイルを作成したらアクセスポイントとして見えるかテストするので、以下のコマンドで無線デバイスを起動します。
ip link set dev (無線デバイス) up
そして次のコマンドでhostapdを起動します。
hostapd -d /etc/hostapd/hostapd.conf
この状態で、WiFiアクセスができるデバイスからアクセスポイントを検索すると設定したSSIDのアクセスポイントが見えるはずです。今は見えるだけでIPも割り振られないので接続できません。これで問題がなく見えたなら、hostapdを自動起動するようにsystemdのマスクを外して有効化します。
systemctl unmask hostapd
systemctl enable hostapd
以上でProxmox本体側の設定は終わりです。
Proxmoxの作業
無線デバイスのブリッジを設定してhostapdを入れたなら作業としては、ほぼ終わってます。あとは無線デバイスにDHCPでIPを設定するものを用意すればアクセスポイントとして使えます。
なので、適当なコンテナにdnsmasqなどをインストールしてブリッジにつなげば終わりですが、ここで前回の「ProxmoxのLXCコンテナでOpenWrtを使う」が使えます。ということで、OpenWrtコンテナを設定して無線デバイスにDHCPでIPを設定するようにしましょう。
OpenWrtコンテナの設定
OpenWrtコンテナを追加する詳しい方法については前回の記事を見てもらうとして、コンテナのダウンロードがWeb UIがまどろっこしいという人は、wgetを使ってダウンロードしてコンテナを追加できます。OpenWrtのコンテナはデイリービルドなので日付を変更する必要があるので注意してください。
wget -bc -o /var/lib/vz/template/cache/openwrt-23.05-default_20240206_amd64.tar.xz https://images.linuxcontainers.org/images/openwrt/23.05/amd64/default/20240206_11%3A57/rootfs.tar.xz
pct create 501 /var/lib/vz/template/cache/openwrt-23.05-default_20240206_amd64.tar.xz --arch amd64 --hostname openwrt --rootfs local-lvm:4 --memory 512 --cores 1 --ostype unmanaged --unprivileged 1
OpenWrtのコンテナを追加したら、Proxmoxの追加したコンテナに戻ってネットワークを追加します。コンテナのネットワークについては、WANになるデバイスeth0
にvmbr0
を、LAN側になるeth1
に無線デバイスも参加しているvmbr1
をIPアドレスを設定せずに追加します。
ネットワークを追加したらコンテナを起動しますが、コンテナにはLAN側の設定がないので最初にネットワークの設定をします。
ネットワークの設定は、前回の記事と同じですがOpenWrtコンテナの[コンソール]を開きます。そしてEnterキーを押すとシェルに入るので下のシェルスクリプトをコピーしてコンソールに貼り付けます。
uci batch <<EOL
add network device
set network.@device[0].name='br-lan'
set network.@device[0].type='bridge'
set network.@device[0].ports='eth1'
set network.lan='interface'
set network.lan.device='br-lan'
set network.lan.proto='static'
set network.lan.ipaddr='192.168.1.1'
set network.lan.netmask='255.255.255.0'
EOL
uci commit
service network restart
ネットワークが設定されれば、設定はさておきOpenWrtのdnsmasqがDHCPでIPを振ってくれるのでインターネットにアクセスできます。WiFiからアクセスできるデバイスで設定したSSIDに接続してみましょう。
OpenWrtのネットワーク設定をしていないので、セグメントが違っていたりしてつながらない場合もあるかもしれません。その場合は、OpenWrtの設定を自分のネットワークに合わせて設定して接続を試してみてください。
まとめ
やっぱり自宅サーバーで家の中から使う場合には、WiFiからアクセスできるのは楽です。今回は接続できるか試したのでアクセスポイントのパスワードは固定にしていますが、Samba-ADとFreeRadiusで認証できるようにしたいですね。