はじめに
こんにちは、酸素です。
先日、HPE社のネットワークスイッチ、Aruba6000のセットアップを行いました。
購入自体は最近だったのですが、対象機器の製造日が古かったからなのか、ファームウェアのバージョンが低かったので、セットアップに併せてアップデートを行いました。
ファームウェアをネットワーク機器に適用する方法としては、ローカルPC上でTFTPサーバーを建てる方法が有名かと思います。実際にSolarWinds TFTP Serverを使った方法は下記の弊社エンジニアブログで紹介しております。
TFTPサーバを利用したFortigate60FへのOSインストール
しかし、今回は敢えてフリーのソフトウェアは用いずに、WSL2を使ってファームウェアをアップデートしてみましたので、紹介していきます。
環境
本記事では、下記の環境で進めていきます。
OS:Windows 11
IP:192.168.1.10
※switchと直接つなぐポートに静的割り当てする
WSL2
OS: Alamalinux 9
IP: 172.23.164.198
※こちらは自動割り当てされるもの
switch
型番:Aruba 6000
IP: 192.168.1.20
※サブネットをWindowsと揃えて互いに疎通できることを確認してください
なお、アップデート前のファームウェアバージョンは以下の通りです。
※以降、switch側の文字を黄色、WSL(およびwindows)側の表示を白とします。
switch# show images
---------------------------------------------------------------------------
ArubaOS-CX Primary Image
---------------------------------------------------------------------------
Version : PL.10.08.1010
Size : 302 MB
Date : 2021-09-21 14:53:08 UTC
SHA-256 : Verifying 50%
WSL2とwindowsの設定
WSL2にログインし、作業用のディレクトリの作成と該当ファームウェアのファイルを置きます。
wsl> # mkdir /home/user/fw && cd /home/user/fw
wsl> # ll
total 265908
-rwxr-xr-x 1 root root 272288546 May 28 15:57 AOS-CX_6100-6000_10_17_1001.swi
// SW側の実装が古いとsftpに失敗するので、古い暗号化方式を許可する
wsl> # vi /etc/ssh/sshd_config
---------------------------------------------
+ HostKeyAlgorithms +ssh-rsa
+ PubkeyAcceptedAlgorithms +ssh-rsa
+ KexAlgorithms +diffie-hellman-group14-sha1
+ PasswordAuthentication yes
---------------------------------------------
wsl> # update-crypto-policies --set LEGACY
wsl> # systemctl restart sshd
これでWSL2上でssh接続を受け付けられるようになりました。
しかし、この状態ではwindows(ホストOS)側とWSL2間の通信できるものの、
windowsと接続しているswitchからではWSL2と通信することができません。
windows側でswitchからsshを受け付けるポートを指定し、それをWSLの22番ポートへ転送するポートフォワーディングの設定を行います。
設定はwindows上のGUIからでも行えますし、powershellのコマンドで設定することも可能です。
今回は後者のpowershellから行います。
※管理者権限でpowershellを起動してください
// WSLに割り当てられているIPアドレスを確認
PS C:\Users\user> wsl hostname -I
172.23.164.198
// ポートフォワーディングの設定
PS C:\WINDOWS\system32> netsh interface portproxy add v4tov4 `
>> listenaddress=192.168.1.10 `
>> listenport=22 `
>> connectaddress=172.23.164.198 `
>> connectport=22
PS C:\WINDOWS\system32> netsh interface portproxy show all
ipv4 をリッスンする: ipv4 に接続する:
Address Port Address Port
--------------- ---------- --------------- ----------
192.168.1.10 22 172.23.164.198 22
// ファイアウォールの許可設定
PS C:\WINDOWS\system32> New-NetFirewallRule `
>> -DisplayName "WSL2-SFTP" `
>> -Direction Inbound `
>> -Protocol TCP `
>> -LocalPort 22 `
>> -Action Allow
Name : {a7002673-6420-426a-8db6-13a69c66fefd}
DisplayName : WSL2-SFTP
Description :
DisplayGroup :
Group :
Enabled : True
Profile : Any
Platform : {}
Direction : Inbound
Action : Allow
EdgeTraversalPolicy : Block
LooseSourceMapping : False
LocalOnlyMapping : False
Owner :
PrimaryStatus : OK
Status : 規則は、ストアから正常に解析されました。 (65536)
EnforcementStatus : NotApplicable
PolicyStoreSource : PersistentStore
PolicyStoreSourceType : Local
RemoteDynamicKeywordAddresses : {}
PolicyAppId :
PackageFamilyName :
この設定により、switch側からwindowsの物理NIC宛にsshするとWSL2へ転送されるようになります。
場合によってはポートフォワーディングを無効化してしまっていることがあります。(1敗)
それでは、実際にswitch側からssh(sftp)でファームウェアを取得します
switch# copy sftp://user@192.168.1.20//home/user/fw/AOS-CX_6100-6000_10_17_1001.swi primary
上記コマンドでswitch側にファームウェアが置かれるため、再起動して適用します。
再起動後は下記のようになりました。
switch# show images
---------------------------------------------------------------------------
ArubaOS-CX Primary Image
---------------------------------------------------------------------------
Version : PL.10.17.1001
Size : 272 MB
Date : 2026-02-18 14:24:30 UTC
SHA-256 : d204a5abb066b9617be4d7c669d0b13d89f44ded5ce96a442a9696613c37d7d8
最後に
今回、作業時にはwindows側のセキュリティソフトやswitchのsshの実装が古かったりと躓きポイントは多かった印象でした。
ですが、本記事を執筆していて、行った設定の内容や手順は理解していれば簡単だったなとも思いました。
シンプルにやるのであればやはりフリーのソフトウェアをインストールしてTFTPを建てるのが簡単かと思いますが、特定の要件や都合でWSL2を使わざるを得ない場合は役立てていただけますと幸いです。

