Windowsで簡易的にWebサーバをたてるソフト HFS


むかしはネットワーク機器のfirmware versionアップにtftpやftpなどを使うことが多かった。

最近はhttp経由という例が増えている。

Windows標準のIISだと大がかりすぎるのでもっと簡単にできるものを探して「簡単WEBサーバー」というものを試したのだが、これはGETしか実装していないという中途半端なものだった。

GETしか実装されていないと何が問題になるかと言うと、ファイルダウンロード前にHEADでファイルサイズを確認し、保存できる領域があるかを確認する、という動作をする機器の場合、HEADが実装されていないため容量確認ができず、ダウンロードが実施できない、ということになる。

で、探したところ「HFS ~ Http File Server」というものを発見。

これは2MBのバイナリでインストール不要というもの。

hfs.exeを実行すると下記の様にウィンドウが立ち上がり、Webサーバとして動作しだす。

ファイルの登録は簡単で、登録したいファイルの右クリックメニューから「Add to HFS」を選択するだけ、となっている。

追加すると下記の様に/直下に配置される。ファイルを選択するとダウンロードに使用するURLが表示されるという点も便利

ダウンロードが開始されるとLogウインドウにどういうリクエストがあったのかが表示される。

起動したWindowsに複数のIPアドレスがある場合、どのIPアドレスで公開するかは選択できる。

ポート番号は80以外にも設定することはできる(httpsは未対応)

サービスとして動作させることはできないが、Windows起動時にHFSを実行する、という設定もある

NetVault 用firewall設定 for RHEL/Windows


NetVaultサーバをRHEL上にたてて、クライアントにNetAppとRHELとWindows Serverがいる場合のファイアウォール設定サンプル。

必要なポートについては「NetVault 12.0管理ガイド ファイアウォールの設定の例」より流用。

NetVaultサーバ/クライアント間の基本的な通信はネットワークマネージャによりポート20031のTCP/UDPで行われる。
またクライアント上でコミュニケーションマネージャがポート20032 TCPを使用する。

また、NDMPバックアップの場合、NetVaultサーバ側でポート10000 TCPと40000 TCPを使用する。

設定はOS側のfirewall設定と、NetVault側のファイアウォール設定の2つを行う。

NetVault側ファイアウォール設定

NetVaultサーバ側は以下のように設定する。設定したあとはサービス再起動が必須。

デバイス待ち受けポート50100-50199
デバイス接続ポート50200-50299
メッセージ チャンネルの待ち受けポート50300-50399
メッセージ チャンネルの接続ポート50400-50499
NDMPコントロール チャンネルの接続ポート10000
NetVault NDMPデータ チャンネルの待ち受けポート40000
NetVaultマシン間の内部的な通信に使用するポート50500-50599

クライアント側はNDMP関連設定がなくでも良い。設定したあとはサービス再起動が必須。

デバイス待ち受けポート50100-50199
デバイス接続ポート50200-50299
メッセージ チャンネルの待ち受けポート50300-50399
メッセージ チャンネルの接続ポート50400-50499
NDMPコントロール チャンネルの接続ポート
NetVault NDMPデータ チャンネルの待ち受けポート
NetVaultマシン間の内部的な通信に使用するポート50500-50599

クライアント側のfirewallが動いている場合、NetVaultサーバからの設定変更を受け付けることができない。この場合は、NetVaultクライアント側で「txtconfig」コマンドを実行して設定を変更する。

実行すると以下のような画面が表示される。

「p」と入力すると、2枚目のメニューが表示される。この中の「19. ファイアウォール」を変更するため「19」と入力する。

上から順に設定を変更していく。

最後は「s」を入力し、変更を保存して終了する。(qだと設定を反映しない)

OS側firewall設定

サーバ側として以下を開ける
 ・8443 TCP (管理画面)
 ・10000 TCP (NDMP)
 ・40000 TCP (NDP)
 ・20031-20032 TCP
 ・20031 UDP
 ・50100-50599 TCP

クライアント側は管理画面用の8443と、NDMP用の10000と40000の設定を抜く。

CentOS7の場合以下とした

# firewall-cmd --permanent --zone=public --add-port=8443/tcp
# firewall-cmd --permanent --zone=public --add-port=10000/tcp
# firewall-cmd --permanent --zone=public --add-port=40000/tcp
# firewall-cmd --permanent --zone=public --add-port=20031-20032/tcp
# firewall-cmd --permanent --zone=public --add-port=20031/udp
# firewall-cmd --permanent --zone=public --add-port=50100-50599/tcp
# firewall-cmd --reload

Windowsクライアントの場合以下とした。

netsh advfirewall firewall add rule name=”NVBU TCP in ports” dir=in protocol=tcp localport=20031-20032 action=allow
netsh advfirewall firewall add rule name=”NVBU TCP in ports” dir=in protocol=tcp localport=50100-50599 action=allow

netsh advfirewall firewall add rule name=”NVBU TCP out ports” dir=out protocol=tcp localport=20031-20032 action=allow
netsh advfirewall firewall add rule name=”NVBU TCP out ports” dir=out protocol=tcp localport=50100-50599 action=allow

netsh advfirewall firewall add rule name=”NVBU UDP in ports” dir=in protocol=udp localport=20031 action=allow
netsh advfirewall firewall add rule name=”NVBU UDP out ports” dir=out protocol=udp localport=20031 action=allow

最後にNetVaultのクライアント管理にてクライアント追加を行う際に「クライアントはファイアウォールの外側に存在」にチェックを入れることを忘れないこと。(入れないとNetVaultサーバからクライアントへのアクセスに指定したポートを使用しない)

ONTAP 9.5でsambaドメインに参加できない & ONTAP 9.7で失敗


samba 4.11.6で作ったActive DirectoryにONTAP 9.5を参加させようとするとエラーになる。

ONTAP API が失敗しました: Failed to create the Active Directory machine account "ファイルサーバ名". Reason: LDAP Error: Strong authentication is required Details: Error: Machine account creation procedure failed [ 136] Loaded the preliminary configuration. [ 215] Successfully connected to ip ADサーバIP, port 88 using TCP [ 284] Successfully connected to ip ADサーバIP, port 389 using TCP [ 308] Unable to connect to LDAP (Active Directory) service on ADサーバホスト名 (Error: Strong(er) authentication required) **[ 308] FAILURE: Unable to make a connection (LDAP (Active ** Directory):AD名), result: 7609 . (エラー:13001)

調べたところ、sambaのglobal設定で「ldap server require strong auth = no」を設定する、とのこと。

これを設定し、sambaを再起動したところ、参加できた。


ONTAP 9.7にて、上記手順を実施した上で参加を試みたところ「Unable to connect to NetLogon service on」というエラーになった。

netapp::> vserver cifs create -vserver ファイルサーバ名 -cifs-server ファイルサーバ名 -domain AD名 -ou CN=Computers -default-site "" -status-admin up -comment "" -netbios-aliases ファイルサーバ名

In order to create an Active Directory machine account for the CIFS server, you
must supply the name and password of a Windows account with sufficient
privileges to add computers to the "CN=Computers" container within the
"AD名" domain.

Enter the user name: administrator

Enter the password:

Warning: An account by this name already exists in Active Directory at
         CN=ファイルサーバ名,CN=Computers,DC=xx,DC=xx.
         If there is an existing DNS entry for the name ファイルサーバ名, it must be
         removed. Data ONTAP cannot remove such an entry.
         Use an external tool to remove it after this command completes.
         Ok to reuse this account? {y|n}: y

Error: Machine account creation procedure failed
  [    31] Loaded the preliminary configuration.
  [   107] Created a machine account in the domain
  [   108] SID to name translations of Domain Users and Admins
           completed successfully
  [   113] Modified account 'cn=ファイルサーバ名,CN=Computers,dc=xx
           =CO,dc=JP'
  [   114] Successfully connected to ip xx.xx.xx.xx, port 88 using
           TCP
  [   129] Successfully connected to ip xx.xx.xx.xx, port 464
           using TCP
  [   216] Kerberos password set for 'ファイルサーバ名$@AD名'
           succeeded
  [   216] Set initial account password
  [   223] Successfully connected to ip xx.xx.xx.xx, port 445
           using TCP
  [   274] Successfully connected to ip xx.xx.xx.xx, port 88 using
           TCP
  [   297] Successfully authenticated with DC
           adserver.AD名
  [   322] Unable to connect to NetLogon service on
           adserver.AD名 (Error:
           RESULT_ERROR_GENERAL_FAILURE)
**[   322] FAILURE: Unable to make a connection
**         (NetLogon:AD名), result: 3
  [   322] Unable to make a NetLogon connection to
           adserver.AD名 using the new machine account

Error: command failed: Failed to create the Active Directory machine account
       "ファイルサーバ名". Reason: general failure.

netapp::>

このとき「vserver cifs security show -vserver ファイルサーバ名」で確認する「SMB? Enabled for DC Connections」は下記の通り。

netapp::> vserver cifs security show -vserver ファイルサーバ名

Vserver: ファイルサーバ名

                            Kerberos Clock Skew:                   - minutes
                            Kerberos Ticket Age:                   - hours
                           Kerberos Renewal Age:                   - days
                           Kerberos KDC Timeout:                   - seconds
                            Is Signing Required:                   -
                Is Password Complexity Required:                   -
           Use start_tls for AD LDAP connection:               false
                      Is AES Encryption Enabled:               false
                         LM Compatibility Level:  lm-ntlm-ntlmv2-krb
                     Is SMB Encryption Required:                   -
                        Client Session Security:                none
                SMB1 Enabled for DC Connections:               false
                SMB2 Enabled for DC Connections:      system-default
  LDAP Referral Enabled For AD LDAP connections:               false
               Use LDAPS for AD LDAP connection:               false

netapp::>

「SMB1 Enabled for DC Connections」をtrueに変更しても状況は変わらず。

Sambaサーバの /usr/local/samba/var/log.samba を確認すると、以下の出力があった。

[2020/08/07 14:26:55.226653,  0] ../../source4/rpc_server/netlogon/dcerpc_netlogon.c:284(dcesrv_netr_ServerAuthenticate3_helper)
  dcesrv_netr_ServerAuthenticate3_helper: schannel required but client failed to offer it. Client was ファイルサーバ名$

「schannel」というオプションが必要らしい。

Netlogon Issue “schannel required”」を参考に設定してみたところ、schannelというオプションはないというエラー…「Bug 13464 – smb.conf-configuration “server schannel = auto” needed in future versions」を見ると「server schannel = auto」が正しい模様。

/usr/local/samba/etc/smb.conf を下記の様に修正して、sambaを再起動したところ、ONTAP 9.7でのActive Directoryの参加が可能になった。

# Global parameters
[global]
        netbios name = ADサーバ名
        realm = AD名
        server role = active directory domain controller
        workgroup = AD名
        idmap_ldb:use rfc2307 = yes
        ldap server require strong auth = no
        server schannel = auto

[netlogon]
        path = /usr/local/samba/var/locks/sysvol/AD名/scripts
        read only = No

[sysvol]
        path = /usr/local/samba/var/locks/sysvol
        read only = No

Kaspersky Security Cloudをインストールしてみた


2017年7月に「カスペルスキー、無償アンチウイルスソフトを全世界リリース」と登場したカスペルスキーの無償版が2020年6月の段階でも Kaspersky Security Cloud – Free という名称で生き残っていた。

意外に思いつつもインストールしてみる。

標準だと「Kaspersky Password Manager」もインストールされてしまうようなので、解除します。

182.8MBのプログラム本体ダウンロードが開始されました。

以前、有償版のKasperskyを使っていたこともありアカウントがあるのでログイン…と思ったんだけど、新規登録扱いだな?メールアカウント間違ったかな?

めっちゃ目立つ「Upgrade package」は何かと思ったら、有償版への勧誘でした。

警告マークがついている「PC Cleaner」と「Safe Money」は、クリックしてみると有償版へのアップグレードを要求されます。

警告ついていないのに、「Database」を開いてみるとパターンファイルが更新されていない、とのこと・・・

1日1回ぐらいは更新されるようです。(Last update: 12hours表示とかは確認した)

導入されたサービスは「Kaspersky Anti-Virus Service 20.0」「Kaspersky Secure Connection Service 4.0」「Kaspersky Volume Shadow Copy Service Bridge 20.0」

しばらく操作を行わない状態で放置した後のメモリ使用量

ラズパイ4でWindows 10 on ARMを動かす


ラズパイ4でWindows 10 on ARMが動くようになった・・・とは聞いていたのですが、ラズパイ4を持っていないので試してはいませんでした。

しかし、ラズパイ4 8GBモデルを買ってしまったので、試してみました。

とりあえず感想ですが、動作自体はラズパイ3で使うより快適ですが、メモリが1GBに制限されます。また、オンボードのNICとUSB Aポート、WiFi/Bluetoothが使えないというのが難点で、全部Type-CポートにつなげたUSB Hubにつなげる必要があります。

デバイスのサポート状況については「Windows on ARM(64) device drivers for the Raspberry Pi platform」を参照のこと

また、今回はツールを使用してmicroSDを作成していますが、手動でやる場合については「How-to: installing windows 10 arm64 (17134) on your raspberry pi 3 and 4」を参照してください。

準備するもの

・ラズパイ4

2020/06/06時点ではメモリ認識が1GBまでなので、どのラズパイ4を買っても同じです。

・高速なmicroSD

低速なmicroSDを使うと起動にだいぶ時間がかかります。
「A1 V30」か「A2 V30」と書かれているやつを入手します。(次点はA1 V10)

(AやVの意味は「SDカードの種類」参考のこと)

・USB Type-Cのハブ

現状ラズパイ4のUSB Aポートが認識してくれないので、電源供給にも使うType-CポートにUSBハブを繋ぎ、そこに電源とキーボード、マウス、NICなどを繋ぐ必要があります。

2020/06/18追記 丁度いいUSBハブが無かったので、2つのUSBハブを組み合わせて使っていたのですが面倒になったので↓のやつを買いました。土曜に届くらしいので後で試します。

・USB NIC/WiFi

ラズパイ4のNIC/WiFiが使えないので、こちらもUSB Type-Cハブ経由で繋ぐ必要があります。
ただし、MicroSD上にNICドライバをコピーしておく必要があります。
最近のWindows 10だと自動認識するようなデバイスであっても認識してくれませんでした。

ドライバ入手に関する重大な注意点は「ARM64用が必須」ということ。
通常配布されているドライバはIntel/AMD系用の32bit/64bit環境専用で、ARM系は考慮されていません。なので、実はドライバ単品入手はかなり難しいです。

Windows 10で自動認識してくれるようなデバイスの場合、USB Bluetooth増設してBluetoothテザリング経由でWindows Updateからドライバを入手して認識させることができるようになります。

・USB Bluetooth

USB NICのドライバがうまく見つからない場合、Bluetoothテザリング経由でネットワークに繋ぐということでラズパイ4をネットワークに繋ぐことが可能になります。

手順1 Windows 10 on ARMのISOイメージ生成

まず、Windows 10 on ARMのISOイメージを作成します。

UUP Generation Project」や「UUP dump」からarm64用のバッチファイルを入手して、管理者権限で実行することで2~3時間ぐらいかかってISOファイルが生成されます。

手順2 Windows on Raspberry imagerの入手

Windows on Raspberry imager」の2.0.0がラズパイ4対応です。

手順3 microSDへの書き込み

Windows on Raspberry imagerを起動してmicroSDへ書き込みます

デバイス選択で「ラズパイ3(64bit)」「ラズパイ4(64bit)」「ラズパイ2/3 (32bit)」から「ラズパイ4」を選びます。

先ほど生成したISOイメージとインストールするWindows10のエディションを選択します。

ラズパイ3(64bit)とラズパイ4(64bit)はどちらも同じARM64用ISOを使用します。32bitの場合、使うISOはよくわかりません。

ドライバをダウンロードします。「Use the latest package available on the server」を選択すると現時点のラズパイ用最新ドライバーをダウンロードしてくれます。

Windows 10 on ARMはUEFI経由で起動するため、UEFIファームウェアを入手します。こちらも「Use the latest firmware available on the server」を選択します。

設定でBOOTパーテーションに置かれるconfig.txtファイルの内容や、microSDのパーテーション設定などを設定します。

「Advanced」タブを選択すると下記の警告ダイアログが表示されます。

2020/06/06時点だとラズパイ4では1GBまでしかメモリが使えないので「Memory limit: 1024MB」と設定されています。(ちなみにうちのは8GBなので8000MBでやってみるとUSB Type-C経由でもキーボード/マウスが使えないという何もできないWindowsが起動しました)

書き込み前の最終確認です。

手順4 NIC/WiFiドライバのコピー

microSD上には「BOOTドライブ」と「WINDOWSドライブ」が出来てます。
このうち「WINDOWSドライブ」の方にNIC/WiFiのドライバをコピーします。

手順5 ラズパイを起動

必要なデバイスをラズパイ4につなげて電源を入れます。

注:ここで書く時間はmicroSDが高速なA2 V30のものを使った場合の時間です。遅いmicroSDの場合、5倍以上の時間がかかったりします。(ラズパイ3の時の体験談)

最初、白黒のラズベリーパイロゴ画面が3分間ぐらい表示され続けますが、正常です。
(2020/06/10 追記: この時間がかかる件はメモリ8GBモデルでのバグでUEFI v1.14にて修正されました)


そのあと、画面下部にUEFIブート選択のバーが表示された後、真っ暗になり、30秒程度で青いWindowsロゴとなります。

青いWindowsロゴだけの時間が2分弱続いたあと、下側で丸いぐるぐるが始まります。
このぐるぐるは「デバイスを準備しています」などが15分ぐらい続いたあと、再起動します。

再起動するとやはり白黒ラズパイロゴがしばらく表示された後、5分ぐらいで全画面青表示で中央に「お待ちください…」ぐるぐるが5分ぐらい表示されます。

「お住まいの地域はこちらでよろしいですか?」が表示され、Windows 10のセットアップが開始されます。

ただ・・・私の場合、最初はキーボード/マウスを認識してくれなかったので、強制電源オフを1回しました。 (何回か再セットアップした結果、これは1回しか発生しませんでした)

また、パスワードは入力しないでエンターキー入力で進めると3つのヒント設定不要で、自動ログインにもなるので楽ちんです。

起動してみるとデバイスマネージャの認識状況はこんな感じです。

タスクマネージャーを開くとこんな感じでディスクI/Oが100%になっていたりします。
これは後述のOneDriveとかバックグラウンドアプリの影響です。オフにすると改善されます。

手順6 快適に使うための設定

Windows 10 on ラズパイ3の時(ラズパイ3のWindows 10 on ARMを使う場合の設定ポイント)と一緒です。

スタートアップ設定

One Drive用プログラムがスタートアップに組み込まれており、これが結構な負荷を与えています。

「タスクマネージャ-」を開き「スタートアップ」タブにある「Microsoft OneDriver Setup」を右クリックし「無効化」を選択します。

電源設定

コントロールパネルの電源オプション設定を「バランス」から「高パフォーマンス」に変更します。

最近のWindows10だとコントロールパネルをスタートメニューから開くのが面倒です。

スタートメニューから[設定]-[システム]-[電源とスリープ]から「電源の追加設定」をクリック

バックグラウンドアプリ設定

Windowsストア系のアプリが動いてしまうと結構圧迫してしまうので、バックグラウンドアプリの実行を停止します。

[設定]-[プライバシー]-[バックグラウンドアプリ]にて「アプリのバックグラウンド実行を許可する」を「オフ」に変更します。


現状、メモリが1GB制限なのは、ACPI DMA周りのバグで、ラズパイ4用のUEFIアップデートによって解消されることが期待されています。

もし解消された場合に、既存microSDの1GB制限を解除したい場合は「bcdedit /store T:\EFI\Microsoft\Boot\bcd /deletevalue {default} truncatememory」を実行すればいけるのでは?との見解。(ネタ元:「How-to: installing windows 10 arm64 (17134) on your raspberry pi 3 and 4」)