Alecriar Studioの中の人の技術メモ

横浜の個人事業主が日々の技術的な情報をつづります

NBTを止めてLLMNRのみ有効にする

LLMNRについて

LLMNRWindowsの新しい名前解決のための機能です。Windowsの名前解決といえば、今まではNBT (NetBIOS over TCP/IP)が広く使用されてきましたが、古い技術であり様々な問題を抱え込んでいる状態なので、それに代わる新しい技術としてLLMNRが登場しました。LLMNRについては以下の記事が詳しいです。

www.atmarkit.co.jp

これより下は、筆者の実環境での運用も交えて、NBTを排してLLMNRで運用する際の手順です。

PC2台のみのLANにしてみる

まずはこちらの図をご覧ください。

f:id:alecriarstudio:20191007225534p:plain
PC2台構成
PC2台がスイッチを通りして接続されている、極めてシンプルなLAN構成図です。PCは両方ともWindows 10で、それぞれIPアドレスとホスト名が割り振られています。スイッチはルータ機能が無いスイッチングハブとします。

この状態でPC2台はお互いに通信ができるでしょうか。PC1からPC2に向けてIPアドレスにてpingコマンドで確かめてみます。

> ping 192.168.1.16                                                                                               
192.168.1.16 に ping を送信しています 32 バイトのデータ:
192.168.1.16 からの応答: バイト数 =32 時間 <1ms TTL=128
192.168.1.16 からの応答: バイト数 =32 時間 <1ms TTL=128
192.168.1.16 からの応答: バイト数 =32 時間 =1ms TTL=128
192.168.1.16 からの応答: バイト数 =32 時間 <1ms TTL=128

192.168.1.16 の ping 統計:
    パケット数: 送信 = 4、受信 = 4、損失 = 0 (0% の損失)、
ラウンド トリップの概算時間 (ミリ秒):
    最小 = 0ms、最大 = 1ms、平均 = 0ms

問題なく応答が返ってきます。

では、ホスト名を指定してのpingはどうでしょうか。

> ping PC2                                                                                                      
PC2 [192.168.1.16]に ping を送信しています 32 バイトのデータ:
192.168.1.16 からの応答: バイト数 =32 時間 <1ms TTL=128
192.168.1.16 からの応答: バイト数 =32 時間 =1ms TTL=128
192.168.1.16 からの応答: バイト数 =32 時間 =1ms TTL=128
192.168.1.16 からの応答: バイト数 =32 時間 =1ms TTL=128

192.168.1.16 の ping 統計:
    パケット数: 送信 = 4、受信 = 4、損失 = 0 (0% の損失)、
ラウンド トリップの概算時間 (ミリ秒):
    最小 = 0ms、最大 = 1ms、平均 = 0ms

同じようにping成功します。

TCP/IPネットワークの場合、IPアドレスからホスト名を解決するには通常はDNSサーバが使用されます。しかし、上記の構成のLANにはDNSサーバが存在しないにも関わらず、なぜか名前解決ができています。どのような仕組みなのでしょうか。

NBTとLLMNR

答えは、最近のWindowsDNSサーバが存在しなくてもLAN内の名前解決を行うための仕組みが働いているからです。それがNBTとLLMNRです。

実は、NBTとLLMNRは同じことをする機能です。ともにリソース名をIPアドレスに変換、つまり名前解決という機能を受け持ち、機能的に重複しています。ちなみにリソース名はホスト名と同義と思ってください。ではなぜ重複するものが両方とも動いているのかというと、Windowsのこれまでの歴史的経緯が関係しています。下の図をご覧ください。

f:id:alecriarstudio:20191007231253p:plain
Windowsネットワークの新旧
NBTは従来から存在する機能で、Windows XPの頃まで使用されていました。いわばレトロな技術です。対してLLMNRはWindows Vista以後のWindowsに搭載された新たな仕組み、いわばこれからの技術です。ただし互換性のため、Windows 10などの現行のWindowsにおいてもNBTはまだ残されていて、デフォルトでオンになっています。そのため機能が重複しつつも両方が動いているわけです。

Windows XPなどの古いPCが残ってる環境ならばNBTを動かしておいても良いですが、筆者の環境ではもはやそのような古いPCはないし、何より同じ機能を持つものが複数動いているのはリソースの無駄ではないか。そのように考え、NBTを無効にすることにしました。

NBTの無効化とLLMNRの単独使用

具体的には「設定」から操作します。かなり深い階層ですが、以下の手順です。

設定 -> ネットワークとインターネット -> アダプターのオプションを変更する -> 街頭するアダプターを選択 -> この接続の設定を変更する -> インターネット プロトコル バージョン 4(TCP/IPv4)を選択 -> プロパティ(R) -> 全般 -> 詳細設定(V) -> WINS -> NetBIOS設定 -> NetBIOS over TCP/IP を無効にする(S)

f:id:alecriarstudio:20191007225508p:plain
NBTの無効化
以上でNBTは無効になり、LLMNRのみが有効になった状態となります。

しかし、問題が・・

エクスプローラを開き、繋がっていれば見えるであろうPC2が「ネットワーク」に出てきません。

f:id:alecriarstudio:20191007233229p:plain
ネットワークに表示されない
おかしいと思い、直接「¥¥PC2」(¥は半角)と入力してみると・・
f:id:alecriarstudio:20191007233250p:plain
直接ホスト名を入力
ちゃんとアクセスできます。つまり、ネットワークのコンピュータ一覧では見えないけれども、それは見えないだけでLAN上には存在しているということです。

原因は何かということですが、Windowsネットワークの新旧の図をよくよく見ると、NBTは名前解決の他にブラウジングという機能も合わせて持っています。このブラウジングがコンピュータ一覧のリスト生成に深く関わっているらしく、対してLLMNRはこのブラウジング機能は持ち合わせていないため、「ネットワーク」に表示されない現象につながっています。

Windows 10をはじめとする新しいWindowsは、このブラウジング機能については「LLTD」という新しい仕組みが用意されています。こちらを何とかすることができればコンピュータ一覧が正常に表示されるようになると思われますが、この話題についてはまた別の機会にします。

まとめ

LLMNRとは以下のような特徴をもっています。

  • NBTより新しい最近のWindowsに搭載された名前解決機能
  • IPv4IPv6に対応(NBTはIPv4のみ)
  • 現行のWindowsで、現状ではNBTとLLMNR両方がサポートされているが、NBTはいずれ廃止されLLMNRのみがサポートされる状態になりそう
  • 名前解決機能のみを提供し、ブラウジングについては別途

最強のドローツール「draw.io」

ドローツールって悩みますよね

皆さんはフローチャートやちょっとした図解用の絵を描くときのドローツールはどのようなものを使用していますか?当方は正直なところ、今までこの手のツールには無関心でした。いざ必要になれば、Windowsに最初から備わっているペイントや、Photoshopを使えば十分だろうと。

でもペイントってシンプルなのですが使いづらいですよね。単純な円や四角ならともかく、ちょっと凝った図形を作ったり、フローチャートのような複雑な図面を描こうと思えば、一つ一つ図形を書き込んでいかないといけないので大変です。Photoshopはそもそも写真加工用なので、このような作業は苦手です。

ならば、ということで本腰を入れドローに適したツールを探してみたところ、とても優秀なサービスがありました。draw.ioです。

draw.ioについて

draw.ioはオンラインで使用できるドローツールです。ブラウザとネット環境さえあればどこにいても使えるのはメリットです。結論から言えば、かゆいところに手が届くとてもいいサービスです。やりたいと思っていることが直感的にできます。ペイントとは何だったのか。

すぐに使える

サイトにアクセスするとすぐさま保存場所を聞いてきます。Google Drive、OneDrive、DropboxGitHub、GitLabといったオンラインストレージに直に保存できますので、アカウントをお持ちの方はこちらが便利でしょう。また、Deviceを選べばローカルにも保存できます。

f:id:alecriarstudio:20191006145123p:plain
保存場所選択

その後すぐに編集画面に移行します。トップページすらスキップして編集できるのがいいですね。画面はGoogle Driveとよく似ていますので、そちらに慣れている方は戸惑いもなくすぐに慣れると思います。

f:id:alecriarstudio:20191006144300p:plain
draw.io

テンプレートと図形

まず驚くのが、テンプレートの数が非常に豊富です。ビジネスやチャートといったプレゼンテーションで使用できそうな一般的なものから、エンジニアリングやUMLといった技術的なものまで色々取り揃えており、一から描き起こすより遥かに高品質なものが用意されています。

f:id:alecriarstudio:20191006145726p:plain
テンプレート

それに加え、図形(パーツ)の種類も豊富です。全部で800個以上用意されているそうです。大抵の表現はできそうです。

日本語対応

日本人の方なら日本語対応が気になると思いますが、ファイル名やメニュー表示、図形内など、ほとんどの箇所は日本語表示が可能となっています。

フォントについてはそのまま日本語を入力すれば自動的に日本語が表示できますが、「メイリオ」などあえて指定のフォントを使用したい場合は「カスタム」で直接フォント名を指定すればそのフォントで表示してくれます。

f:id:alecriarstudio:20191006150731p:plain
フォント

エクスポートも可能

保存は最初に選択した場所に行ってくれますが、メニューから「形式を指定してエクスポート」を選べば指定の形式でローカルに保存もできます。現状ではPNGJPEGSVG、PDF、VSDX、HTML、XML、URLが選択できます。

f:id:alecriarstudio:20191006151118p:plain
エクスポート

さっそく図を試作してみました

f:id:alecriarstudio:20191006151609p:plain
Windowsネットワーク
こちらの図は次回以降の記事で使用する予定です。

まとめ

draw.ioは優れたドローツールです。こちらを使用すれば大抵の図が作成でき、ペイント等には戻れません。ドローツールに迷われた方はdraw.ioを試してみてはいかがでしょうか。

  • すべて無料
  • 登録は基本的に不要
  • 操作が直感的
  • 豊富なテンプレートと図形
  • 保存場所がいろいろ選べる
  • 日本語対応
  • フォントも選択できる
  • オンラインの他インストール型もある