12月 102017
 

何個目の Bluetooth イヤホンになるであろうか? 普段は Xperia Z5 Compact ではハイレゾ楽曲を聴いているのだけどケーブルがやはりジャマでどうしようか悩む機会が多いのだけど、音質には変えられない。

と、いうことだったのだが、どうせなら左右分離型で完全ケーブルレスな Bluetooth イヤホンを購入してみました。

AirPod と一緒で左右分離型、磁石でケースにカチっと入り充電が可能なタイプです。

僕は、曲飛ばし・戻り・ボリューム調整などのリモコン機能が必須だと思っているので、その中で探すとこれが一番安かったかな。

・右耳二回タップで曲飛ばし
・右耳三回タップで曲戻り
・左側二回タップでボリューム大
・左側二回タップでボリューム小

右耳のほうが多くタップするのでバッテリーも右耳が先に終わるかな?

『タップ』というのはボタンを押す。と、いう感じではなく、トントンと叩くような感じですね。最初、この動作になれません。あと、誤タップも多くでちょっと困る・・。

耳へのフィット感は悪くはないです。耳に付けていて落ちる。ということは無いです。重さも大きさも気にはなりません。

ただ、音が切れる。両耳が動じに切れるなら諦めもツクけど、片耳のみとか音が切れるので非常に悲しい。信号機のある交差点に行くと両耳から音が出なくなる。カバンを網棚の上に置いて電車に乗っていると、体の向きを 15 度くらい変えると片耳聞こえない。とかそんな感じでした。

 
が、しかし、そんな X3T Bluetooth イヤホンですが、忘年会の帰り、ちょっとほろ酔い。秋葉原の駅で『音楽でも聴いて帰ろう。』と思い、ケースから取り出したら手が滑って、コロコロと線路の向こう側に右側が転がっていってしまいました・・。orz

利用したのは大体二週間程度でしょうか・・。比較的あっと言う間に利用を継続することができない事態となってしまいました。

完全ケーブルレスな Bluetooth イヤホンを使っている皆さん。ケースから取り出すときが一番落としやすいです。くれぐれも取り扱いには注意してください・・。

 

11月 272017
 

以前のエントリで「R-SIM10+ を試してみました。」というのを書いていたのですが、僕が iPhone8 になって、奥さんは僕が今まで利用していた SoftBank の iPhone6 を DTI SIM で利用するようになり、無事に動作している。と、いうのは以前書きました。

そして、しばらく利用していたら圏外病になったので SIM カードを抜き差ししていたらクシャクシャになってしまい、動作しなくなってしまいました・・。 orz

しょーがないのでもう一枚買うか。と、か思い、以前購入した APN ショップを覗いてみたらバージョンアップ版が発売されているようだったので購入してみました。

届いたので早速 iPhone6 で試してみましたが、サクっと認識して、利用可能な状態です。

今度のヤツは ICCID 解除モードで動作する。と、いうことのようですが、僕には何が何やらイマイチわかっていませんf(^^;;。

 
話はちょっと変わるのですが、 iPhone8 もしくは iOS11 が出たとき、画面がスリープせずに煌々と光輝いている状態が続きバッテリーがあっと言う間になくなる。と、いう問題がありました。

僕の iPhone8 も見事にその状態になり、スリープの設定を一旦オフその後再設定で 30 秒にして事なきを得ていたのですが、なんとっ!! 古い iPhone6 でも同じ事象が発生しました。しかも、 iPhone6 の場合は上記の問題解決策を実施しても有効にはならなかったんですね。

なので、今回購入した新しい SIM ゲタを履いている iPhone6 では iOS11.1 だったのですが、ドドトンっ!! と、最新の iOS11.2.1 に上げることにしました。

上記のメーカのサイトでは『バージョンアップはあかんよ。』と書いてあるんですけどねf(^^;;。

果たして、バージョンアップ後も、今回購入した SIM ゲタは無事に動作してくれて、圏外病にもならずにサクサクと動作していてくれているのであります。

ふぅ。一安心;-)。

11月 232017
 

僕の持っている Xperia Z5 Compact は Android6 以上の端末なのにホームボタンを押しても『OK google』に対応していないくて『google 検索』のような画面 (あれ? Android4.4 の頃はなんと呼ばれていたっけ?)が表示されるだけで、おかしいなぁ。などと思っていたのですが、今使っている Android7 ではホームボタン長押しで起動できるアプリの設定画面があったのねぇ。

設定アプリから [アプリ] -> [右上のギアマーク] -> [アシストと音声入力] -> [アシストアプリ]

すると、上記のようなキャプチャ画面が表示されます。ここで一旦 [なし] をタップし、何も起動しない状態にしてから再度このキャプチャ画面を表示させて google を選択すると『OK google』で起動する「google アシスト」が動作するようになります。

古い設定を上書きする必要があるんですねぇ。『OK google』を有効にするために、随分とややこすぃ設定を行う必要があります。

 
さてと。iPhone8 では Siri が動き、Android では google アシストが動作するようになりました。

それにしても siri は iPhone8 というか iOS11 にしたら随分とバカになったような気がします。あと、『へい しり』に応えてくれないことが多々あったり、アドレス帳に入っている船宿に道案内してくれなくなったりと、そこはかとなく悲惨な状態です・・。orz

そこで登場した OK google ですが、今はこっちのほうが情報的には的確に動作してくれるかなぁ。

 
最後にお約束の二つのキャプチャデータを;-)。

google アシスタントに hey siri と言ってみた図。

Siri に OK google と言ってみた図。

お互いが相手をそれぞれ認識している。と、いうのが面白い。でもって、ちゃんと両方が否定している。二人は仲が悪いのかな? ;-)。

10月 152017
 

こんなに慌てて買う必要は無かったんだけど iPhone8 を購入しました。
ちなみに家の中で一番高い電気製品です。テレビ・冷蔵庫・洗濯機よりも高価な電気製品です・・。orz
なので iPhone7 は購入せずにガマンしていたのですが iPhone6 を三年使用してからの購入となりました。
iPhoneX も購入するつもりはありません。一番安い iPhone で十分です・・。

うちでの iPhone の利用は、僕が新しいのを購入したら今まで使っていた古いのは奥さんが利用している。と、いうパターンです。僕が iPhone6 を使っているときは僕のお古の iPhone5 を奥さんが使っている。と、いう状態だったのですが、奥さんが利用していた iPhone5 のバッテリーが膨張してパカっと割れてしまいました。
なので、今回の iPhone8 の購入は緊急性があった。と、いうことですね。

 
前振りはここまで。以下、感想というか、気づいた点をちらほらと。

購入はアキバヨドバシの SoftBank ショップでした。現金一括で購入(カードで支払いだけど)することによりヨドバシのポイントが 4,000 点くらいもらえる;-)。

せっかくアキバに来たので電気街を散策するのですが、おぉっ!! Qi 給電機買って帰ろう。と、いうことで家に持って帰って来たのはこれだけ。

SoftBank の書類とかは紙一枚だけで、あとはウェブ上にあるよ。とのことでした。最近は随分と進んだモノだぁ;-)。

一応最新の iPhone8 を購入したので最近機能は試してみたいじゃん。と、いうことで Qi 充電を試してみました;-)。

時間はかかるけど、置くだけで充電してくれるのである意味らくかな。 Mac と同期は当然できないんだけど、 Wi-Fi 同期すれば良いかな? まぁ、設置場所は会社のほうが良いか、もしくは二個買うかですね。ちなみにこの給電機のお値段は 1,480yen と、非常に手頃でした;-)。

 
僕はiPhone7 を購入しなかったのですが iPhone6 と比較すると違う点があります。まず第一に、速いっ!! 恐れ入谷の鬼子母神。って感じですが、 Touth ID の登録時、指を認識する速度が違うし。とかですかね。

写真を一枚。

僕は『iPhone は黒っ!!』と、
iPhone3G を購入したとき
からそー決めているので、今回も黒を購入しました。

しかし、iPhone6 と比較すると、後ろ側の色が随分と違うのね。そして、違いはもう一点。カメラの大きさが違うのね。 iPhone8 のほうが直径がでかい。後ろ側まで覆うケースの場合だとカメラの部分が引っかかるかな?
僕の場合は普段からバンパーを利用しているのであまり影響はないけど。

と、いうことで特に代わり映えもなく iPhone6 から iPhone8 に移行できた。と、いう感じでしょうか。
あ。 SoftBank ショップでは個人情報保護の観点からデータの移行をしてくれませんでした。自分で iTunes で行う必要があります。 Mac 及び PC を持っていない人は iCloud からすることになるかと思いますが、くれぐれも『iPhone を探す』はオフにしてデータ移行をしてください。

 
最後に一点。

今まで利用していた iPhone6 で R-SIM10+ を試してみました。 docomo SIM の利用です。 iOS は最新の 11.0.3 です。特に問題無く、サクっと動作しました。今のところ圏外病は出ていません。
圏外病が出たら G4 のオフ/オンで復活できそうな気配です。あぁ幸せ;-)。

iPhone6 は SIM ロック解除できないけど、 iPhone8 は SIM ロック解除できる機種だぁ。

10月 112017
 

いやぁ。助かった。感が非常に大きいのですが、僕の持っている SONY Xperia Z5 Compact に 2017/09 版の Android セキュリティパッチが振ってきました。
今までは Android 7.1.1 で Android セキュリティパッチは 2017/06 版だったのですが、今回のパッチ適用で大手を振って Bluetooth が利用できます。ふぅ。

Bluetooth の実装には BlueBorne という脆弱性があって、コンピュータで初めて空気感染するウィルスだ。などと騒がれていたので Android では Bluetooth をオフにするしか回避策がなかったのですが、良かった。と、いう感じです。

ちなみに僕のは香港版の Xperia Z5 Compact で、会社の同僚が持っているのは UK 版ですが、 UK 版にはまだ振ってきてはいないようです。
ほんの 2,3 日前に au の Xperia Z5 にアップデートがあったので『お。これは、ワールドワイド版にも降ってくるな。』と、ある程度は確信していたんですけどもね。

それにしても良かった。ふぅ。

 
このあと、 Xperia Z5 シリーズには Android8 が出るか? というお話が待ち受けていて、現段階では「ビミョー」と、いう状態なのですが、それを待ちつつ、今回はホっとした。と、いう状況でしょうか。

まだ Xperia Z5 にアップデートが無いとお嘆きの皆さん。多分もう少し待つと降ってくると思われます。気長に待ちましょう。そして、その間はくれぐれも Bluetooth はオフにしておきましょう;-)。

10月 012017
 

夏休みを利用してハワイ島に行って来ました。何年か前にベトナムに行ったときは空港で SIM を購入したのですが、今回はどうするかなぁ。などと思い調べてみると、あれま。 Softbank はアメリカ放題というサービスをやっていて、無料で Sprint のネットワークに接続できるのねぇ。と、いうことがわかりました。今回その使い勝手についてちょっと書きます。

ちなみに、まだ請求は来ていないの実際にいくらかかっているのかはわかりません。追って加筆します。

 
まず、アメリカ放題というサービスがある。と、いうのは知ったので、コナ国際空港に降り立った段階で、 iPhone6 を機内モードから解放すると、すかさず Sptint のネットワークに接続します。そして、Softbank から SMS が届き、「アメリカ放題適用中です。」と知らせてくれ、接続方法が記載されています。

キャリアを『自動』にするのはちょっと怖いなぁ。などと思うんですが、『自動』をオフにして、表示された一覧から Sprint に接続しようとしても圏外のままで接続できませんでした。

ちなみにキャリアはこんな感じで見えました。

ハワイ島のカイルア・コナの辺りです。

 
さてと。無事に Sprint のネットワークに接続でき、無料でアメリカ放題が楽しめます。普段利用している Softbank の iPhone6 がそのまま利用可能です。

ただし、注意点も必要です。ホテルの近辺だけで過ごすのあれば全然問題無いのですが、例えば、ハワイ島一周パスツアーなどにでかけると Sprint の電波が届かないところがあります。そして、そのとき、他のキャリアの電波が届いていると勝手にそっちに接続してしまいます。

すると、今度はこんな SMS が届きます。恐ろしいですねぇ。実際、いくらくらいかかるのわからないですねぇ。怖いですねぇ。とは言いつつ、 Softbank には「海外パケットし放題」というサービスがあるようです。 0〜2,980 yenの間なので、まぁ、そんなにダメージはないかな?今回は二回くらい T-Mobile に接続されてしまいましたが、ローミングをオフにしていたので多分問題は無いと思われます。
が、請求が来たときにどうなっているかですね。

 
一応、 Sprint のネットワークで RBB Tpday のスピード計測してみました。

ハワイ島から大手町のサーバにアクセスしてどないせぃちゅーんじゃい!? 感はじゅーぶんにあるのですが、速度はほとんどが海底ケーブルのレイテンシですよね。きっと;-)。ping の速度がそれを物語っているかな。

それにしても広告が表示されないのは良いことだぁ;-)。

 
と、いうことで Softbank 回線を契約している人はアメリカに行くと SIM の心配はすることなく、無料でスマートフォンを接続できます。嬉しいことです。

が、「アメリカ放題」を利用する人は一応 Softbank のサイトを見て、確認してくださいね。対応機種が結構限られているし。

9月 102017
 

Amazon で USB Wi-Fi の子機が安く売っているのを発見し、購入しました。 AUKEY の AC1200 というヤツです。似たようなのを出しているメーカ名は色々あって Wavlink だとか、型番が WF-R6 というものだったりします。きっと OEM なんでしょうね。フツーの価格が 2,980yen で、クーポン利用で 999yen だったのでラッキーです。もう一個買おうかなぁ。

届いたのはこんな感じ。壁掛けパッケージです。そして、実物はこんな感じ。ずいぶんと大きいです。

USB の子機は 802.11 b/g/n/a/ac に対応しています。僕が購入した USB Wi-Fi 子機では初めての a (5GHz 帯) 対応です(僕は ac な AP は持ってない)。親機にもなれるようですが WindowsOS の場合はユーティリティをインストールしないとダメなようです。なので、自分的には子機専用で使う予定です。

利用しているチップは REALTEK の RTL8812AU というモノらしいです。 Windows10 Creators Update ではドライバなしでサクっと認識され 5GHz 帯のアクセスポイントにすんなり接続できました。
Cisco の EAP などに接続するためにはメーカサイトからドライバをダウンロードする必要があります。
ドライバはこの辺りのが使えるかな。 WN688A2–CD_WLAN_V6.85 のドライバをダウンロードすると良い感じです。

WindowsOS で 801.11a で接続して速度の検証してみたところ 802.11n の FreeBSD で言うところの if_run (Ralink のチップ) の機器の倍以上の 100Mbps 程度で通信することを確認しました。

 
さてと。これが FreeBSD で動作するのか、早速試してみました。

REALTEK の RTL8812AU は FreeBSD では対応していないようでドライバがありません。 REALTEK チップのカーネルモジュールとしては if_urtwn.ko がありますが、これでは動作しません。
で、ウェブで調べていると GitHub にカーネルモジュールがあったので、今回はそれを試してみました。

GitHub から urtwm-master.zip をダウンロードして適当なディレクトリに展開します。そしてその中にあるパッチを適用します。 usbdevs に適用するパッチになります。あとは、同梱の README.md を読んでその通りにやるとコンパイルが通り、インストールも無事に完了です。

インストール後は /boot/modules/ に urtwm-rtl8812aufw.ko urtwm-rtl8821aufw.ko if_urtwm.ko が配置されます。そして、それらを kldload すると利用可能な状態となります。
僕は普段から if_urtwn.ko を利用しているので、以下の設定が /boot/loader.conf に書いてあります。今回も必要かもしれません。

legal.realtek.license_ack="1"

 
さてと。カーネルモジュールのコンパイル時のとこをはしょりすぎているのでちょっと書きますが GitHub からダウンロードしたソースコードは 11.0-RELEASE 以降のカーネルソースが必要になります。

僕は FreeBSD/amd64 では環境が整わず FreeBSD/i386 と FreeBSD/arm で検証しました。

それにしても FreeBSD の 10 系 RELEASE と 11 系 RELEASE では USB 周りのソースの配置がガラっと変わりましたね。 10 系までは /usr/src/sys/dev/usb/wlan/ などにモジュールのソースがあったのに 11 系では /usr/src/sys/dev/ 配置されるようになりました。他にもカーネルのコードが変わっているので 10 系 RELEASE では if_urtwm はコンパイルできません。是非とも 11 系 RELEASE を用意しましょう。

 
と、いうことで if_urtwm* のコンパイルが通ったので使ってみることにします。一番最初に試したのはなんと Raspberry Pi 2 Model B の FreeBSD 11.0-RELEASE-p1 です。 USB Wi-Fi の子機は USB3 に対応しているのですが Ras Pi2 は USB2 にしか対応していないので性能が出ないんですが・・f(^^;;。

ザクっと USB ポートにさしてみると ugen に落ちて認識しません。あらら。僕が購入した AUKEY の AC1200 の情報を usbdevs に書いてあげる必要があります。

と、いうことで以下の行を /usr/src/sys/dev/usb/usbdevs に記述してあげます。 VendorID は既に登録済みだったので ProductID のみ記載します。

product REALTEK RTL8812AU      0x8812  RTL8812AU

 
あと、ソースコード中にも記載してあげる必要があります。 urtwm-master/sys/dev/urtwm/if_urtwm.c に対して以下のパッチを適用します。

--- sys/dev/urtwm/if_urtwm.c.orig       2017-09-07 18:59:06.031051000 +0900
+++ sys/dev/urtwm/if_urtwm.c    2017-09-06 20:51:41.749003000 +0900
@@ -128,6 +128,7 @@
        URTWM_RTL8812A_DEV(SENAO,               EUB1200AC),
        URTWM_RTL8812A_DEV(SITECOMEU,           WLA7100),
        URTWM_RTL8812A_DEV(TRENDNET,            TEW805UB),
+       URTWM_RTL8812A_DEV(REALTEK,             RTL8812AU),
        URTWM_RTL8812A_DEV(ZYXEL,               NWD6605),
        URTWM_DEV(DLINK,        DWA171A1),
        URTWM_DEV(DLINK,        DWA172A1),

 
これで、再度コンパイルしてインストールします。今回購入した USB Wi-Fi 子機は REALTEK の RTL8812AU というデバイスとして認識されるようになります。

kernel: urtwm0 on uhub0
kernel: urtwm0:  on usbus4
kernel: urtwm0: MAC/BB RTL8812AU, RF 6052 2T2R

 
で、 FreeBSD/arm 11.0-RELEASE-p1 と FreeBSD/i386 11.1-RELEASE-p1 で試してみましたが、残念ながら 802.11a では接続できませんでした・・。orz

ただし、 802.11n では動作しました。こちらのほうはかなりの速さで、一応 30Mbps くらい出ました。 USB 子機が大きくてアンテナがちゃんとしているからでしょうかね。
WindowsOS では 802.11a で利用できるのですが、残念ながら FreeBSD では 802.11n だったですが、速度が出るのでヨシとしておくかぁ。と、いう感じでしょうか。 NotePC には大きくて常用は厳しいですが Ras Pi2 には良いかもしれんです。

USB3 へ接続すると 802.11a で通信できるのかなぁ? 今回はその環境がありませんでした。

あ。 /etc/wpa_supplicant.conf とか /etc/rc.conf の記述方法は今回ここでは書きませんが、大丈夫ですよね?

 
自宅の ThinkPade145 は USB3 が動作するのですが、この NotePC はカーネルのみが 10.1-RELEASE のままなので今回のカーネルモジュールはコンパイルできません。 syspend/resume を取るか、最新の FreeBSD を取るか悩ましいところではありますが、僕の場合は suspend/resume のほうが重要。なのでバージョンアップはしていません。

 
と、いうことで GitHub から拾ってきた if_urtwm のカーネルモジュールですが、一応は動いている。ということになります。if_run も if_rum も if_urtwn も、今までは 802.11n 対応だったので今回 FreeBSD で初めての 802.11a のドライバ。と、いうことになるかと思われます (僕の試した環境では接続できなかったけど・・)。

if_urtwm はどんなデバイスがあるのか? というのは上のパッチを適用したソースコードである sys/dev/urtwm/if_urtwm.c の中に書いてあるので、試してみたい方は一回覗いてみると良いかも知れません;-)。

9月 092017
 

手頃な値段の Cisco ルータが欲しいなぁ。と、思っていて Cisco C841M-4X-JSEC/K9/START でも良いかなぁ。とか、色々考えたのですが Amazon で CISCO892J-K9 が 2,900yen (当然中古) で売っていたので飛びついてしまいました・・f(^^;;。

まぁ、仕事柄 Cisco のスイッチやルータは触っていて IOS については多少の知識があるので特に問題は無いです。

が、しかし、 CISCO892J-K9 は GigabitEthernet ポートが一個しかなくて、しかもルーテッドポート。スイッチポートが 8 個の FastEthernet ポートなので、自宅が既に Giga 化している環境においては役不足です。『やっぱり 841 のほうが良かったかなぁ・・。』などと悩むのですが、考えてみると 841 はポートが 4 個しかないのでどのみちスイッチを購入する必要があります。

と、いうことで、今回は CISCO892J-K9 と NETGEAR の GS108E-300JPS を購入しました。前者が 2,900yen に対して後者が 4,830yen でした。うむむ。

二つ並べるとこんな感じ。

NETGEAR GS108E-300JPS はアンマネージプラスなスイッチです。シリアルコンソールではアクセスできないし telnet もできないけど、ウェブブラウザでアクセスすることにより VLAN の設定が行えます。
今回は CISCO892J-K9 で VLAN を設定し、タグを GS108E-300JPS に通して、GS108E-300JPS から L3 ルータに伸ばす(こういうふうに書くとかっちょ良いのですが “L3 ルータ” とは VyOS のことです;-)。と、いう構成にしました。

物理構成図はこんな感じ。

GigabitEthernet0 はルーテッドポートなので VLAN が指定できないのですが bridge で VLAN1 に入れました。アップリンクの Fa0 (ルーテッドポート) は PPPoE なので 100Mbps でも大丈夫ですが、下に行くポートは 1Gbps で落としたい。と、いう雰囲気ですね。

CISCO892J-K9 の Gi0 をスイッチポートとして利用する config は以下のようにしました。
bridge 設定の抜粋です。

bridge irb
!
interface GigabitEthernet0
 description # VLAN 1 LAN-Zone #
 no ip address
 duplex auto
 speed auto
 ipv6 enable
 bridge-group 1
!
interface Vlan1
 no ip address
 ip virtual-reassembly in
 ipv6 enable
 bridge-group 1
!
interface BVI1
 description # VLAN1 bridge Interface #
 ip address 192.168.1.254 255.255.255.0
 ipv6 address 3ffe:6580:AA40::254:1/64
 ipv6 address 3ffe:6580:AA40::/64 eui-64
 ipv6 enable
!
bridge 1 protocol ieee
bridge 1 route ip

 
今回利用している IOS は 15.6(3)M2 です。 bridge には interface BVI1 を利用します。BVI1 に IPv4・IPv6 アドレスを付加しています。あ。 IPv6 の設定についてはここでは書きません;-)。

上記設定 GigabitEthernet0 がスイッチポートの仲間入りです。しかし、 GigabitEthernet0 で VLAN を Trunk で利用できないので Fa4 と GS108E-300JPS を物理接続している。と、いうような感じです・・。

CISCO892J-K9 の スイッチポートに接続した機器は GigabitEthernet0 を通って 1Gbps で自宅のサーバ群にアクセスする。と、いうような感じになっています。
あと、 CISCO892J-K9 には Wi-Fi AP も接続しているので 100Mbps の帯域でも十分な場合もあります。なので、これで良いかなぁ。と、いう気がしないでもないです。

 
そーそー。最後に一点。 CISCO892J-K9 には USB ポートがあるのですが『わーい。USB で電源供給できるぞぉ。』などと思い喜んで Raspberry Pi2 と Pi3 の二台の給電をしていたら、あれま・・。 CISCO892J-K9 が夜中に再起動を繰り返すようになってしまいました。

二台の RasPi を USB から引っこ抜き、 CISCO892J-K9 は一日電通しないでほったらかしにして再度起動したらその後は安定稼働しているので、多分電源不足で CISCO892J-K9 が安定しなかったんだろう。と考えています。
今回は中古で購入し、動作不安定でハラハラドキドキしました。一応一ヶ月の保証がある機器だったので購入先に連絡を入れました。が、基本的には USB ポートに RasPi (しかも二台っ!!)を接続しないほうが良さそうですf(^^;;。

 
この CISCO892J-K9 のネタは今後続いていくかな? 変わった設定とか、へんなことが起きた時に書いていきたいと思います;-)。

8月 202017
 

自宅のネットワーク内で mDNS を流していたら LLDP 流す必要ないやんかー。などと思うんですけども。
mDNS は網内というかルータを超えないセグメント内でマルチキャストを流し、 LLDP も同様に L2 レベルでマルチキャストを流します。

LLDP (Link Layer Discovery Protocol) は接続しているマルチベンダーの機器に対して自分の情報をお知らせするためのプロトコルです。
CDP (Cisco Discovery Protocol) は CIsco 機器だけでしか機器の情報を交換することができませんが、 LLDP は様々なネットワーク機器・サーバが流すことができます。

例えば Cisco ルータ(スイッチでも良いけど;-) で CDP を利用しているとき、VMware ESXi などのハイパーバイザーの NIC は CDP を吸収します。そして、仮想マシンでは LLDP を流すことにより、どのスイッチに、どんな物理サーバ (ESXi が動作している物理サーバ) が接続していて、その物理サーバ上でなんという仮想マシンが乗っているか、 CDP+LLDP で一目瞭然把握できるのであります。

なので、サーバ上で LLDP を流すのはネットワーク機器にとっては良い感じなのですね。

サーバ運用者主体で機器情報を収集するのであれば mDNS を起動しておくだけでも全然問題はないのですが、スイッチのどのポートに何が接続しているか? と、いう情報まで収集したいのであれば ESXi で CDP を、仮想マシンでは LLDP を動作させるのがグーです。

 
FreeBSD には ports として net-mgmt/cdpd/ もあるし net-mgmt/lldpd/ もあるのでどっちも動作することができます;-)。

が、今回は LLDP について書いてみます。

まぁ、 ports から net-mgmt/lldpd/ を make install しておしまい。って感じですが、 make config のオプションが悩ましい。 BASH も ZSH もインストールしたくないので [ ] として、 SNMP を [X] にすると net-mgmt/net-snmp/ をインストールしてしまい大げさになるし・・。まぁ、お好みで;-)。
JOSN や READLINE 、 XML などは lldpctl -f で出力フォーマットを指定できるのですが、そのときに利用します。

そして、インストール後ですが、設定フアイルは sample さえもインストールされないので自力で用意する必要があります。設定ファイルは /usr/local/etc/lldpd.conf になります。 man lldpcli すると書式が解ります。
僕の場合は以下の書式を作りました。

#configure system hostname "wanchan"
#configure system description "FreeBSD-10.3-RELEASE"
configure system interface pattern em*,bge*,re*,wlan*,ue*,vmx*
configure system ip management pattern 192.168.*,*:*
#configure med fast-start enable
#configure med location address floor "32F"

 
最後の “configure med location address” な設定はどえりゃー複雑で、ちゃんと形式に沿って記述されてないとエラーになります。イヤになって、書く必要ねぇやぁ。みたいな感じですf(^^;;。
設定は上から順に

  • ホスト名
  • OS とバージョン
  • LLDP で流す NIC の情報 “,” で区切って複数指定できます
    IP アドレスの情報は勝手に取ってきて流してくれます
    実は wlan* は not an ethernet device なので動作してくれません
  • IP アドレスのレンジの情報
    IPv4・IPv6共に指定できます
  • Enable LLDP-MED extension の指定
    FreeBSDの ports の場合 configure 時に –enable-lldpmed が付いてないので不要っぽい
  • 上にも書いた通り設置場所情報
    snmpd が動作していれば不要だよねぇ。ふつーは・・

準備ができたら service lldpd onestart して、起動を確認します。

 
続いて確認方法ですが、僕の家には Cisco ルータもしくはスイッチが無いので VyOS で確認してみました。

まず VyOS で LLDP を有効にします。

set service lldp interface eth0

 
FreeBSD 側から LLDP が届いているか確認するには以下のコマンドを打ちます。

takachan@vyos:~$ show lldp neighbors 
Capability Codes: R - Router, B - Bridge, W - Wlan r - Repeater, S - Station
                  D - Docsis, T - Telephone, O - Other

Device ID                 Local  Proto  Cap   Platform             Port ID 
---------                 -----  -----  ---   --------             ------- 
wanchan.running-dog.net   eth0   LLDP   RS     FreeBSD 10.3-RELEAS em0     

 
VyOS には LLDP の確認コマンドに対しては show lldp neighbors しかないので貧弱です。Cisco スイッチのように show lldp entry HOGE みたいなのがあっても良いのですけどねぇ。そーいうのはないようです。

 
lldpd を起動した FreeBSD 側での確認するには lldpcli コマンドを利用します。
ウダウダ出るので詳細は書きませんが以下のコマンドを打つと『なるほどね。』となると思います。
あ。 root でコマンドを実行する必要があります。

  • lldpcli show chassis
  • lldpcli show neighbors
  • lldpcli show neighbors summary
  • lldpcli show neighbors ports vmx0
  • lldpcli show statistics

lldpcli コマンドは UI が貧弱なのでとんなオプションがるのかちぃーとも分かりません。しょーがないのでソースコードで確認です。 src/client/show.c を眺めてオプションを把握しますX-|。

なお、 lldpcli が面倒な場合は素直に lldpctl コマンドでオプション無しが良いでしょう。 -h でパラメータも表示してくれます。

 
ただ、 FreeBSD で動作する lldpd は多少問題があるようです。

1). ports の Makefile があやすぃ・・。
net-mgmt/lldpd/Mkaefile の中の CONFIGURE_ARGS で –with-privsep-chroot=/var/empty という行があるのですが、 /var/empty って Read Only やんけ。 lldpd は起動時に /var/empty/etc/timezone を生成しますがそれができないので WARNING なメッセージが出力されます。
僕は Makefile をいじって –with-privsep-chroot=/var/run/lldpd にしてしまいました。

2). bsnmpd と相性が悪い?
lldpd を起動すると以下のメッセージが出力されます。

snmpd[810]: RTM_NEWMADDR for unknown interface 0

 
/usr/lib/snmp_mibII.so の handle_rtmsg() で出ているんだけど、原因がイマイチ分からん。bsnmpd と lldpd を同時に起動すると上記のメッセージが出力される場合があります。

気付いたのはこの二点かな。

 
これで一応、FreeBSD も LLDP を投げるようになり lldpcli で確認することもできます。 lldpcli は mDNS でいうところの avahi-browse と似たようなモンんでしょうかね。

上にも書いた通り mDNS を利用するか LLDP を利用するかについてはネットワーク運用部門の人と綿密に計画を立てて行うのが良いかと思われます。 Cisco 機器の場合 LLDP をサポートしている機器や ISO のバージョンがあまり多くはないような気がしないでもないですし。

まぁ、それにしても、自宅のネットワークの場合は全て僕一人で行うんですけどもね;-)。

8月 122017
 

自宅の環境に Windows Server 2012 R2 で動作する Active Directory を導入しました。たくさんの FreeBSD (サーバ・デスクトップ含む) と二台の Linux と、ほどほどの Windows10 があるのですが、アカウントを利用している人は二人のみ。どうして Active Directory が必要なんじゃい? と、なるのですが、実はほとんど利用していない。

と、いうか、諸々な件で検証しなければならず、本当は必要ないんだけど、ショウガなく Active Directory の設定を行い、ユーザ情報を登録してみた。と、いう感じで、現在は色々動作確認している最中です。

 
そもそも、既存の Windows 環境はワークグループで管理していたのにドメインに入るとデスクトップ環境が一から作られるので、ドメインには参加したくはないわなぁ・・。

 
と、いうことで Windows Server 2012 R2 で Active Directory が動作するようになったんだけど、 Active Directory のインストール段階では、自宅のネットワークには既に FreeBSD 上で 二つの DNS サーバが動作しているのであえて Windows Server 上で DNS を起動する必要は全くない。

Windows Server 2012 R2 では Active Directory のみを動作させ、 DNS は継続して FreeBSD で動作させるように構成したのでありました。

さてと。 Windows Server 2012 R2 を再起動して Active Directory で設定したドメインに組み込むと DOMAIN\takachan でログインできるようになりました。

他の Windows マシンもドメインに参加させようと思ったのですが、例えば Windows10 でコントロールパネルの「システム」から「所属するグループ」でドメインをチェックしてドメイン名を指定しても「それは見つからない。」とエラーになりました。

以下のようなエラーコードとなり、Windows10 がドメインに参加できません。このエラーコードは [詳細 >>] を開くと表示されています。

エラー コード 0x0000232B RCODE_NAME_ERROR

 
この事象は Windows Server 2012 R2 で Active Directory を構成して、DNS は他の OS で持たせた場合に発生するようです。
Windows Server 2012 R2 で Active Directory と DNS を同時に構成すると問題ないらしいです。

 
僕は DNS は FreeBSD で bind9 の named で設定していますが、ドメインで利用した ドメイン名のゾーンファイルに SRV レコードを追加してあげる必要があるようです。

 
以下は SRV レコードについてまとめた情報です。条件は以下のときに効果的です。

  • Windows Server 2012 R2 で Active Directory は構成したが DNS は構成していない
  • DNS は FreeBSD や Linux など UNIX 系 OS で named などを利用し既に動作している
  • 上記のような環境で Windows OS がドメインに参加しようとすると参加できない
  • ちなみに Active Directory に設定したドメインは running-dog.net
  • DNS のゾーンファイル名は running-dog.net.zone

ここでは bind9 の named.conf や zone ファイルの基本的な記述方法・内容については書かないです。知っているモノとして話を進めます。

と、いうことで上記のような環境の場合、 UNIX 系 OS で動作している named のゾーンファイルに以下の設定を加筆してあげる必要があります。

今回は bind-9.10.6 のゾーンファイルの記載例です。

今回、Active Directory のドメインは runniong-dog.net なので、 bind9 の running-dog.net.zone のゾーンファイルに以下の行を追加してあげます。

_kerberos._tcp           IN      SRV 0 0   88 ad-server
_kerberos._tcp.dc._msdcs IN      SRV 0 0   88 ad-server
_ldap._tcp               IN      SRV 0 0  389 ad-server
_ldap._tcp.dc._msdcs     IN      SRV 0 0  389 ad-server
gc._msdcs                IN      SRV 0 0 3268 ad-server

 
雰囲気的には mDNS のようですね。 TCP ポート 88・389 と 3268 に対して SRV レコードを追加してあげる。と、いうことですね。
ゾーンファイルの SRV レコードとはなんぞや? となるのですが、 RFC2782 で定義されていて、DNS でホスト名や IP アドレスの他にサービスについても広報してしまう。と、いうノリのようです。

TCP ポート 88・389・3268 は ad-server.running-dog.net でサービスを提供しているよ。と、いう記述です。

 
通常 Active Directory を構成した場合は Windows Server 2012 R2 で合わせて DNS も構成するので上記の SRV レコードが記載されるのでしょうな(僕はやったことが無いので解らない;-)。しかし、これを bind9 などで構築した場合にはゾーンファイルに SRV レコードを記載してあげないと他の Windows OS が Active Directory を見つけられない。と、いうことなのでしょうなぁ。

 
では、SRV レコードの他にもっと簡単に見つける方法あるんでないの? と思うと、パッとひらめくのは『 mDNS で流したらえーやん。』と、なるのですが、考えてみると mDNS ってのはルータを超えられないのでデータセンタなどにある AD の場合はまるで役に立たないんですね。
なので、きっと DNS で SRV レコードを記載してそれを利用するのが一番手っ取り早い。と、なったのでしょうなぁ。