vol38. windows10でmDNSの問題を解決する

先日、windows10で名前解決の問題にぶち当たった。windows10からLAN接続されている機 器に対してpingが通らないのである。

結論からいうと、windows10に実装されているmDNSを無効にして、3rd party のmDNSをイ ンストール(bonjour)したら問題が解決した。

windows10に3rd partyのmDNSをインストールしても、window10で実装された標準mDNS が優先的に使用される、かつ、このmDNSがバグってる(予想)ので、うまくうごかなかった模様 。レジストリを修正して、標準mDNSを無効にしないといけない。

解決に丸1日以上かかったので、うっぷんばらしと、今後の備忘録代わりにブログに投稿 しておく。

問題の概要

ホスト名(hogehoge.local)でターゲットを指定すると、ホスト名が見つからないと怒られ る。IPアドレス指定は問題なしなことから名前解決の問題。 ホスト名指定でも、ping に-4オプションを加えとipv4指定すると動くが、-6とipv6指定すると動かない。 以下はそのログ。

C:\Program Files (x86)\Microsoft Visual Studio 14.0>ping hogehoge.local
ping 要求ではホスト hogehoge.local が見つかりませんでした。ホスト名を確認してもう一度実行してください。

C:\Program Files (x86)\Microsoft Visual Studio 14.0>ping 192.168.100.18
192.168.100.18 に ping を送信しています 32 バイトのデータ:
192.168.100.18 からの応答: バイト数 =32 時間 <1ms TTL=64
192.168.100.18 からの応答: バイト数 =32 時間 <1ms TTL=64

C:\Program Files (x86)\Microsoft Visual Studio 14.0>ping fe80::2fc:70ff:fe00:1
fe80::2fc:70ff:fe00:1 に ping を送信しています 32 バイトのデータ:
fe80::2fc:70ff:fe00:1 からの応答: 時間 <1ms
fe80::2fc:70ff:fe00:1 からの応答: 時間 <1ms

C:\Program Files (x86)\Microsoft Visual Studio 14.0>ping hogehoge.local -6
ping 要求ではホスト hogehoge.local が見つかりませんでした。ホスト名を確認してもう一度実行してください。

C:\Program Files (x86)\Microsoft Visual Studio 14.0>ping hogehoge.local -4
hogehoge.local [192.168.100.18]に ping を送信しています 32 バイトのデータ:
192.168.100.18 からの応答: バイト数 =32 時間 <1ms TTL=64
192.168.100.18 からの応答: バイト数 =32 時間 <1ms TTL=64

システム構成

システム構成は以下の通り

  • PC A (Windows10)
  • PC A (Linux Debian(Vmware on Windows10))
  • PC B (Windows7)
  • 機器A (Linux: hogehoge.local)
  • avahi daemon を利用して、mDNS をサポート。機器名はhogehoge.local

システム内の機器はEthernet Switch を通じて接続。システム内のすべての機器はipv4, ipv6対応している。

詳細

以下詳細。

  • PC A(windows10)から機器A(hogehoge.local)へのpingで名前解決ができない

    • ipv4指定にすると(ping -4) 問題なし
    • ipv6指定にすると(ping -6) 問題発生
  • PC A(Linux Debian@vmware)からの機器へのpingでは問題なし

  • PC B(Windows7)でも問題なし

    • 標準状態では、ipv4, ipv6指定共に、問題発生 これは、windows7ではmDNSはサポートされていないから。 windowsでは、DNSサーバーがなしの名前解決のプロトコルとして、LLMNRが採用されているが Linuxではこのプロトコルはサポートされていない。
    • bonjour for windows といった3rd party 制のmDNS cleinet をインストールする とipv4, ipv6共に動作するようになる
  • その他

    • windows10にもbonjour install してみたけどNG.

問題解決方法

冒頭にも述べたように、結論から言うと、windows10のmDNSの機能を無効にし、他のmDNSクライアントを 用いることで問題が解決する。

  1. mDNSを無効にする
  2. 3rd party のmDNS client をインストールする

これで動くようになった!!

いろいろ情報を集めたけど、最終的な決めてとなったのは以下の投稿。感謝!!

http:// https://superuser.com/questions/1330027/how-to-enable-mdns-on-windows-10-build-17134

vol37. mDNSとは

Linux 上で、avahi を使って、名前解決をする仕組みを知りたかったので調べてみた。 UDPの上位レイヤーで動作するmDNSというプロトコルを使用している。

mDNS とは何か

  • multicast DNSの略
  • 通常のDNSは、DNS server に問い合わせ名前解決を行う。
  • mDNSは、マルチキャスト転送で、ネットワーク内のデバイスに問い合わせる事により、
    名前解決を行う
    • DNSサーバーがいらない。
  • RFC6762で規定

名前解決の流れ

  • client は、mDNS query メッセージをマルチキャストで投げる
  • 対応する機器はmDNS response メッセージをマルチキャストで応答
  • mDNSは、マルチキャストアドレス 224.0.0.251、UDP 5353ポートを使用
  • IPv4, IPv6のIP address の問い合わせは、query のType field で指定
    • Type field: 0x01 (ipv4)
    • Type field: 0x1c (ipv6)

      mDNS query メッセージ

      f:id:john-rama01:20180614071616p:plain

      mDNS answer メッセージ

      f:id:john-rama01:20180614072209p:plain

zeroconf との関係

  • 名前解決は、zeroconf 3つの技術のうちの1要素
    1. ip address の割り当て
    2. 名前解決
    3. device の位置の特定
  • avahi はzeroconf を実現するためのLinux上での実装。applebonjourという実装。

nsswitchとは

  • Linux における名前解決の為のclient system(avahi はmDNSの為の、server systemの
    位置づけ)
  • local file, mdns, dns 等複数ある名前解決手法のうち、どの手法を用いて、どの順序
    で名前解決をするかを決める。
  • 設定ファイル

      /etc/nsswitch.conf  
      hosts:          files mdns4_minimal [NOTFOUND=return] dns mdns  
    

    優先順位は、files(/etc/hosts), mdn4_minimal, dns, mdns の順序。
    miinimal はホスト名に.localが含まれていないと名前解決を行わない
    mdns4 はIPv4のみ
    mdnsはIPv4, IPv6双方で名前解決を行う。

  • ping hogehote.local とうつと、上記の設定では、まず/etc/hostsの中身を確認し、次に
    mdns ipv4 プロトコルで、名前解決を試みる。失敗したら、dns server に問い合わせを行い、  最後に、mdns (v4, v6) で解決を試みるというながれ。

vol36. Ethernet AVB / Milan プロトコル

本日、MILANプロトコルが発表された。

Ethernet AVB/TSN に基づいたPro AV 向けのプロコトルで、Certified デバイス間の相互
動作を保証する。概要をまとめてみたい。

MILANとは?

  • AVB/TSNの上位layer(アプリ層)のプロトコル
    • Certified されたAVB/TSN デバイス間の相互接続性を保証する
    • アプリ及びNetwork layerへの要求を定義
      • compatible media streams, formats, media-clocking, redundancy
        and controller software.
  • Pro AV アプリ向け
  • 2018/6/5 にプレスリリースされた

Creators

AVnul Alliance 内のPro AV Marketの企業

  • AudioScience
  • Avid
  • Biamp
  • d&b audiotechnik
  • L-Acoustics
  • Luminex
  • Meyer Sound

概要

  • AVB protocol base (gen1)
  • Stream Format はAAF、Media Clock RecoveryにCRF、Device Discovery やConnection
    Management にAVDECCを採用
  • Redundancy に対する項目もあるが、それを実現するために、どのプロトコルをサポ
    トしないといけないかは規定していない。
  • user-driven protocolとのことなので、user の要求に基づいて、仕様が追加されていく形になるだろう

White Paper

以下、Whilte Paper のポイントを列挙

http://avnu.org/wp-content/uploads/2014/05/Milan-Whitepaper_FINAL-1.pdf

  • Ovewrview
    Milan creates the endpoint solution layer for professional
    audio equipment based on the following AVB IEEE stan-
    dards:

    Therefore, Milan defines a set of technical profiles for these
    IEEE standards dedicated to professional audio endpoints:

    • Media Clocking Specification
    • Stream Format Specification
    • Redundancy Specification
    • AVDECC Specification for Endpoint
  • Media Clocking Specification

    • What Format and Sample Rates are supported?
      • mandatory 48kHz
      • optional: 96kHz, 192kHz
    • CRF (Clock Reference Format) defined in IEEE 1722-2016.
  • Stream Format Specification

    • AAF 32bit (mandatory)
      • max 8ch per stream
    • High Capacity 32 bit (optional)
      • max 56ch per stream
    • High Capacity 24 bit (optional)
      • max 64ch per stream
  • Redundancy Specification

    • duplicating the network infrastructure into two independent logical
      networks (e.g. a broken cable or power loss of a bridge). By
      connecting endpoints to both networks, seamless redundancy can be
      achieved.
    • Milan does not specify a particular implementation, rather defines the
      gen- eral requirements that implementations must adhere to in order to
      achieve interoperability.
  • AVDECC Specification for Endpoint

    • The Milan AVDECC specification provides a consistent set of
      requirements that provides the following features:
      • Automatically discovers the addition and removal of pro audio
        devices on the network
      • Retrieves the entity model of the discovered pro audio devices
      • Connects and disconnects streams between the discovered pro audio devices
      • Obtains status information about the discovered pro audio devices
        and their connections
      • Controls the discovered pro audio devices
  • 参考
    http://avnu.org/milan/
    http://www.inavateonthenet.net/news/article/avb-based-milan-protocol-promises-to-boost-open-standards-networking

vol35. 英語の勉強方法について振り返る

過去に色々な英語を試してみた。どの勉強方法が効果的だったかをあらためてふりかえってみたい。

ipad で英語タイトルのドラクエ

  • 1タイトル500円 - 2500円程度
  • ドラクエ1から8まで発売されている(英語版は7はまだリリースされていない)
  • ipad で辞書を引きながら進める
  • 幼少の頃にはまったドラクエ。ストーリはバッチリ覚えているので、わからない英
    語があっても飛ばして楽しめる。街の人々との会話は、まさに英会話のレッスンになる
    スマホ版でリメイクされていて、グラフィックがキレイになり、新しいキャラやスト
    ーリーも追加されている。AIモードも追加されているし、quicksave機能でフィールド
    上ですぐにsaveができるのも便利。iOS11のsplitview 機能をつかって、気になる単語
    が出てきた時は、辞書ですぐに調べると語彙力もグンとあがる。

https: appadvice.com

オンライン英会話

いろいろなオンライン英会話学校がある。skypeをつかって、ネット上で海外の先生と話
す。自分は、skytalkを利用した。skytalkの先生はフィリピン在住の先生が主。フィリピ
ンは主言語が英語なので、どの先生もペラペラ。

  • skytalk
    • 月 5000円 で毎日25分レッスン
    • 先生をその日の気分で選べる
    • 英語を話す時に感じる照れの解消や度胸をつけるのに役立った。

skytalk.co.jp

図書館で、幼児向けの英語の絵本を大量に借りる。

  • 図書館だからタダ
  • 1冊5分-10分くらいでサクサク読める
  • 最初は楽しく読んでいたが、ストーリーが幼稚で流石に飽きてきた

Youtube 幼児向け動画

  • Peppa Pig
    • これも1話が5分-10分くらい。
    • 絵本と同じく、これも、最初は楽しんでいたが、ストーリーが幼稚で流石に飽きてきた
  • 他にも色々とあるが他にいいものを自分は見つけれなかった。

www.youtube.com

日本アニメの英語版

  • 子供の頃にみたアニメ番組が、英語で吹き替えされて、海外で放映されている。
    ネットで"watch anime dubbed"等で探すと、ガンダムとかエヴァンゲリオンとかジ
    ブリの映画とかがみつかる。
    もちろん、洋画を普通にみてもいいんだけど、ものによっては英語が聞き取れなく
    て、ストーリーについていけなかったりするから、過去にはまったものを英語で改
    めてみてみるのも良いと思う。英語に大量に触れるには良い題材だ。

その他

最後に

本当は、海外の人と1on1で話す場数を踏むのがもっとも早いと思う。何事もoutput が大
事だ。ただ、NOVAとか英会話学校は授業料が高いので、なかなか気軽に大量のレッスンは
受けれない。

なので、以下のブログのような、フィリピンセブ等への短期語学留学はとっても良い方法
だと思う。1ヶ月の滞在日、食費込みで、20万ちょい。後は飛行機のチケットを手配すれ
ばいいだけ。空き時間は、ビーチ等でのんびりできるしとても、よいかと思う。

おすすめの勉強法があったら、是非教えてください。

vol34. Linuxの時間関数

Linuxでは、time_t, tm, timespec, timevalなど、様々な型や構造体が、様々な関数で 使用されている。全体像を整理してみた。

全体像

f:id:john-rama01:20180602050949p:plain

man page で引くと
- gmtime() やlocaltime()は、ライブラリ関数
- time(), gettimeofday(), clock_gettime()はシステムコール

である

全体的にみると、システムコールカーネル層から取得した時刻を、ライブラリ関数で人
間にもわかりやすい形に加工するといった構造だ。

time_tは秒単位の情報を、timespec, timevalはそれぞれ、us, ns単位の情報を扱う。

    struct timeval {  
        time_t tv_sec;            /* Seconds.  */  
        suseconds_t tv_usec;      /* Microseconds.  */  
    };  

    struct timespec {  
        time_t tv_sec; /* Seconds.  */  
        long tv_nsec;  /* Nanoseconds.  */  
    };  

timeval時刻を取得するには、gettimeofday()を、timespec時刻を取得するには、
clock_gettime()を使う。ただし、gettimeofday()はPOSIX環境で古くから使われてきたが
、今は、非推奨でclock_gettimeが推奨されている。

time_t のインプリはアーキテクチャ依存で、32bit だったり、64bitの変数だったりする

time_tの情報を人間にわかりやすい形の情報で格納するための構造体がstruct tmだ。

    struct tm {  
        /*  
         * the number of seconds after the minute, normally in the range  
         * 0 to 59, but can be up to 60 to allow for leap seconds  
         */  
        int tm_sec;  
        /* the number of minutes after the hour, in the range 0 to 59*/  
        int tm_min;  
        /* the number of hours past midnight, in the range 0 to 23 */  
        int tm_hour;  
        /* the day of the month, in the range 1 to 31 */  
        int tm_mday;  
        /* the number of months since January, in the range 0 to 11 */  
        int tm_mon;  
        /* the number of years since 1900 */  
        long tm_year;  
        /* the number of days since Sunday, in the range 0 to 6 */  
        int tm_wday;  
        /* the number of days since January 1, in the range 0 to 365 */  
        int tm_yday;  
    };  

個々の関数の役割は、man page で確認して欲しい。

参照:

vol33. GDPRとは

最近、会社でGDPRに関する説明会が実施されたり、いろいろな会社から、GDPRに関する
メールが届いたり、GDPRという名前を急に身の回りで聞くようになった。

そこで、GDPRについて調べてみた。

GDPR(General Data Protection Regulation) とは

  • 欧州で始まる、個人情報保護に関する新しい法律

    • EU市民の個人情報の管理を厳格化し、個人データが安全であることを保障しなければならない
    • 個人データの利用方法について明確な同意を本人から得なければならない
    • 顧客の権限を強化
      • 本人の個人データへのアクセスや修正、削除を可能に
  • 2016/4/27に採択、2018/5/25より適応

  • 個人データは、名前、写真、メールアドレス、銀行の詳細、SNSの投稿やウェブサイト
    の更新情報、場所の詳細、医療情報、コンピューターのIPアドレスCookie、生体遺伝
    子情報、 思想信条、入れ墨に至るまで、個人に関する広範囲な情報

なぜ、EUでこのような法律が採択されたのか?

企業にとっては、GDPRに対応するのには大変な労力と資金が必要になる
では、なぜ、EUでこのような法律が採択されたのか?

  1. プライバシーの保護
    • ヨーロッパでは、会社から監視を受けること自体に大きな抵抗がある
  2. EU内のビジネスの保護
    • 特に米IT企業に強く抵抗するため

結果、米国のITスタートアップ企業やゲーム制作会社、広告技術会社の数社はGDPR
違反を犯すリスクより、EU撤退を選んだ。米国の小規模企業の一部でこうした動きが広
がっている。

なぜ今なのか?

ビジネスのグローバル化ビッグデータの台頭、クラウドサービスの利用拡大などのITの
進化により、個人情報保護の重要性が高まる一方で、サイバー攻撃や内部不正等によって
、個人情報に関るリスクが高まっていることが背景。
https://www.secure-sketch.com/blog/gdpr-5minutes-explanation

このプライベートデータは、何も欧州だけでなく、世界各国共通の事項だ。
欧州だけでなく、米国やアジアでも今後似たような法律が採択されるのか?

vol32. Windows スポットライト

Windows スポットライト

f:id:john-rama01:20180523071530p:plain

日替わりで、壁紙やロック画面の写真が変わる。
日々、ネットから写真をダウンロードしているらしい。
これはよい機能だね。
TVのディスプレイに応用すれば日替わりフォトフレームになるな。

dynamic-theme というアプリを使うと、このwindows スポットライトの写真を壁紙にも
適用できる。
https://forest.watch.impress.co.jp/docs/review/1107477.html
https://www.microsoft.com/ja-jp/store/p/dynamic-theme/9nblggh1zbkw