どこか遠くでのんびり怠惰に暮らしたい https://misc.mat2uken.net/blog/ I feel like going further and to be lazy en-us Mon, 09 Nov 2015 00:00:00 +0900 https://misc.mat2uken.net/blog/2015/11/09/edgerouter_lite3.html https://misc.mat2uken.net/blog/2015/11/09/edgerouter_lite3.html <![CDATA[17,000円で買えるVyOSっぽいOSが動くルーター EdgeRouter Lite(ERLite-3)を使ってみる]]>

17,000円で買えるVyOSっぽいOSが動くルーター EdgeRouter Lite(ERLite-3)を使ってみる

知り合いが EdgeRouter Liteを売ってる こともあり、Ubiquiti NetworksのEdgerouter LITE(ERLite-3)を自宅のPPPoE側のルーターとしてひとつ活用しています。

Ubiquiti Networks はVyattaからフォークしたOSが入った専用アプライアンスを売っていて、ほぼVyatta(VyOS)っぽい文法で設定でき、一部の機能(綺麗なWebGUIとかVPN周りとかUPnP対応とかいろいろ)が追加されたルーターというか、ネットワークアプライアンスとか言うんでしょうか。そんなやつです。

特徴はざっくり

  • 同等性能くらいの有名メーカーのものに比べるとかなり安い。ERLite-3も機能だけで言えば、Vyatta(VyOS)相当が載っているわけで、ルーティング関係、PPPoEとかもふくめた各種インターフェース、トンネリング、VPN、DHCP,DNSとかの各種サービスとか一通りできるてんこ盛りです
  • それで、17,000円とかで買えます。ER-Xでよければ、1万円で買えます。
  • 専用のアプライアンスなので、とりあえずインストールしなくても最初からEdgeOS入ってて、シリアルコンソールが使えるので最初が楽
  • Vyattaというか、VyOSをPCで動かすのに比べれば圧倒的に低消費電力

これに加え、Vyatta(VyOS)を使ういろんなメリットがほぼ享受できます。なので、YAMAHA NVR500とか買おうかなとか思う人とかには結構、対抗馬としてはアリなんじゃないかなとか思ってます。 違いも多いので、しっかり比較検討しましょうではあるのですが、自分でいろいろいじる人には最終的にタダのLinuxなのでなんでもできると思う人とかには良さげなんじゃないでしょうか。

で、私の環境では、そんなことを言いながら、メインはVyOSが動いているPCでDS-Liteで外に出て行くのが基本で、こちらは主に外からのアクセス用にPPPoE側の維持しています。(EdgeOSはIPv4 over IPv6なIPIPトンネルに対応してないのです……もちろん、ipコマンドで設定してしまえば使えるのですが) 元々は両方をVyOS側で受けてポリシールーティングでPPPoEからはいってきたやつはそっちから出すとかやってたんですが、結局、PPPoE側から直接アクセスするのは一部だけだし、ほかは結局VPNだしってことで今は安定性重視で分離しています。

今回の流れは、とりあえずPPPoEを設定してNAPTする、いわゆる市販のブロードバンドルータ的機能を一通り有効にするところまでまずはやってみました。ただの作業メモとも言う。

erlite-3

こんな感じのサイズ感。下でうごいてるマザーボードむき出しPCがVyOS動いているやつです。

ざっとした構成

eth0がフレッツ直下につながっていてIPv4は特に割り当てません、eth1はLAN側で、192.168.99.0/24です。eth2はとりあえず何もつなぎません。

とりあえず、デフォルトのIP設定とかよく分からんし、デフォルト設定の環境合わせるのとかもめんどいので、シリアルコンソールを使います。 いわゆるCisco的なやつにつながるRJ45なケーブルさえあればデフォルトでシリアルコンソールは有効です。

Macから適当にscreenでつなぎます。

$ screen tty.usbserial-FTXQLKDF 115200

ログインプロンプトがでてくるので、デフォルトのユーザでログインします。
ubnt / ubnt でログイン

とりあえずIPアドレスだけ、下記のような形で設定します。
ethernet eth1 {
    address 192.168.99.1/24
    duplex auto
    speed auto
}

あと、今回はせっかくなので、GUI(Webブラウザ)で設定できるようにもしてみます。ついでに、SSHも有効に。 今回は基本、WebGUIで設定して、生成された設定を見ていく感じで進めていきます。

service {
    gui {
        https-port 443
    }
    ssh {
        port 22
        protocol-version v2
   }
}

ここまでやれば、とりあえずシリアルコンソールよりSSHかWebGUIで大体事足りるのでそちらに移行します。

ユーザの追加

さすがにデフォルトユーザのままはどうなのよというのもあるので、まずubntを削除して適当なユーザを追加します。

WebGUIのUsersから単に追加します。今回はmat2ukenです。 その後、ログアウトから作った新規ユーザでログインしなおしてからubntを削除すると、とりあえず作ったユーザのみでログインできるようになります。これはSSHとかでも同一ユーザーが有効です。

PPPoE設定

ここからは基本、WebGUIから設定です。

DashboardのPPPoEタブを選んで、Add Interfaceで作ります。 PPPoEは私はIIJmioなので、そちらのアカウントでusernameとpasswordを設定、MTUを1414とします。(適切なMTUはよく分かってません……1454?)

すると、下記のような設定が追加されるようです。

pppoe 0 {
    mtu 1414
    password ****************
    user-id nbdXXXXXXXX@iij.ad.jp
}

その後、SNATでマスカレード設定します。

Firewall/NAT→NATをえらんで、Add Source NAT Ruleを押すと、Outbound Interfaceにpppoe0を選び、TranslationをUser Masqueradeにします。 ProtocolはBoth TCP and UDPを選択します。All protocolsでもいいような気もしますが。

これで、下記のような設定が生成されます。

service {
    nat {
        rule 5000 {
            description defaultroute
            log disable
            outbound-interface pppoe0
            protocol tcp_udp
            type masquerade
        }
    }
}

MSS clampの設定

MSS clampはWebGUIからどうやんのかなーとおもってさがしてみたら、そもそもWizardってのがあって、そちらから設定できるようです。 もしかして、いままでの設定もWizardから行けたのかなとおもいつつ、もうやっちゃったので、MSS clampだけWizardから設定します。

Wizard -> TCP MSS clampingから、Enable MSS clamping for TCP connectionsにチェックをいれるだけ。Interface TypeはPPPoEに、MSSはPPPoEのMTUと合わせて1414としておきます。

すると、下記のような設定が生成されます。

firewall {
    options {
        mss-clamp {
            interface-type pppoe
            mss 1414
        }
    }
}

PPPoEのオフロードを無効に

EdgeRoute Liteではオフロード設定がデフォルトで入っているのですが、これが有効だとPPPoEはむしろ遅くなるようです。 なので、pppoeは無効にする設定を追加します。

GUIでそういった項目はないので、単にConfig Treeからsystem - offload - ipv4 で触ります。 CLIでいうと、

set system offload ipv4 pppoe disable

を実行すると、無効にできます。

実際、speedtest.netでの実行結果も、11/1の16時ごろのほぼ同タイミングで計測で、

・オフロードが有効 → Upload/Downloadとも20-30Mbps前後 ・オフロードが無効 → Download 80Mbpsくらい、Upload 200Mbpsくらい

と結構劇的に変化します。SoCの機能としてチェックサムのオフロードなのだとおもいますが、ソフトのほうが圧倒的に速いのでしょうか。しかし、どうも影響はPPPoEのみのようでもあるので割と謎です。

いわゆるポートフォーワーディングの設定

要はDNATなので、NAT設定から行ってもよいのですが、GUI上ではPort Forwardingという設定が別に用意されているようです。

80を転送する場合は、

  • WAN Interface pppoe0
  • Hairpin NATは一応有効に
  • Auto firewallも有効に
  • LAN Interfaceはeth1を追加

Port forwarding rulesは

  • Original Port 80
  • Protocol TCP
  • Forward-to address 192.168.99.248
  • Forward-to Port 80
  • Description HTTP

これでApplyすれば有効になります。

80をそのまま転送はどうなのよとかあれば転送元ポートは変えるとかで対応しましょう。今回はこの先、基本認証が必要ということでそのままにしています

生成されるルールは下記のようです。

port-forward {
    auto-firewall enable
    hairpin-nat enable
    lan-interface eth1
    rule 1 {
        description foltia
        forward-to {
            address 192.168.99.248
            port 80
        }
        original-port 80
        protocol tcp
    }
    wan-interface pppoe0
}

って、VyOSではみたことのない、PortForwadという設定が追加されています。これって、EdgeOS独自なのでしょうか。たあ、意味は割とシンプルに読み取れるのでこのままでもよさそうです。

DNS関係

DNS Forwardingはせっかくなので、設定しておます。Cache Sizeはひとりだし適当に1000くらいに。 Interfaceはeth1を設定します。

PPPoEは今回、変動するIPなので、DynamicDNSを一応設定しておきます。今回は、freedns.afraid.orgにしました。 DNS -> Dynamic DNSを選びます。

Interfaceはpppoe0、Web はURL で、更新用URLをサービスからもってきます。

  • Service afraid
  • Login [Username]
  • Paswword [設定したもの]
  • Protocol 選択なし
  • Server freedns.afraid.org

を設定してApplyします。

こんな感じの設定が生成されます。

service {
  dns {
      dynamic {
          interface pppoe0 {
              service afraid {
                  host-name xxxx.mooo.com
                  login [Username]
                  password ****************
                  server freedns.afraid.org
              }
              web http://freedns.afraid.org/dynamic/update.php?XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
          }
      }
      forwarding {
          cache-size 1000
          listen-on eth1
      }
  }
}

UPnPの設定

EdgeOSはUPnPに対応しているのでせっかくなので有効にしておきます。 WizardからUPnPをえらんで、Internal interface -> eth1, External interface -> pppoe0をえらんで、Applyです。

生成される設定は下記

service {
  upnp {
      listen-on eth1 {
          outbound-interface pppoe0
      }
  }
}

おわりに

これで、このルータをデフォルトゲートウェイに設定すると、とりあえず普通に使えるようになってると思います。ポートフォーワーディングも任意に追加できます。

GUIからの設定生成でも割と必要最小限で、分かりやすい設定を吐いてくれるので好感触ですね。あとからCLIでいじるのもこれならできそうです。ちなみに、CLIからcommitをすると、ブラウザ側でちゃんと検出してRefreshを求められるし、CLIにログインしたままWebGUIで設定すると警告が表示されたりと両方をつかった設定に気を遣っている感じもあり、この辺はよく作られているなーという感じ。

これ以降はおそらくCLIが中心になりそうなきがしますが、VPNあたりはWebGUI使ってみたい気もしています。たぶん、続編でVPNやVLANあたりはあるかもしれません。

知り合いは ERLite3 をほかの並行輸入品とちがって、ちゃんとPSE対応のACアダプタに変えたりしてちゃんと売ってるのでそういった面でもオススメ。ほかにも、もっと安い ER-X や8ポートあって1Uなラックマウントができる ER-8 も売っているのでそちらも是非。OSは全部一緒なので、一度慣れるとどれでも同様に扱えます。

特にER-8は8ポートともちゃんとMAC搭載で、別々のインターフェースとして扱える、相当なんでもできるやつです。こっちはひとつ借りて、会社にお試し導入してみようかとおもっているので、そちらもまたレビューしようかと思います。

いやぁ、なんか動いてるのみてると、可愛くなりますね。愛着っていう人の気持ち、ちょっとわかったかも。

]]>
Tue, 17 Sep 2013 00:00:00 +0900
https://misc.mat2uken.net/blog/2013/09/13/got_dnsb_84320.html https://misc.mat2uken.net/blog/2013/09/13/got_dnsb_84320.html <![CDATA[ほこりをかぶっていたDockスピーカーをBluetoothスピーカに買える上海問屋のDNSB-84320を衝動買いした]]> ほこりをかぶっていたDockスピーカーをBluetoothスピーカに買える上海問屋のDNSB-84320を衝動買いした

最近、テレビをちゃんと録画して、iPad or Nexus7で見るということをするようになりました。そうすると、自分の部屋で見てるとファンやらなにやらで結構もともと音がしているので音量たりねーなというのと、さすがにiPad2内蔵のスピーカの音質はあんま良くないなぁと思いながら使っていました。とはいえ、まあ実用上、それほど問題もないので、さすがにまともなBluetoothスピーカーとか買うような金をかけるつもりもなく。

というところで、昨日、ドスパラの3Fの上海問屋にふらっと行って、前々からチラ見していたDNSB-84320を2000円だしなーと思って買ってしまった。こいつの機能はシンプルで、iPhoneとかのDockコネクタを直接繋ぐタイプのスピーカーにこれをつなぐとBluetoothスピーカーとして汎用化できるというやつです。Lightningになってスピーカー余ってるだろ?っていう人向けなんでしょうね、私もまさにそれ。以前にApple福袋買ったときに入っていたJBLの割とまともなスピーカーがまさにほこりをかぶっていたので、iPadかNexus7で動画再生するとき用のスピーカーとして復活させることにしました。iPad2なのでDockコネクタあるんだけど、さすがに延長ケーブルみたいなので有線でつなぐのは格好悪すぎるので無線化できるとこも含め。

DNSB-84320_01

手元のJBLのスピーカーにDNSB-84320挿すとこんな感じ。

で、電源いれます。すると、電波マークっぽいところの中心が点滅を開始。iPadからBluetoothのデバイス探すと、SHANGHAIっていう直球のデバイスが見つかるので、タップしてペアリングするだけ。デバイス名の変更もなければ、PINコードの入力もなし。これで、さくっと音声出力が全部こっちのスピーカーに切り替わりました。

実際の音質もそんなに高級なまともなスピーカーではないとはいえ、さすがに内蔵のスピーカーよりは大分良くなりました。とりあえず、自室のファンの音やらのノイズたっぷり環境でも充分実用的に。音楽とか聞くならまたなんかあるのかもしれんけど、テレビ見る分には充分ですね。2000円で、とりあえずBluetoothスピーカの割とまともなのが手に入るという意味では良い買い物だったかも。(当然、元々のDockスピーカの値段考えるとそうでもないんだけど)

そして、楽天では2000円じゃなくて、1999円なんだなといいながら、リンク張ってみます。

]]>
Fri, 13 Sep 2013 00:00:00 +0900
https://misc.mat2uken.net/blog/2013/09/11/setup_bloodhound.html https://misc.mat2uken.net/blog/2013/09/11/setup_bloodhound.html <![CDATA[Bloodhoundをセットアップする]]> Bloodhoundをセットアップする

Tracをずっと使っているんだけれども、Bloodhoundが結構よさそうということで置き換えてみた。

Bloodhound はTracベースで、複数のプロダクトを扱えたりとか、もともとのもっさりしたデザインとかUIが今風な感じにデフォルトになってるやつだそうで。あと、インストールが楽というのもやってみた感じでは結構魅力。

インストールに関しては、 Installation instruction の通りで問題なし、既存のTrac(今回は0.12)がある場合は、 Migrating environments もやる必要がある。

まあ一応メモ的インストール手順を下記に。

微妙にハマったポイントは、既存の1プロダクトを前提で使ってた場合、Wikiが/products/@/にコピーされて、プロジェクト全体のWikiにはなにもないようにみえることと、/produts/@/のURLに辿り着くリンクがとりあえずどこにもないところですかね。あと、データ移行時は上のURLの内容の添付ファイルコピーの時に、/produts/@/がたぶんアクセス後でないとできないので、とりあえず一度アクセスしたあとに、files/attachmentsディレクトリを作るべし。

最後に、bloodhound_setup.pyはファイルがカレントディレクトリにある状態で、それ以外のオプションはフルパスで指定するというやり方でやらないとなんかおかしくなるみたい。tracdで起動すると、No such file or directoryとしか出ないので、原因究明はしてない。tracdってどっかにTraceback吐けたりしないんですかね。

とりあえず手順。virtualenvwrapper前提で、まずはvirtualenvを作って、pipで依存するパッケージをインストール。んで、bloodhound_setup.pyを実行(sqlite)

$ mkvirtualenv --system-site-packages bloodhound
$ tar xvzf apache-bloodhound-<version number>.tar.gz
$ cd apache-bloodhound-<version number>/installer
$ pip install -r requirements.txt
$ python bloodhound_setup.py --environments_directory=/srv/repos/bloodhound -d sqlite --admin-user=admin --admin-password=xxxxxxx

bloodhound_setup.pyの実行は妙に時間かかります。なんでこんなに時間かかるんですかねー。 ここまでやると、tracdの起動方法が最後に表示されるので、それに合わせて起動して動作確認。

$ cp -r /path/to/trac/your-project/db/trac.db /path/to/bloodhound/environments/your-project/db/bloodhound.db
$ trac-admin /path/to/bloodhound/environments/processor upgrade
$ trac-admin /path/to/bloodhound/environments/processor wiki upgrade

適当に、tracdで起動して、/project/products/@/みたいにしてアクセスしてみて、wikiが移行されていること確認

$ cp -r /path/to/trac/your-project/files/attachments/* /path/to/bloodhound/your-project/products/@/files/attachments/

これで、既存のWiki,ticket,添付ファイルが移行されているのを確認して終了。ここまでで、bloodhoundのインストールとデータの移行は完了。

最後に、ウチだと実際はApacheが前に起動しているので、mod_wsgi経由でのアクセスに変更します。 認証用のUIはbloodhoundにもついてくるんだけど、いままでの経緯で、Basic認証のままの設定にします。好ましいのは、bloodhoundの既存の認証のUIつかうことなんでしょうね。

Apacheに投入した設定はこんな感じ。あ、Apacheの設定前に、trac.wsgiの生成と.tracignoreを設定しておきます。

trac.wsgiの生成。どのプロジェクトでもいいので、trac-adminで生成。
$ trac-admin /srv/repos/bloodhound/main deploy /srv/repos/bloodhound/sites

sitesディレクトリはenvironmentではないので、一覧表示時にエラーになってしまうのを防ぐために、
$ echo sites > /srv/repos/bloodhound/.tracignore

とやって、 /srv/repos/bloodhound/sites/cgi-bin/trac.wsgiが使えるようにしておく。

WSGIPassAuthorization On

WSGIDaemonProcess bloodhound threads=5 \
    user=bloodhound python-path=/home/bloodhound/.virtualenvs/bloodhound/lib/python2.7/site-packages/
WSGIScriptAlias /trac /srv/repos/bloodhound/sites/cgi-bin/trac.wsgi
<Directory /srv/repos/bloodhound/sites/cgi-bin/>
    SetEnv trac.env_parent_dir /srv/repos/bloodhound
    WSGIProcessGroup bloodhound
    WSGIApplicationGroup bloodhound
    Order allow,deny
    Allow from all
</Directory>
<Location /trac>
    AuthType Basic
    AuthName "BloodHound"
    AuthUserFile "/srv/repos/.htpasswd"
    Require valid-user
</Location>

ちょっとしたポイントは、複数プロジェクトを扱うために、SetEnv trac.env_parent_dir /srv/repos/bloodhoundしておきます。これで、/tracにアクセスしたら、このディレクトリにあるプロジェクトの一覧がでるようになります。同ディレクトリでプロジェクトでないものは上記のように、.tracignoreに追加しておく。

と、こんな感じでやれば、/tracにアクセスしたときにBasic認証をもとめられて、そのまま認証できれば、プロジェクトの一覧が見えるはず。んで、たとえば、mainプロジェクトなら、/trac/mainにアクセスするとトップページ、既存のWikiからの移行をしているなら、/trac/main/products/@/とアクセスすると、もともとあったWikiのトップページが見れるはず。(そして、これを書いていて、チケットのページからリンクでたどれることに気づいた。)

と、こういう流れで、とりあえず、bloodhoundのセットアップは完了。デフォルトでもチケットの管理とWikiとして使う分には充分で、環境も整理できたので満足。

]]>
Wed, 11 Sep 2013 00:00:00 +0900
https://misc.mat2uken.net/blog/2013/09/03/got_wireless_charger_03_for_nexus7_qi.html https://misc.mat2uken.net/blog/2013/09/03/got_wireless_charger_03_for_nexus7_qi.html <![CDATA[ドコモの「ワイヤレスチャージャー03」をNexus7の充電用に買った]]> ドコモの「ワイヤレスチャージャー03」をNexus7の充電用に買った
Wireless Charger 03

ワイヤレスチャージャー03本体。結構コンパクト。

Nexus7(2013)のWiFi 16GBモデルを当初の予定通り、ソフマップのたまったポイントで入手しました。こっちはこっちでいろいろ問題が起きたのですが、今回はそれは置いといて。

Nexus7といえば、Qi対応があります。これまでもiPhone4S,iPhone5にはQi充電対応のケースをつけて使ったり、Qi対応モバイルバッテリを持ち歩いたりで、Qiでの充電はすでに日常生活に溶け込んでいます。当然、Nexus7に関してもQiでの充電での運用にしていきたいところです。

とすると、意外に困りそうなのが、充電器です。現状では、自宅と職場に同時に1つずつ充電器を設置しています。それを基本的にはiPhoneの充電用として使っており、それ以外にモバイルバッテリー(QE-PL203)をつかった場合には、その充電にも使うことがあるという感じで利用しています。Nexus7の用途は基本的には自宅で寝る前などに本を読んだり、動画を見たりするために使うのが大半なので、この自宅用の1つの充電器を使い回してもよいのですが、さすがにQi充電用のデバイスが増えてきてバッティングすることも増えそうで、不便になってしまいそうです。というわけで、充電器を増設することにしました。

で、充電器をいろいろと見繕ったのですが、そもそもというところで、充電器にあまり金をかける気にもなりません。ケーブル挿して充電するなら、数百円で実現できるところに、便利になるとは言え、高い金かけてQi用の充電器を準備するというのはちょっと感覚的に厳しいものがあります。というわけで、とりあえず安いものを買おうという方針で行きます。金をかけてもいいなら、パナソニックのChargePadで、可動コイルで順番に充電してくれるってのは私の用途だと、寝てる間に充電されていれば良いので、結構合ってる気がするので欲しいのですが、まあ如何せん高いです。可動コイルだと充電時のデバイスの位置を微調整しないでよいところなんかも魅力なんですけどねー。

ということで、値段重視というときは、お得意のAliexpressで安いものをということで探してみたというか、今自宅にあるものはAliexpressで$25ぐらいで買った5Vで入力できるタイプのもので、USBから適当に給電して使っています。 これ ですね。普通に使えてはいるのですが、iPhoneを充電しているとたまに見失って給電中止→数分足すと充電再開みたいなちょっと残念な動作をすることがあるのがたまにキズです。あとは充電の位置が割と分かりづらいです。サイズがちょうどいいものであればいいんですが、そうでないモバイルバッテリなどを充電する場合は結構位置の微調整をしてLEDが点灯する位置を手探りで見つける必要があります。まあ、そんなもんという気もしますが。このタイプは今買うと、$20弱で買えるようです。

で、本題です。結局、Aliexpressで探していたのですが、それと同じくらいの価格で日本でも簡単に手に入るのが、ドコモのワイヤレスチャージャー03です。今年の6月末くらいに発売された製品で、ドコモショップでも2200円程度で手に入ります。さすがに可動コイルタイプではないですが、位置合わせはLEDで知らせてくれるのと、Aliespressのと違って、三洋電機製という安心感もあります。コンパクトなタイプで、滑らないラバーが付属品として付いてくるようです。

実際の購入に関しては、ドコモショップではなく、ヨドバシの店頭受け取りでポイント10%がつくようだったので、こちら で注文して受け取りしてきました。現時点(2013/09)では、各店舗とも在庫も潤沢のようです。これなら、おおよそ2000円程度で手に入るし、Aliexpressと違って即日入手することができました。

Qi products

手元にあるQiに対応した製品たち。

参考までに、Nexus7を充電してみた動画が コチラ さすがにタブレットのサイズだと、充電器が小さすぎて位置調整に若干手間取ります。が、まあLEDを頼りに充電できるので許容範囲かな。ワイヤレスチャージャー03のほうはおそらくiPhoneの充電用として使います。

2000円程度で手に入るQiの充電器として、ドコモのワイヤレスチャージャー03は結構オススメ。

]]>
Tue, 03 Sep 2013 00:00:00 +0900
https://misc.mat2uken.net/blog/2013/08/30/diy_wimax_antenna.html https://misc.mat2uken.net/blog/2013/08/30/diy_wimax_antenna.html <![CDATA[WiMAXの自作アンテナは本当に効果があった]]> WiMAXの自作アンテナは本当に効果があった

諸事情シリーズで、Softbank LTE, IIJ SIM, WiMAXの3回線で1週間程度を過ごさないといけなくなりました。 そして、諸事情的に、基本的に暇です。できれば、時間を潰すためにも、自宅サーバに保存されている各種動画ファイルをなんとか外から見て過ごしたいと思っていて、その用途に使いたいと思っていたわけです。というか、そのために、WiMAXを使えればと期待していました。Softbank LTEは7GBで、IIJ SIMはミニマムスタートプランなので500MBの制限があり、そういう用途にはまったく向かないですし。

しかし、実際にWiMAXで通信してみたところ、WM3500R的に、アンテナピクトは1本。pingは3000ms〜10000ms越えという切ない結果。実際、通信してみても、かなり頻繁にパケットが詰まり、ブラウジングは気が長ければなんとかできるかどうか、できれば、画像の表示はOFFが好ましいという程度しか速度が出ません。実際、自宅から動画ファイルをダウンロードしてみたところ、30KB/sくらいでダウンロードできるかどうかというところで、それも頻繁に詰まります。これは厳しいということで、どうしたもんかと思ったんですが、そこで、以前話題になっていたWiMAXの自作アンテナをせっかくなので試してみました。

自作アンテナはググって出てくる通り、ダイソーに行って、コンロの油を受けるアルミの薄いシートとステンレスのお盆、まな板立てを買います。あと、後で撤去しないといけないので、粘着の弱そうなテープを1,2つくらい見繕います。

んで、まな板立てにステンレスのお盆のお盆をナナメに立てて、窓際に置きます。それに対する形で、窓に立てかけるようにWM3500Rを置きました。そして、その状態にしてから、アルミシートで囲み、端っこをテープで固定しました。

DIY WiMAX Antenna

実際の見た目はこんな感じ。アルミシートで中身を隠す感じにすると、外からの見た目がマシに?最後に、カーテンでこれを隠してた。

また、本題とは、関係ないんですが、モバイルルータのWiFiは大抵出力が弱く、且つ、2.4GHzしか使えないので、今回はWM3500RはWiFiを無効にし、ドックに接続して、有線LAN経由でAirMac Expressにつないで、WiFi APの機能はAirMac Express側の5GHzのAPを使うようにしました。

ここまでやると、WM3500Rのアンテナピクトが2本になったり、1本になったりというくらいに改善したことと、pingも300ms前後で安定することが増え、ダメなときには1000msくらいというくらいに改善しました。自宅サーバからwgetで動画ファイルをダウンロードしたところ、120KB/sくらいの速度はでるようになり、なによりも、パケットが詰まってデータが流れなくなる、というケースがかなり減りました。

で、実際、動画ファイルを見る場合は、iPad2でSafariでべしっとMP4ファイルをHTTP経由で開いてそのまま再生という形なのですが、自作アンテナ設置以後は再生される分よりもダウンロードが早い感じで、H.264/AACでSD解像度のファイルに関しては、ストリーミング(というか、プログレッシブダウンロード?)でちゃんと再生できるようになりました。

というわけで、アンテナ1本くらいの微妙な環境だと、百均で適当に買ってきた材料で本当に環境が改善するらしいという嬉しい結果でした。あまりこういうことする機会はないかもしれないですが、割とオススメ。

]]>
Fri, 30 Aug 2013 00:00:00 +0900
https://misc.mat2uken.net/blog/2013/08/24/got_aterm_mr02ln.html https://misc.mat2uken.net/blog/2013/08/24/got_aterm_mr02ln.html <![CDATA[IIJ SIMをモバイルルータで使うために、Aterm MR02LNを買った]]> IIJ SIMをモバイルルータで使うために、Aterm MR02LNを買った

諸事情第二弾で、外出先で通信することが増えるため、とりあえず、データ通信できる手段を複数準備しないとということで、とりあえず手持ちで活用できるSoftbankのiPhone5, WiMAX Aterm WM3500R, docomoなIIJ SIMでのL-04Dと3種類用意して持ち歩くことにしました。

とりあえず、iPhone5とWM3500Rはまあそれほど不満もなく、WiFiが混雑していたとしてもUSBで繋ぐこともできるので、まあそのまま継続利用でよいかなと思っていたのですが、問題はIIJ SIM用のLG製L-04Dです。こいつが思ったより不安定で、特に、1-2時間使っているとMacからL-04DのWiFiを2-3回見失って、SSIDを選択し直すと接続されるという謎な挙動をします。あとは、USBでの有線接続での利用を提供してないのも個人的には結構不満でした。

というわけで、これを機に、IIJ SIM向けのモバイルルータを一新しようかなと検討することにしました。最初は、なんか適当なAndroidタブレットにSIMを指してテザリングという手も考えはしたのですが、電池の持ちやらなにやらを考えると、個人的にAtemシリーズはWM3500Rも含め、割と安定していて、ドライバなしでも繋がるUSBでの直接接続もちゃんとサポートしているので、モバイルルータを選ぶならAtermはアリだなぁと思っています。それで、以前から少し気になっていたWM3500RからのWiMAX向けのモバイルルータのシリーズに近い、3G/LTE対応のAterm MR02LNを買いました。

以前はBiglobeかniftyで契約して、機器を同時に手に入れるしかなかったような気がして、さすがにさわざわ1年か2年の縛りを受けてまでは欲しくないなと思って諦めていたのですが、MR02LNで検索してみたところ、今はBiglobeがイオン限定ではあるものの、ルータ単体も23,800円で販売していることを知りました。というわけで、これだーということでさっそくイオンに電話して取り置きしてもらい、さっくりと買うことができました。(イオン品川シーサイドに電話しましたが、4人目にして担当者に辿り着きました。まあ、イオンだしむしろちゃんと担当の人につながってラッキーというところでしょうか。在庫は5個くらいは持っているようです。)

実際の使用感

とりあえず、MR02LNをつかっての使用感をざっと箇条書きしてみます。

  • IIJ SIMはmicroSIM版を指して、基本設定→接続先設定(LTE/3G)を選ぶと、BiglobeのAPNがプリセットになっているが、手動設定に切り替えてIIJ SIMの設定を入れればなんの問題もなく繋がります。
  • とりあえずデフォルトだと、WEPのSSIDも有効なのでそっちは無効に。無線LANの出力は最初は低い設定なので必要ならば出力をちょっと上げる。
  • 使っている限り、割と安定している。4-5時間WiFiにMacから接続していても切れるようなことはない。
  • LTEのつかみ具合は、ちょっと感度が悪いような印象。ただの印象でしかないけど、L-04Dよりはアンテナピクト上ではすこし電波のつかみ具合が悪いような?でも、実用上全く問題ないのでいいやという感じ。
  • USB直結でMacに繋ぐと、WiFiが自動的にオフになる機能ステキ。実際いらんしね。USBでつないだときもドライバはいらず、Ethernetとして見える。次で書くけど、ちゃんとIPv6も使える。
  • 電池はそれほど持たない?とりあえず適当に電源入れて、休止状態までを10分にして1日持ち歩いたところ、夕方くらいに電池がなくなってしまった。
  • 休止状態から復帰されるリモートONのためにはiPhoneをBluetooth有効にしないといけないのがちょっとめんどくさい。電池のことを考えると仕方ないんだけど、休止状態から復帰させるために、iPhoneアプリを起動すると、Bluetoothがオフですよと言われて設定に行ってとやるのはさすがにめんどい。とはいえ、無駄にずっとiPhoneのBluetoothをONにしておくのも嫌だしというところがなやましい。
  • iPhoneの状態取得アプリが、BluetoothとWiFiの両方が繋がらないと使えないのがちょっとめんどくさい。別にBluetoothつながらんでも、どうせwiFiで電波状況とか電池残量取ってるみたいだし、使えてもいいのになーとおもうのに、起動時にBluetoothがオフだとなにも使えないのが切ない。もしくは、Blueoothだけで完結してくれるならそれはそれでアリだとも思う。

とざっとあげてみたけど、基本的にかなり好印象。割と安定しているし、USB直結でもつながるし、ということで、IIJ SIMを始め、docomoなMVNOのSIMをモバイルルータで使おうとすると、LG以外は結構入手性も含め微妙な昨今ですが、多少金出してでもMR02LNを買う意味は充分あるんじゃないかなーと思います。

IPv6がちゃんとルータ化でも使える

ちなみに、MR02LNはちゃんとIPv6対応していて、3G/LTEの接続時の設定にも、接続方式として、IPv4/IPv6が選べます。 IPv6に関しては、NATするわけでもなく、/64で割り当てられたアドレスをそのまま下に配るようで、直接グローバルが割り振られます。ただ、パケットフィルタはMR02LN側でそれなりに設定できるよう。ただ、RAでの設定になり、DNSサーバの設定が配られないので、DNSサーバがIPV4をDHCPでもらってる場合はそちらが設定され、DNSでの名前解決はv4のサーバで行われるようです。v6のみにすると自動ではDNSサーバは設定されず、Atermの情報ページからIIJからPPP経由で降ってきたDNSサーバのアドレスを見て、手動でMac側で設定してやる必要があるみたい。まあ、v4と同時に使うことが大半なので、DNSサーバはv4のままでもいいっちゃいいんですけどね。DHCPv6にしちゃえばいいのにとか思うけど、そうもいかない事情があるんでしょうか。

とはいえ、モバイルルータでなんの問題もなく、IPv6がちゃんと取得できてつかえるというのもまた大変大きなメリットです(自分にとっては)。自宅とのアクセスにVPNを設定したところですけど、v6がつかえるなら割と簡単に自宅にアクセスできるようにしているので、これはありがたいですね。

このIPv6が使えるというメリットも含め、正直、今のところ、docomoなSIMを使う場合の選択肢の場合は、MR02LNはオススメというか、実質一択でこれ以外はないというくらいな存在になっています。マジおすすめ。

]]>
Sat, 24 Aug 2013 00:00:00 +0900
https://misc.mat2uken.net/blog/2013/08/23/vyatta_l2tp_ipsec.html https://misc.mat2uken.net/blog/2013/08/23/vyatta_l2tp_ipsec.html <![CDATA[自分専用のVPNリモートアクセスのために、VyattaでL2TP/IPSecを簡易設定して乗り切る]]> 自分専用のVPNリモートアクセスのために、VyattaでL2TP/IPSecを簡易設定して乗り切る

諸事情で、自宅に一定期間帰れないということになったため、外部から、とりあえず自宅ネットワークに簡単にアクセスできる方法を準備することにしました。

簡易的に自宅のMac miniやらMacbook Airなんかにもアクセスしたいとなると、いつも外からのアクセスでサーバを晒してる側の回線からではそちらのネットワークにはアクセスできるようになっておらず、簡易的にとりあえずアクセスするなら、そのクライアント達が外に抜けているVyattaにVPNを設定してしまって、むりやりネットワークに参加させるのが楽そうということで、その方向で設定を行いました。

Vyattaはフレッツ光ネクストで、PPPoEでIIJmioに接続されています。また、Bitcasa用に別途かもめインターネットにも接続されていますが、今回はより安定しているだろうIIJmio側に接続できるようにという想定をしておきます。(一応、モバイル回線がIIJ SIMなんで経路的にもお得かなというのもあって)

PPTPでなく、L2TP/IPSecを設定するのは主にiPhone向けの対策で、プライベートアドレスが割り当てられるIIJ SIM経由で、iPhoneからVPNを張る可能性もあるために、選択肢としてL2TP/IPSecを設定しました。 とはいえ、IPSecのセキュリティ周りの設定として、わざわざ証明書をつかった認証やら、というあたりは簡易的にとりあえず使えればいいので、とりあえず最も簡単なPreSharedなシークレットをつかって、ユーザ名/パスワードで認証できればOKということにしてしまいます。

というわけで、Vyattaの設定はシンプルで下記のような形。 基本的に、ipsecは単純にWAN側のインターフェース(今回はpppoe0)を指定して、nat-traversalを有効にします。(クライアントもNAT下に居る可能性が高いため)

微妙なハマリポイントは、allowed-networkでこれはちゃんとドキュメント読んだり、仕組みを考えれば当然なのですが、クライアント側のネットワークアドレスを記載する必要があります。始め、接続される側の自宅のネットワークアドレスを書いていてハマリました。とりあえず、モバイルルータが利用するネットワーク範囲をそのまま記載しています。

で、リモートアクセス側、これは、local-usersで適当に自分が使うアカウントを1つ設定することと、ipsec-settingsではmode pre-shared-secretで適当なsecretを設定しておくぐらいで、あまりハマリポイントはなかった記憶です。ただ、mtuをフレッツに合わせてそれなりに小さくしておくことと、outside-addressはWAN側に設定されているIIJmioから配布されているアドレスを手動で設定してやる必要があるようです。ドキュメントなどには、outside-next-hopも指定していたりしますが、こちらは必須ではないようです。

PPPoEで動的なアドレスが割り振られる環境なので、IPアドレスをベタに固定で書いてしまうのは若干抵抗があったのでsぐあ、いまのところ、ここを自動で設定してくれるようなオプションはVyattaにはないようです。まあ、L2TP/IPSecを利用をVyattaで利用するような場合は普通は固定IPなんでしょうね。まあ、PPPoEはめったに切れるものでもないので、とりあえずはハードコードしています。

とりあえず、これでMacとかでVPNを設定すればさっくりとつながりました。いやー、Vyatta簡単でいいですね。

ipsec {
    ipsec-interfaces {
        interface pppoe0
    }
    nat-networks {
        allowed-network 172.16.240.0/24 {
        }
        allowed-network 172.16.241.0/24 {
        }
    }
    nat-traversal enable
}
l2tp {
    remote-access {
        authentication {
            local-users {
                username dummy {
                    password dummy
                }
            }
            mode local
        }
        client-ip-pool {
            start 192.168.99.170
            stop 192.168.99.180
        }
        dns-servers {
            server-1 8.8.8.8
            server-2 8.8.4.4
        }
        ipsec-settings {
            authentication {
                mode pre-shared-secret
                pre-shared-secret dummy
            }
            ike-lifetime 7200
        }
        mtu 1280
        outside-address 1.2.3.4
    }
}

Rotue53でダイナミックDNS

PPPoE側のグローバルIPは動的に割り振られる契約なので、とりあえずIPを知るためにダイナミックDNS的なことをしないといけません。dyndnsとかのサービスを使ってもいいのですが、そもそも私はRotue53で自分のゾーンを管理しているので、Route53のAPIを叩いて適当に更新をします。 といっても、そのへんは「route53 dynamicdns python」で検索した結果、最初にでてくる`setting up dyndns service with route53 <http://blog.vrypan.net/2012/12/20/dynamic-dns-with-route53/>`_ のスクリプトをほぼ丸パクリしています。

変更点は、Public IPを取得するのは、http://ifconfig.me/ipに変更していることくらいです。 botoなので、boto.cfgなり、.botoにAWSのキーなどは設定しておく必要があります。

import requests
import sys

# Modified from https://markcaudill.me/blog/2012/07/dynamic-route53-dns-updating-with-python/
# Modified from https://gist.github.com/vrypan/4341878

domain = 'example.com'
subdomain = 'dummy'

def get_public_ip():
    r = requests.get('http://ifconfig.me/ip')
    return r.text.rstrip()

fqdn = '%s.%s' % (subdomain, domain)
zone = route53.get_zone(domain)
arec = zone.get_a(fqdn)
new_value = get_public_ip()
datestr = '"Last update %s."' % datetime.utcnow().strftime('%Y-%m-%d %H:%M')

if arec:
    old_value = arec.resource_records[0]

    if old_value == new_value:
        print '%s is current. (%s)' % (fqdn, new_value)
        sys.exit(0)

    print 'Updating %s: %s -> %s' % (fqdn, old_value, new_value)

    try:
        zone.update_a(fqdn, new_value, 60)
        zone.update_txt(fqdn, datestr, 60)
    except DNSServerError:
        # This can happen if the record did not already exist. Let's
        # try to add_a in case that's the case here.
        zone.add_a(fqdn, new_value, 60)
        zone.add_txt(fqdn, datestr, 60)
else:
        zone.add_a(fqdn, new_value, 60)
        zone.add_txt(fqdn, datestr, 60)

これでDynamicDNSが簡単に実現できる楽な時代ですねー。

]]>
Fri, 23 Aug 2013 00:00:00 +0900
https://misc.mat2uken.net/blog/2013/07/13/ipv6_with_lan_gtju3h3.html https://misc.mat2uken.net/blog/2013/07/13/ipv6_with_lan_gtju3h3.html <![CDATA[ロジテックのUSB3.0ハブ付きのEthernetアダプタでMacでIPv6が使いたいときは、ASIXのページからドライバを入れると使える]]> ロジテックのUSB3.0ハブ付きのEthernetアダプタでMacでIPv6が使いたいときは、ASIXのページからドライバを入れると使える

タイトルが全てなんだけど、先日かったロジテックの USB3.0ハブ付きのEthernetアダプタ(LAN-GTJU3H3) がMacではIPv6が使えないという糞仕様という話で ゲンナリして職場の同僚にプレゼントしようとしたら、どうせASIXの石が載ってるんだから そっちからリリースされてるもっと新しいドライバ入れればいんじゃね?みたいな指摘をうけて、 そりゃその通りだなと思い試したところ、ASIXが配ってる最新のドライバであれば問題なくIPv6が使えました。

配布ページは、 こちら でMac用が配られています。リリースノートを見ると、ジャンボフレーム関連のFixしか書かれていないのですが、こっちなら問題なくIPv6が使えるという。特に、ドライバ名とかも変えずに普通にインストールすればOKのようです。

やー、これで一息ついて、会社ではこれ繋いで普通に仕事中に自宅にもアクセスできる。いや、大変ありがたい。指摘してくれた同僚に感謝!

]]>
Sat, 13 Jul 2013 00:00:00 +0900
https://misc.mat2uken.net/blog/2013/07/12/python27_on_amazonlinux.html https://misc.mat2uken.net/blog/2013/07/12/python27_on_amazonlinux.html <![CDATA[AmazonLinuxを使うようにしたら、Pythonが2.6.8だったので、2.7.5を/optに入れる]]> AmazonLinuxを使うようにしたら、Pythonが2.6.8だったので、2.7.5を/optに入れる

とりあえず、お仕事のEC2向けのAMIをAmazonLinuxで構築しようとしたところ、そういえばCentOSベースなのでPythonが古くてシステム的には2.6.8が入っていて、簡単に検索したかぎり、これを2.7とかに上書きするのは結構難しいようだ。つーわけで、/optに別に入れる形で2.7.5を使えるようにした。

とりあえず目標は、システムにデフォルトでインストールされているPythonはそのままにしておいて、/optにインストールしたPythonをアプリを起動したりするappユーザで/optに入れたPython2.7が使えるようにするところまで。

まずは、Pythonをコンパイルするところから。

とりあえず、C++のコンパイラいるみたいなので、入れる。(というか、デフォルトではgccとかも入ってなかったのでその辺も入ってないなら一通り入れる。)

$ sudo yum install gcc-c++

次は、configureする。g++が何故か認識されないので、CXXで指定するあたりがポイント?その他のオプションはお好みで。prefixは/opt/python27にした。

$ CXX=/usr/bin/g++ ./configure --prefix=/opt/python27 --with-threads --enable-shared LDFLAGS=-Wl,-rpath,/opt/python27 --disable-ipv6

んで、Pythonの各モジュールをコンパイルするために必要なライブラリたちを入れる。一部入らないものもあるけど、自分の必要なものだけ。make後にコンパイルしなかったよーリストがでるので、必要があればその名前をヒントにして必要なライブラリ入れる。

$ sudo yum install sqlite-devel db4-devel gdbm-devel

で、make

$ make -j4

んで、ldconfig周りを設定して、LD_LIBRARY_PATHとか指定しなくても、libpythonを見つけてくれるようにしておく。ld.so.conf.dにファイルつくるときには、よく見たら.confでファイル名が終わってないと読み込まれないので注意。いやー、なんで有効にならんの?ってちょっとハマった。

# cat > /etc/ld.so.conf.d/python27.conf
/opt/python27/lib
$ sudo ldconfig -v

こっからは、virtualenvwrapperが動くようにするところ。とりあえず、easy_installが欲しいので、ez_setup.pyから入れる。で、流れで次はpipを入れる。ここまで来れば、ほぼ終わり。

$ wget https://bitbucket.org/pypa/setuptools/raw/0.8/ez_setup.py -O - | sudo /opt/python27/bin/python2.7
$ sudo /opt/python27/bin/easy_install -U distribute pip

pipが入ったので、virtualenv関連を入れる。

$ sudo /opt/python27/bin/pip install virtualenv virtualenvwrapper

最後に、python2.7だけでなく、pythonでも使えるように、シンボリックリンク張る。

$ cd /opt/python27/bin
$ sudo ln -s python2.7 python

で、最後に、appユーザはこっちのPythonをデフォルトで使うように、.bashrcにいろいろ書いておく。

APP_HOME=/srv/kanda

PYTHON_HOME=/opt/python27
export PATH=$PYTHON_HOME/bin:$PATH

export VIRTUALENVWRAPPER_PYTHON=$PYTHON_HOME/bin/python2.7
export WORKON_HOME=$HOME/.virtualenvs
source $PYTHON_HOME/bin/virtualenvwrapper.sh

だいたいこんな感じ。これで、mkvirtualenvが使えるので、appユーザ向けにvirtualenvで自分のPython2.7の環境が作れるようになる。

]]>
Fri, 12 Jul 2013 00:00:00 +0900
https://misc.mat2uken.net/blog/2013/06/24/got_nitori_bag_in_board.html https://misc.mat2uken.net/blog/2013/06/24/got_nitori_bag_in_board.html <![CDATA[小寺マガを読んでいて欲しくなったので、ニトリのバッグインボード買ってきた]]> 小寺マガを読んでいて欲しくなったので、ニトリのバッグインボード買ってきた

実は相当お気に入りで毎週愛読している 小寺マガ を読んでいて、バックインボードのレビューを発見。こういう製品の存在自体はニトリのじゃないけど売ってるのは知ってて、AmazonだったかLOFTだったかで確か2-3千円したような記憶あったんだけど、まあそこまでして買うほどではないか、と思って買ってなかった。けど、レビューみて検索したところ、ニトリだと799円で売ってるということで、その値段なら買ったーということで、さっそく買ってきた。

ちなみに、小寺マガでは、タイトルで「カバンの中に“薄く”収納、ニトリ「バック イン ボード」」になってたんだけど、バックじゃなくて、バッグだよなぁと読むときに思ったんだけど、そうですよね?

../../../_images/nitori_bag_in_board_thumb.jpg

実際にいろいろ固定したところ。想定より一回り小さくてかろうじて小物が全部固定できる感じでギリギリだった。

現状、バッグに入っている小物類は思った以上に多くて、とりあえずリストアップするとこんな感じ。

  1. Aterm WM3500R(WiMAXを1dayで使うとき用)
  2. UBFFALOの電源タップ兼USB電源とれるAC-DCな子
  3. ただの電源タップ4口のやつ
  4. MeoBankSD(出先でどうしてもSD読みたいときとか用)
  5. 5ポートのEthernetハブ
  6. 2A出力できるUSBのAC-DC
  7. iPhoneに付属してきたUSBなAC-DC(たぶん、これは純正)
  8. ちびファイ2とIO-DATAのちっこい無線LANルータ
  9. HDMI->DVI変換とDisplayPort->VGA変換のケーブル。HDMIはMacBookProになってから直接だせるようになって幸せ。

これ以外にもケーブル類が一通り入っているので、そっちはこのボードに固定するのではなく、別の袋に入れるように変えました。いままではこれら一式をまとめて黒い筒みたいな袋に入れてバッグの底に忍ばせるって感じだったのだけど、それに比べる大分縦に収納されるようになってバッグがスリムになった。良い感じ。

ちなみに、ケーブル類はめんどくさいから写真だけで。

../../../_images/cables_in_bag_thumb.jpg

充電関係がやっぱ多いかな。正直、MicroUSBはもう少し減らしても大丈夫な気がする。

ケーブルはこうして見ると相当無駄多いし、さすがにもう少し削減しようかとこの写真見て、我ながら考え中。

いつもはこれに加えて、LUMIX GX1とMacBook Pro Retina 15インチ、ACアダプタ、L-03D、L-04D(とりあえず、L-03Dでまた統一かな、IIJ SIM使ってるのに、IPv6使えないの切ないし)を持ち歩いているんだけど、あらためてこれで書いてさすがに少し荷物減らしたほうがいいのではないかと見直したくなってきた。

とりあえず、最近は平日はMacBookProは会社に置いてしまうようにして、基本的に平日の日中以外の時間帯と土日に出歩くときには、Vaio Pro 11インチに変えてしまうといろいろ幸せなのではないかという更に違う方向の妄想をしていたりします。でも、正直、高くてASUSのでいいやんという気もしている。

]]>
Mon, 24 Jun 2013 00:00:00 +0900
https://misc.mat2uken.net/blog/2013/06/23/remotedesktop_on_mac_with_ipv6.html https://misc.mat2uken.net/blog/2013/06/23/remotedesktop_on_mac_with_ipv6.html <![CDATA[Mac用のRemote Desktop ConnectionはIPv6では動かないっぽいので、CoRDに乗り換えた]]> Mac用のRemote Desktop ConnectionはIPv6では動かないっぽいので、CoRDに乗り換えた

MacからWindowsにリモートデスクトップで接続してクライアントになる場合は、Microsoftが公式で配っているRemote Desktop Connection 2.1.1を使うのが定番だと思うんですが、これがどうもIPv6には対応してないっぽいという話。ちなみに、前はRemote Desktop Connectionって単体でも配布していた気がするだけど、今はどうもOfficeに付属しているだけで単体配布はしなくなったのかな?MSのサイトからダウンロードできるところを見つけられなかった。

Windowsだと、リモートデスクトップクライアントも普通にIPv6対応しているんだけども、Mac用に配布されているのはどうもだめっぽく、切ない感じ。

CoRDはどうもIPv6でも問題なく動くのでこっちに乗り換え

で、どうしたもんかなぁとおもっていたところ、CoRD を発見して、適当にIPv6のアドレスで設定してみたところ、普通に動くみたい。これはありがたい。

ただ、CoRDだとなんか割と接続がプチプチきれる感じがあるのと、何故かたまにサーバのアドレスが変な感じに途中で切られて保存されるケースがあるようで、きっとどこかでアドレスの扱いがv4前提になってんのかなぁと想像している。暇があったらソース見てみよう。

というわけで、とりあえず、CoRDを使えばMacでRDPをIPv6でも使えるらしい。

]]>
Sun, 23 Jun 2013 00:00:00 +0900
https://misc.mat2uken.net/blog/2013/06/21/timemachine_to_sparseimage_for_bitcasa.html https://misc.mat2uken.net/blog/2013/06/21/timemachine_to_sparseimage_for_bitcasa.html <![CDATA[MacのTimeMachineのバックアップ先をスパースディスクイメージにする]]> MacのTimeMachineのバックアップ先をスパースディスクイメージにする

Bitcasaを使い始めると、TimeMachineでとったバックアップイメージももせっかくだしBitcasaに置きたいなぁという発想になります。ただ、BitcasaはMacから見ると、ただのマウントしたボリュームではありますが、HDD扱いではないのでそのまま、TimeMachineが使うディスクとして選択はできません。また、Bitcasaに直接TimeMachineでバックアップをすると、Bitcasa的ルート位置に適当なディレクトリ作られたりするので、なんとなく気に入りません。はじめは複数のマシンからバックアップできねーじゃんとかおもってたけど、Backups.backupdb以下にマシン名でディレクトリ作るから、同じディスクに複数のMacからバックアップしても大丈夫なようになっているみたいですね。

というわけで、すこし回り道ですが、一度、スパースディスクイメージを作って、そのイメージファイルをBitcasaに置く→それをマウントして、その領域をTimeMachineのバックアップ先として指定するという手順を踏むことにしました。

手順は以下のような感じ。

  1. ディスクユーティリティーで、新規イメージをクリックして、スパースディスクイメージを作成
  2. 作成されたイメージファイルをBitcasaに保存した上で、ダブルクリックしてマウント
  3. TimeMachineの設定GUIではバックアップ先に指定できないので、tmutilをつかってコマンドラインからバックアップ先を設定
  4. TimeMachineで初回バックアップを作る
../../../_images/TimeMachine_create_image_thumb.jpg

こんな感じのダイアログでイメージファイルを作成

つぎは、適当にターミナルからバックアップ先を指定します。

$ sudo tmutil setdestination /Volumes/forTimeMachineMyMacmini

という感じでコマンド実行。

../../../_images/TimeMachine_start_backup_thumb.jpg

あとは、メニューバーとか設定から、タイムマシンの設定を開いて、今すぐバックアップを実行します。

私の場合は、初回で大体600GBくらいあったようで、Bitcasa上にイメージを置いた状態でマウントしてバックアップしたら驚愕の3日目にしてまだ終わってない事態になってます。そして、最大の問題は、Bitcasaってアップロード時にCPUが暗号化するためなのかぶん回るんですよね、Mac mini(Mid 2011)でCPUが2.5GHzのIntel Core i5でもバックアップ中は、CPUを130-180%程度占有しててすごくウザイ。

とりあえず、BitcasaにTimeMachineでバックアップできるようにはなったが

上記の通りで、問題は2つかな、と。

  1. Bitcasaに直接だとアップロード速度が2MB/sくらいに制限されることもあって、バックアップにものすごい時間がかかる
  2. Bitcasaはアップロード中にものすごいCPUを奪っていくので、時間がかかると、通常使用時に操作が引っかかったりして大変ウザイ

1はまあ、Bitcasaのアップロードがどうあがいても20Mbps前後で頭打ちのようなのでどうしようもないのですが、2に関してはどうにか解決したいところです。最初は、Gentooが動いているマシンをafpか、smbでマウントできるので、そこにイメージを置いてマウントしてバッグアップしようか、と考えたんですが、その後のアップロードが難しいんですよね。

とりあえず、BitcasaはLinuxのクライアントはリリース予定になっていて、今は使える状況にないっぽいので、次善の策として、Mac mini->Linuxにバックアップしたものを、Bitcasaアップロード専用マシンと化しているMacBook Airから同一のディレクトリをマウントして、Bitcasaのボリュームにrsyncという手を考えました。これかなりいけるんじゃね?と思ったんですが、rsyncってファイル単位で差分バックアップはできるけど、ファイルそのものの差分はとってくれないので、毎回全部コピーになってしまって、まったく実用レベルの時間でBitcasaへのアップロードができないことに気づいた、というのがイマココ状態。

ファイルの差分だけをコピーしてくれるようなツールってなんかMacで動くやつでいいのあるんですかね。それがあれば、Mac mini->Linux->MacBook Airという迂遠な流れで、Bitcasaにイメージをアップロードする状態にしたいなぁと思っています。

]]>
Fri, 21 Jun 2013 00:00:00 +0900
https://misc.mat2uken.net/blog/2013/06/17/mac_wireless_tools.html https://misc.mat2uken.net/blog/2013/06/17/mac_wireless_tools.html <![CDATA[OS Xに付属しているWiFi関連のツール]]> OS Xに付属しているWiFi関連のツール

Wi2 300が使えるようになったので、いつも行くスタバで設定してみよう、というところから始まって、最近は5GHzな電波も結構飛んでるんだよなと思って調べるためにもともとあるツールをMacで使ったのでメモ。

ワイヤレス診断

1つ目というか、メインはこっち、ワイヤレス診断。ちょっと前まで、Wi-Fi診断だった記憶があるんだけど、いつのまにかアプリの名前も変わって、UIも結構変わった。11ac対応が入ったあたりで変わった気がするので、先月あたりのOSXのアップデートかな。

パス的には、/System/Library/CoreServices/WirelessDiagnostics.appなので、openに渡して起動するか、/System/Library/CoreServicesをFinderで開いて、ワイヤレス診断.appをダブルクリックして起動します。

../../../_images/WirelessDiagnostics_finder_thumb.jpg
../../../_images/WirelessDiagnostics_thumb.jpg

とりあえず診断ダイアログが出るけど、こっちは無視って、Command+2を押す。

これの診断機能自体は今回は別にどうでもよくて、Command+2(もくは、メニューバーのウインドウから)で起動できるユーティリティが便利。後述のairportでもスキャンとか、現在の接続の詳細情報など見れるんだけど、こっちはGUIでさくっと操作できるのでこっちで充分という気がする。あと、パフォーマンスタブで、S/N比や信号もグラフで見れるのでよいですね(Wi-Fi診断っていう名前のときはできなかったと思う。)

../../../_images/WirelessDiagnostics_getinfo_thumb.jpg ../../../_images/WirelessDiagnostics_scan_thumb.jpg

とりあえず、飛んでるSSIDが5GHzなのか、2.4GHzなのか、どのチャンネル使ってるのかあたりはWi-Fi スキャンタブで確認できる。今すぐスキャンを押すと、10秒くらいで一覧がでてきて、チャンネルとバンド幅見ればOK。

ちなみに、全然話が変わるけど、フレームキャプチャがデバッグ用にはすげー強力で、チャンネル指定でとりあえず飛んでる電波を全部フレーム単位でキャプチャしてファイルに落としてくれます。まあ、そのあと、フレームを読むためのツールは適当に作るか、見つけてくる必要があるんだけど。私はそういうお仕事得意な人なので、以前つくったツールで適当にパースしてみたところ見事に全部読めて大変便利にデバッグできそう。

あとは、情報タブでとりあえず、現在インターフェースがどのSSIDにつながっていて、RSSIやノイズがどうなってるか、チャンネルやチャンネル幅がどうかというあたりが全部見れるので大変オススメ。カジュアルにチャンネルとか確認したいだけなら、メニューバーのWiFiのアイコンをOption押しながらクリックでもみれるけど、詳しく見たいなら断然こっち。

airport

で、上記ワイヤレス診断よりだいぶデバッグ用途っぽいのがこっち。一応スキャンとかできるけど、それよりももっと開発寄りの機能がいつのまにかだいぶ増えている気がする。いままでのオプション類はLEGACYとなってるけど、一応動く?感じではある。ただ、設定からしかできそうな、接続したネットワークを覚えるかどうかとかそういう設定系やらdebugで始まるカテゴリではかなり多様なログが取れそうな雰囲気。使う機会がある気はしないけれど。

一応、従来のスキャンは動くみたい。チャンネル設定を固定して、無理矢理5GHzに繋ぐのはできなくなった?(今回、これをやりたくていろいろ触ったんだけど、どうもうまく動かない。。。)

スキャン
$ airport -s

チャンネル設定(試した感じでは動かない気がする)
$ sudo airport -c44

なにはともあれ、WiFiの切断
$ sudo airport -z

とりあえず、スキャンしたかったり、インターフェースの情報見たければ、ワイヤレス診断つかうほうが早そうというお話。

で、結局、分からなかった無理矢理5GHzでつなぐ方法

JoinModeでStrongestとかにすればつながる可能性があがったりするんかなーと思いつつ、結局のところよく分からず。同じSSIDで2.4GHzと5GHzの両方で電波が飛んでる場合に、5GHzのほうに繋いでねという方法、なんか方法があるんでしょうか。。。

]]>
Mon, 17 Jun 2013 00:00:00 +0900
https://misc.mat2uken.net/blog/2013/06/15/got_bic_sim_iij_wi2.html https://misc.mat2uken.net/blog/2013/06/15/got_bic_sim_iij_wi2.html <![CDATA[wi2も無料で使えるらしいBIC SIM powered by IIJを買った]]> wi2も無料で使えるらしいBIC SIM powered by IIJを買った

とりあえず、予約受け付けているのは知ってたけど、まあそこまで気合い入れなくてもアキバに居れば適当に発売日に手に入るだろうとタカをくくって、発売日に買いにいこうとしたところ、午前中にアキバソフマップではマイクロSIMはもう在庫ないよ情報を教えてもらったので、とりあえず、自宅に近い川崎のビックカメラに寄って買いました。割と在庫には余裕あったっぽい。それなりに売れてますよという風に店員さんは言ってました。

とりあえず、IIJ SIMとどこが違うのとか、最初の登録とかそのへんは、カイ士伝の コレ とか、これ とかを見てもらうのでいいとおもうので割愛。

私自身はすでにIIJ SIMのミニマムスタートプランをすでに1枚契約していて、L-03Dに挿して使っています。といっても、基本的には、24時間365日いつでも障害対応とかもあり得る状況なので、そのために、田舎にいても最低限ネットに繋がるように的な意味合いが強くて、日常ではスマホに挿して使うとかそういう用途では使っていません。あくまで、WiMAXもつながらねー、ドコモなら行けるという場合の最後の手段ですね。といいつつ、IIJ SIMはv6のアドレス割り振ってくれるというステキなサービスなので、スタバとかで作業してるときに、自宅サーバとの通信専用とかで、追加でL-03Dを挿して使っていたりということはたまにあります。

んで、これがいままで月945円だったわけですが、BIC SIMにするとこれに特に追加料金なしで、Wi2 300の公衆無線LANが使えるようになるということで、解約して乗り換えると、初期費用の3150円がかかってきてしまうのが難点だなーとおもいつつ、長期的にはこっちが明らかにお得だろうということで乗り換えることにしました。

通常のIIJ SIMとなんら変わることなく、IIJ mioの既存アカウントに追加できたので、決済情報なども入力することなくさくっと登録できました。

とりあえずコレで、auのiPhoneからMNPでどっかに乗り換えたら、公衆無線LANまた使えなくなって微妙だなぁと思っていたのが解消できてよかった。そろそろフレッツスポットは解約してもいいような気がしてきた。実質、ラゾーナのスタバ以外で使っていないという切ない状況になっているんですよね...

../../../_images/bic_sim_with_l03d_thumb.jpg

L-03Dに挿したところ。汎用性を考えてマイクロSIMにゲタを履かせています。

]]>
Sat, 15 Jun 2013 00:00:00 +0900
https://misc.mat2uken.net/blog/2013/06/14/got_logitec_giga_ethernet_adapter.html https://misc.mat2uken.net/blog/2013/06/14/got_logitec_giga_ethernet_adapter.html <![CDATA[ロジテックのUSBハブ+ギガビットイーサネットアダプタを買ったが、IPv6が使えないという悲しいオチが待っていた]]> ロジテックのUSBハブ+ギガビットイーサネットアダプタを買ったが、IPv6が使えないという悲しいオチが待っていた

職場では基本的にMacBookProをメインにつかって作業しています。ネットワークの接続は、なんとなく趣味でというか、安定性を求めて、基本的に席で使う場合は、無線LANじゃなくて有線LANを利用するようにしています。んで、そのために、今まではThunderbolt-Ethernetアダプタを机の上にEthernetケーブルの先に常に接続した状態にしておいて、出社するとそれをMacのThunderboltポートにつないで使うっていう形で運用してました。

ただ、ThunderboltのEthernetアダプタはさすがに1個しか買ってなくて、持ち歩いているのは、昔MacBook Air用にかった純正ではないBUFFALOのUSB2.0の100MbpsなEthernetアダプタを持ち歩いている状態です。(意外にでかくて邪魔なんですよね。)しかし、自宅でファイル転送とかをがっつりする用途が2-3日続いていて、100Mbpsだと遅くて微妙だなぁという状況になっていて、ふと昨日の朝に起きた時に、ロジテックの LAN-GTJU3H3レビュー を見て、ああ職場に置いているThunderboltアダプタを持ち歩くようにして、これを職場に常設するようにすると、HUBにもなるしいいかなぁと思っていると、ついついAmazonでポチッとして当日に来ましたという衝動買いパターンが発生しました。

../../../_images/logitec_giga_ethernet_adapter_package_thumb.jpg

いやぁ、やっぱ日本のメーカのパッケージ綺麗ですね。端っこ潰れたりしてないし。Aliexpressの業者と比べるのが失礼か。

../../../_images/logitec_giga_ethernet_adapter_body_thumb.jpg

本体はこんな感じ、USB3.0が3ポートのHUBでもあるのでサイズはちょっと大きめだけど、机の上に常設しておくなら全然気にならない程度のたばこサイズ。

../../../_images/logitec_giga_ethernet_adapter_connected_thumb.jpg

つなぐとこんな感じ。HUBのポートの位置が横なので、どういう風に固定するか迷い中。意外にケーブルが短くて、単純に置いて両面テープで固定するとUSBのほうが挿しずらそう。。。

OS Xで使う場合には、IPv6が使えない...

んで、実際の使い心地。USBハブのほうは、ほんとにタダのハブなので、USBメモリとか挿してみて問題なく動作してるのを確認してるくらいです。あとは、USBオーディオをつないでミキシングして使っているのが通常なのでそのへんは今後ためす予定。

問題は、ギガビットのEthernetのほう。とりあえず、ASIX AX88179というチップが載っているようで、Macに元々入っているようなドライバでは動かなくて、添付のDVDからインストール必須です。が、DVDドライブなんてついてねーよということで、ロジテックのサイトからドライバ落として入れてくると動くようになりました。速度もLAN内でのファイル転送だと、IPv4でのSamba接続で300-400Mbpsくらいは出てるようなので、その点はまったく問題なくいい感じです。

で、本題の落とし穴。パッケージをよく見ると、小さく注意事項として、「MacOSでは、IPv6サービスには対応していません」、という衝撃の文言を発見しました。アレ、IPv6使えないの...動作確認してないだけで、使えるとかないかなーとおもって、RAでアドレス取れるようにしてみると、普通にグローバルのIPv6なアドレスがとれて、v6ちゃんと動くやーんって思ってよしよしって思ったんですが、その後、IIJのトップページとかをブラウザで開くと、IPv6ではなくIPv4で接続されている表示になってしまいました。えーっとおもって、ping6とかでとなりのWindowsPCなんかにpingを打ってみてもたしかに届きません。逆方向も然りです。なんだか、大変微妙な状況で、確かに注意事項通り、IPv6は使えないようです。

たぶん、ドライバの完成度が低いのか、なんかバグがあるのかということなのでしょうが、こういう問題があるのならほんとどっかにちゃんと大きく書いて欲しいです。IPv6を常用してる人だっているんですよ!ってほんとに声を大にして言いたい。自宅のサーバとv6で使ってるので、結構v6が使えないのはつらくて、割とどうしてくれようかという感じに現状なっています。

とりあえず、ロジテックに要望として、なんとかv6対応してよとメールでも送っておこうかなとおもったら、なんと購入後のサポートや問い合わせは、電話かFAXの2択ということで、めんどくさくなって、放置中。。。いやー、しかし、ほんとこういう製品で実はv6通りませんとかそういう謎なことホント辞めて欲しいです、というお話。

]]>
Fri, 14 Jun 2013 00:00:00 +0900
https://misc.mat2uken.net/blog/2013/06/14/cloudfront_route53_alias.html https://misc.mat2uken.net/blog/2013/06/14/cloudfront_route53_alias.html <![CDATA[Route53でCloudFrontのドメインをエイリアスなAレコードに設定可能になったので変えてみた]]> Route53でCloudFrontのドメインをエイリアスなAレコードに設定可能になったので変えてみた

最近、CloudFrontの Amazon CloudFrontが独自SSL証明書とルートドメインホスティングをサポート というのがあって、独自ドメインのSSL証明書サポートのほうはさておいて、ルートドメインホスティング対応とは、詰まるところ、Route53を使っていれば、CloudFrontの割り当てられたドメインが返してくるAレコードのIP群と同じIPが返ってくるALIASなAレコードを作れるようになったよ、ということのようです。

とりあえず、cerevo.comのルートドメインはいままでさくらVPSでnginxが動いていて、http://cerevo.comという形でアクセスされた場合は、wwwを前につけたものにrewrite(301でredirect)というのだけを延々と行う形で対処していましたが、これでCloudFrontだけで完結できるようになってスッキリしました。

んで、さらにというところで、無駄に貧乏性な私として見落とせないのが、「Route53はCloudFrontディストリビューションにマッピングされたエイリアスレコードへのクエリに対して課金いたしません。 」という一文。クエリに対する課金なんてたかが知れてるけど、設定すると安くなるんだしやろうということで、CloudFrontで独自ドメインを設定してるドメインをまとめてエイリアスに移行しました。一応、課金されない以外にもメリットはあるような気がして、CNAMEだと独自ドメイン→d123.cloudfront.net→IPという形で変換されのにくらべて、いきなりAレコードになる分、きっと、サーバ的には極めて微妙に速くなったりしないんですかねとか思ったけど、いや、たぶんしないですね、なんでもないです。

CloudFrontは、実際、仕事でかなり使っています。大抵の場合、製品発表後か、テレビ放送後のアクセス集中対策としてというのと、海外からのアクセスも増えてきているのでそこの高速化のためというところで、製品ページやコーポレートページなどの静的ページは基本CloudFront経由での提供としています。その場合、独自ドメインを割り当てて、その上で、CloudFrontのd123.cloudfront.netに対してCNAMEをはって運用しているケースが大半なので、このRoute53の設定を書き換えていきます。

設定はManagement Consoleでポチポチするだけの簡単なもので、現状では、Route53でCNAMEでd123.cloudfront.netが設定されているので、レコードタイプをAレコードに変えた上で、AliasのラジオボタンのYesを選びます。その上で、Alias Targetにフォーカスを当てると、選択肢がプルダウン的に表示されるので、その中から該当のCloudFrontのドメインを選択します。

../../../_images/route53_cloudfront_cname_thumb.jpg

CNAMEで設定している場合の画面(旧来の設定)

../../../_images/route53_cloudfront_alias_list_thumb.jpg

選択肢はこういう感じで表示される(ただし、同一アカウントのものだけなので、違う場合は自分でCloudFrontのドメインを入力します。)

../../../_images/route53_cloudfront_a_thumb.jpg

エイリアスなAレコードを設定した場合の画面(新規の設定)

ちなみに、このときにハマりまして、レコードのタイプをCNAMEのままにして、Alias Targetに選択肢はでないけど、まあ適当に該当のドメイン入れればいいのかなと思って設定したら、設定は可能なんですが、DNSを引くとレコードがなくなったことになってIPが返ってこないという悲しいことが起こります。当然なんですが、確実にAレコードのエイリアスとして設定しましょう。

また、Route53のゾーンを持ってるアカウントとCloudFrontのDistributionを設定しているアカウントが違う場合は、上記の操作でAlias Targetに選択肢は出てきませんが、Alternate Domainとして指定されていれば問題なく設定できるようなので、適当にドメインをCloudFrontの設定画面とかからコピーしてきて、d123.cloudfront.netのドメイン名をそのままAlias Targetに入力することで問題なく設定できるようです。

というわけで、微妙な費用削減のためにエイリアスに変えてみました、の巻。

]]>
Fri, 14 Jun 2013 00:00:00 +0900
https://misc.mat2uken.net/blog/2013/06/13/no_printcap_file.html https://misc.mat2uken.net/blog/2013/06/13/no_printcap_file.html <![CDATA[SambaのUnable to open printcap file /etc/printcap for read! がウザイ]]> SambaのUnable to open printcap file /etc/printcap for read! がウザイ

自宅サーバのログを眺めていて、sambaのログで、Unable to open printcap file /etc/printcap for read! っていうログがすごい流れていてうざいなぁということで出さないように設定変えたという話。

自宅サーバはGentooなわけですが、つい先日インストールしなおした際になんとlogrotateを入れるのを忘れていて、ログが溜まる一方だったという事件がありました(そのときは結局ディスクが一杯になって動作がおかしくなって気づきました。)そのときに各種ログファイルをながめていて、意外にsambaのログファイルでかいなーということで、中身を見ると、表題のUnable to open printcap file /etc/printcap for read! がすげー行数でていたのに気づきました。

その後、設定見ると、load printers = noにしてるんで、あれ、noにしてるのになんでprintcapのファイル読みに行ってるんだろうとおもって、うーんと考えていて、空ファイル作成して逃げるのもなんか芸が無いなぁということで唸っていたら、printcap name に/etc/printcapが設定されてるのがどうもダメそうだったので、printcap nameには/dev/nullを設定して、と思ったらそれでもダメそう。

で、ググったり、manを読んでたりしてたところ、要はprintingでbsdとかを指定してやってCUPSとかではなくすることで、ログがでなくなってスッキリしました、という話。

load printers = no
printcap name = /dev/null
printing = bsd

結局、こういう風に設定すると、Unable to open printcap file /etc/printcap for read! が出なくなりましたとさ。

]]>
Thu, 13 Jun 2013 00:00:00 +0900
https://misc.mat2uken.net/blog/2013/06/13/chibifi_at_cafe.html https://misc.mat2uken.net/blog/2013/06/13/chibifi_at_cafe.html <![CDATA[ちびファイ2はUSB-Ethernet側をWANにできればいいのに]]> ちびファイ2はUSB-Ethernet側をWANにできればいいのに

今年になってくらいにいろんなメーカーから出てきているスティック型のポータブル無線LANルータ(USBから電源とってEtheretポートとWiFiが載ってるやつ)のうち、PLANEXの ちびファイ2 MZK-UE150N を買いました。

なんでコレにしたかというのは、一点だけで、この手のやつの中で唯一、USB側が電源とるだけでなくて、USB-Ethernetの変換アダプタとして動作するんですよね。なので、Macとコレを別途Ethernet経由で繋がなくても、USB側だけピロッとなる感じで繋いぐと、デフォルトだと、このルータのLAN側のネットワークに参加している形になります。とりあえず、緊急避難的にUSB-Ethernetアダプタとしても使えるのと、iPhoneと同一ネットワーク内に居たいことができた場合には、iPhoneをこいつに繋げばEthernetケーブルなしでも接続できるというのが利点ですね。

../../../_images/chibifi_body_thumb.jpg

 実際につないでる見た目はこんな感じ。

で、こっからが本題ですが、期待していた点がもう一つあって、USB-Ethernet側をWANに設定して、Macでインターネット共有を有効にすれば、こいつにつないだiPhoneから外に出て行けないかなという期待をもっていたのですが、どうもUSB-Ethernet側をWANとして扱うことはできないようです。

こういうつなぎ方をしたい理由は単純で、外でというか、スタバでよくMac開いていろんな作業やってるときは基本的にフレッツスポットのPPPoEを使っています。今更感が溢れるとかそういうツッコミを受けるかもしれないのですが、フレッツスポットがNTT-SPOTという名前のSSIDを飛ばす前から使ってたので、すでに設定済みなのをわざわざ変える必然性がない、という話とPPPoEだとちゃんと自分のプロバイダのIPがグローバルで降ってくるのでこっちを使いたいという話で、フレッツスポットでのPPPoEを使っています。というわけで、基本的に、iPhoneとかはフレッツスポットには繋がらないんですよね。とはいえ、3Gのままというのもアレだし、別途NTT-SPOTとかau_WiFiとかつかうのもめんどくさいし、au_WiFiは遅いイメージがあって使いたくないなぁということで、できればMacでPPPoE接続してもっているインターネット回線をそのままiPhoneでも使いたいとおもう瞬間があります。このときに、ちびファイでUSB-Ethernet側がWANにできれば、EthernetケーブルもなしにUSBにつなぐだけで、インターネット接続共有でさくっとWiFiつながるようになるやーんとおもって、期待して買ったんですがさすがにそこまで柔軟には設定できませんでしたというお話。

../../../_images/chibifi_ether_thumb.jpg

というわけで、仕方なく利用するときは別途Ethernetケーブルをつないで、すげー不格好なことになっていて、意味ない状態。

おまけ

../../../_images/iodata_mobile_router_thumb.jpg

とかいいながら、実はIO-DATAの同じようなやつも買ってしまっているのはご愛敬。

こうやってみると、結構、PLANEXのほうがでかいのが分かりますね。

]]>
Thu, 13 Jun 2013 00:00:00 +0900
https://misc.mat2uken.net/blog/2013/06/12/good_moqups.html https://misc.mat2uken.net/blog/2013/06/12/good_moqups.html <![CDATA[moqupsが使いやすい]]> moqupsが使いやすい

仕事柄、たまにUIのモックアップのようなものや画面遷移のイメージなどを作る機会が訪れます。去年なんかはCacooを使ったり、ローカルではOmniGraffleを使ったりしてました。また、最近そういう作業をしようと思ったときに、やっぱCacooっすかねぇとつぶやいていたら、moqups というのを教えてもらいました。

とりあえず、CacooはFlashだからなのか、なんというかちょっとモッサリ感があるのと、Chromeと微妙に相性が悪いせいか、妙に不安定だったりしたのに対して、moqups はHTML5のみで書かれていることもあって、そのへんの不満がなくて割とサクサクなのがまず気に入りました。実際使った感じもかなりサクサクです。

../../../_images/moqups_thumb.jpg

実際、使っている画面はこんなかんじ。

基本的なシェイプだったりとか、UIのモックつくるための要素は大体元から用意されていて、ステンシルは私が使う分には充分です。一応、自分で画像アップロードして配置することもできるんで、どうしても必要そうだったりとか、写真はめることもできます。

逆に、なぜかステンシル内のText inputでフォントサイズが変えれなかったりとか細かいところでは、うーんできればここはフォントサイズ変えたいのにとかなくはないですが、そこまでヘビーユースではないので、そのへんはじわじわでも改善してくれるといいなーと思っています。

あとは、これも結構大きいところで、無料でできる範囲が大きいのも好印象です。プロジェクトをPrivateにするには有料じゃないといけないので、仕事的な用途ではStandardには入るべきという感じですが、個人的に一人で使う分には、無料でも特に書ける絵は変わらないし、PDFなんかへのエクスポートもできるので、Publicにしていても良いよという部分さえOKであれば無料で充分に使えます。

私は、一応、仕事用なのでStandardに加入しました。$9です。ほかのプランは こんな感じ です。アクティブなプロジェクトが10個までで、Archiveしてしまえば無制限のようなので、基本的に10個同時に編集中の状態で置いておくほどのことはあり得ないので、これで充分そうです。個人的に、この値段のPremiumに含まれる内容のLovely Supportにクスッとしました。こういうのいいですよね。

]]>
Wed, 12 Jun 2013 00:00:00 +0900
https://misc.mat2uken.net/blog/2013/06/11/got_chargecard.html https://misc.mat2uken.net/blog/2013/06/11/got_chargecard.html <![CDATA[割と便利に使っているChargeCard]]> 割と便利に使っているChargeCard

そういえばというところで、ずいぶん前にKickstarterで支援した ChargeCard は、珍しく自分の中で定番化していて、本当に財布の中に常に入れるようになりました。理由としては、大抵、ポケットにいわゆるモバイルバッテリーを入れている(特に、Macを入れたバッグを持たないときは意識的に持ってる)ので、iPhoneの電池足りなくなった場合に、このモバイルバッテリとケーブルはChargeCardをつないで充電に使うっていう緊急避難的利用ができるのがミソです。

これまでも、巻き取り型のケーブルを一緒にポケットに入れてたりしたんだけど、よく断線したり、コネクタが破損したりってので、結構微妙だなぁと思ってたところで、財布にカードの形で入れておくと壊れたりも少なくてかなりいい感じ、ということで携帯するようにしています。破損しないようにケーブルを袋にいれたりすると、ポケットに入れてて違和感あるサイズになっちゃうんですよね。

というわけで、自分が使っているタイプのChargeCardは、クレジットカードサイズの30pinのDockコネクタとUSB A-Typeのコネクタが両端のケーブルです。他にもDockコネクタじゃなくて、MicroUSBタイプもあります。Ligntningも計画されているようですね。

../../../_images/ChargeCard_in_budget_thumb.jpg

こんな感じで財布に入ります。

../../../_images/ChargeCard_body_00_thumb.jpg

本体はこういう感じ。Dockコネクタの部分も含めて、ちょうどクレジットカードサイズです。

../../../_images/ChargeCard_charging_01_thumb.jpg

充電中はちょっとかさばるけど、まあ緊急避難的用途なので良しとしてます。

ただ、最大の問題は、最近、iPhoneの充電をQiに変えていて、このケースは残念なことに、Dockコネクタを埋めちゃうんですよね。なので、Dockコネクタにつないで充電しようとおもうと、ケースを外さないといけません。その上、このケース堅い板にナナメに挿入する感じで固定されてるので、外すときは結構怖いです、コネクタ壊しそうな感じの角度にしてからスライドして外す感じなので。

../../../_images/ChargeCard_qi_charging_thumb.jpg

こんな感じでQi充電できる代わりに、このケースDockコネクタが潰れるんですよね、格安890円ケースなので文句言うほどではないけれども。

ちなみに、バッグにはさらに予備ケーブルを入れるようにしていて、JawboneのBluetoothヘッドセットを買ったときに付いてきた付属ケーブルで、これ、ちょっと形状記憶っぽい感じで、且つ、すごく短いのMicroUSBケーブルでお気に入りです。これに、アキバではおなじみ、Apple製ではないMicroUSB→Dockコネクタ変換をはめて携帯しています。前まではこれをポケットに入れてたんですが、すでに2本ぐらいダメにしていて、ChargeCardに置き換えたという感じですね。

../../../_images/ChargeCard_other_cable_thumb.jpg

このケーブル、すごいお気に入りなんだけど、同じようなのがなかなか売ってないんですよね。どっかに売ってないかなぁ。上海問屋のやつは堅すぎて邪魔だったし。。。

]]>
Tue, 11 Jun 2013 00:00:00 +0900
https://misc.mat2uken.net/blog/2013/06/03/kamome_internet_for_bitcasa.html https://misc.mat2uken.net/blog/2013/06/03/kamome_internet_for_bitcasa.html <![CDATA[Bitcasaのためにかもめインターネットを契約してみた]]> Bitcasaのためにかもめインターネットを契約してみた

ちょっと前の記事で、Bitcasaを使い始めてからIIJmioに、上り回線を規制値の15GB/day以上に使いすぎだからこのままだと回線止めるぞ警告をいただいたという話の続き。トラフィックを監視するために、Vyattaのトラフィック状況をmuninでグラフ化するとかやってましたが、結局、トラフィック量の規制がそれほどでもないらしい、かもめインターネットを契約してみました。3ヶ月先払いで6900円。基本的には、3ヶ月で契約一度やめようかなと思っていて、この間に、手元にある6TB分くらいの各種データをBitcasaにアップロードしようと目論んでいます。また怒られるかなぁ。

Bitcasa宛のトラフィックだけをかもめインターネット経由にしたい

基本的に、かもめインターネットはFreebit系かVectant系が上位回線らしく、大きくないプロバイダでありがちなパターンのようです。いままでもOpenCircuitだったりを使ってて、大抵この手の上位回線つかってる安いプロバイダは、夜に混雑しててあまり速度が出ないとか、なぜか特定の宛先だけすごい遅いとか、そういう微妙なことが起こりやすい印象があります。ってことで、そういう面倒くさいトラブルに遭いたくないので、基本的にIIJmioを常用の回線としておいて、Bitcasa向けの通信だけをかもめインターネット経由にするということにしたいなぁということで設定していきます。

Bitcasaクライアント動かしているマシンで静的ルーティング設定するという手もなくはなさそうですが、今回はインターネットの出口なっているVyattaがうごいているノートPCさんでトラフィックを振り分けるように設定してみました。あとは、Bitcasaはクライアントで暗号化してからアップロードするようで、がんばって動いている間は結構CPUがぶん回るのでアップロード専用のPCを用意してソースルーティングで、そいつだけかもめインターネット経由にするという方法もありますね。ちょっとこの方法は次点の方法として想定しています。こっちのが楽かもなー。IP調べたりせんでいいし。

宛先といっても、要は通信先のIPアドレスなので、まずは、Bitcasaクライアントが実際にはどこのIPと通信するかを突き止めてみます。といっても、それほど難しいことはなくて、Bitcasaクライアントが動いているマシン(私の場合は手元のMac mini)にWiresharkを入れて、Bitcasaが通信しているパケットをがーっとキャプチャします。極力見やすくなるように、Bitcasaクライアント以外が動いていないような状況にして、

  1. パケットキャプチャ開始
  2. Bitcasaクライアントを立ち上げる
  3. FinderでBitcasa Infinite Driveがマウントされているディレクトリを開く
  4. 適当なファイルをコピーして、削除する
  5. Bitcasaクライアントを終了
  6. パケットキャプチャ終了

という流れで、パケットを採取します。一応、一覧取得→コピー(アップーロード)→削除という感じで、Bitcasaのクライアントが通信しそうな操作を行います。

で、ここからは、正直それほど正確でもなくていいというか、とりあえず設定してみようという感じなので、やっつけ感あふれますが、パケットキャプチャ結果をProtocolでソートして、送信しているDNSクエリ(特に、Aレコード引いてるやつ)をまとめて見てみます。(実際、ほぼSSL/TLSで通信してて素直には中身が見れないって話もあります。)その上で、Bitcasaのクライアントが発したようなクエリを探します。基本的には、bitcasa.comのドメインの名前引いてるのがすべてっぽくて、結果として、クライアントがDNSで名前を引いているのは以下のホスト名のようです。

  • ap1.api.bitcasa.com
  • us1.sync.bitcasa.com
  • dist.bitcasa.com
  • desktop.api.bitcasa.com

なんとなく法則が見えてきます。一つ一つ見ていきましょう。

ap1.api.bitcasa.comですが、api.bitcasa.comというホスト名も存在していて、こちらもずらーっとIPが返ってきます。そして、返ってきたIPを逆引きするとわかるのですが(というか、パケットキャプチャしてるとホスト名が逆引きされているのですぐ気づきますが)、Bitcasaは全面的にAWSを使っているようで、ap1.api.bitcasa.comで返ってくるIPはap-northeast-1のEC2のインスタンス達のようで、api.bitcasa.comで返ってくるIPアドレス達はus-west-1のEC2インスタンス達のようです。

us1.sync.bitcasa.comで返ってくるIPアドレスとsync.bitcasa.comで返ってくるIPアドレスは同一で、試しにap1.sync.bitcasa.comを引いてみると、こちらはap-northeast-1のアドレスではなく、sync.bitcasa.comのaliasで同一のIPアドレスが返ってきました。どうも、sync.bitcasa.comが担う役割の部分はus-westに集中しているようですね。(なんとなく、DBは集約されていてus-westに一括で保存されていそうですね、us-westのRDSかな。)

詰まるところ、ap1はap-northeast-1の略、us1(もしくは、省略した場合)はus-west-1の略、ということなのでしょうか。どうもそう考えて問題なさそうです。蛇足的ですが、www.bitcasa.comの名前をひいたときは、www.bitcasa.comはwww.geo.bitcasa.comのCNAMEになっており、その結果として、ap1-www.bitcasa.comのアドレスのIPが返ってくるような仕組みになっていました。おそらく、www.geo.bitcasa.comの返答はソースIPの地域を見て結果を変化させるDNSサーバなのでしょうね。たぶん、上のap1.api.bitcasa.comを使うかどうかあたりも同じような地域を判別するような仕組みが導入されているのでしょう。

次に、desktop.api.bitcasa.comですが、これはprod.api.bitcasa.comのaliasで、IPとしては、ap-northeast-1のec2のアドレスが1つだけ返ってきました。おそらく、これも地域によって返答が変わる系のDNSなのではないかと思います(Route53かな?)が、ap1.api.bitcasa.comとの役割の差が分かりませんね。基本的に、手元の3台くらいのマシンで試したところ、どれも同じIPアドレスが返ってくるようです。その後の通信を見ていると、アップロードとかはおそらくこのアドレス宛にSSL/TLSなTCP接続が張られて行われているようです。

最後に、dist.bitcasa.comですが、これはCloudFrontのアドレスが返ってくるようです。アプリのアップデートとか確認してるんですかね。きっとアプリにアップデートがあると、このホストからダウンロードしそうな気がします。これはおそらく今回の通信の振り分けには参加させなくてよさそう、という風にCloudFrontであることからとりあえず判断してしまいましょう。

ここまでをざっくりまとめると、

  • ap1.api.bitcasa.com, us1.api.bitcasa.com(=api.bitcasa.com), sync.api.bitcasa.com(=us1.sync.bitcasa.com, ap1.sync.bitcasa.com)で返ってくるIPアドレス
  • desktop.api.bitcasa.com(=pd.bitcasa.com)で返ってくるIPアドレス
  • my.bitcasa.com 上には出てきませんが、ブラウザでログインしたときにファイル一覧とか見れるページのホスト(ほぼテスト用です。)

という3種のIPアドレス達をVyattaでかもめインターネット側の経路に流すようにルーティングを設定してやると、Bitcasaの通信だけをかもめインターネット経由の経路に変えることができるような気がしてきました。

Vyattaのルーティング設定する

というわで、この情報をもとにVyattaでPPPoEの設定とNATルールを追加して対処を行います。

PPPoEのほうは、0がIIJmio,1がかもめインターネットとして、一応、注意点はdefault-routeの設定の有無です、IIJmio側をauto,かもめインターネット側をnoneとしておいて、デフォルトゲートウェイはIIJmio側に自動で向けさせます。

pppoe 0 {
    default-route auto
    mtu 1454
    name-server none
    password xxxxxxx
    user-id xxxxxxxx@iij.ad.jp
}
pppoe 1 {
    default-route none
    mtu 1454
    name-server none
    password xxxxxxxx
    user-id xxxxxxxx@kamome.or.jp
}

これで、commit&saveして、とりあえず、pppoeを2本張ります。disconnect&connectなり、clear interdace connection pppoe0,clear interdace connection pppoe1みたいなことをして、pppoeが正しく接続できて、グローバルIPがとれてることを確認します。ついでに、show ip routeして、pppoe1の先のnetxt-hopのIPアドレスをメモっておきます。

この後、SNATの設定とルーティングの設定を足していくんですが、上記のap1.api.bitcasa.comなど複数のIPアドレスを足すと、軽く30を超えます。そして、AWSを使っているせいもあって、Rangeで指定できるようにIPが並んでるわけでもありません。つまり、ルーティングやSNATで設定する場合には、/32で個別に1つ1つ設定するしかなさそうです(たぶん)。 はじめ、SNATでdestinationを指定しつつ、ルーティングの設定を足さないといけないことに気づかず、スタティックルーティングだけ足して、あれーと一人で悩んでいました。んで、ふとSNATみたところ、outbound-interfaceってのがあることを思い出して、こっちもかー、と一人で結構いろいろ悩みました。 ってことで、まあそういう右往左往はさておいて、この設定で動くっぽいということがわかったので、IPごとにVyattaの設定を適当に生成するスクリプトをでっち上げます。

from logbook import Logger

log = Logger('main')

SNAT_RULE_START_ID = 1
BITCASA_ROUTES_IFNAME = 'pppoe1'
BITCASA_ROUTES_NEXTHOP = 'xxx.xxx.xxx.xxx'

BITCASA_HOSTS = ['www.bitcasa.com', 'my.bitcasa.com',
                 'ap1.api.bitcasa.com', 'us1.api.bitcasa.com',
                 'ap1.sync.bitcasa.com', 'us1.sync.bitcasa.com',
                 'desktop.api.bitcasa.com',]

import dns.resolver

bitcasa_ips = []
for h in BITCASA_HOSTS:
#    log.info('resolving {0}'.format(h))

    try:
        answers = dns.resolver.query(h, 'A')
        for a in answers:
            bitcasa_ips += [a.to_text(),]
    except dns.resolver.NXDOMAIN as e:
        log.warn('Cannot find hostname: {0}'.format(h))

snat_rule_num = SNAT_RULE_START_ID
from cStringIO import StringIO
vc_buf = StringIO()
for ip in list(set(bitcasa_ips)):

    # nat config
    vc_buf.write("delete nat source rule {snat_rid}\n".format(snat_rid=snat_rule_num))
    vc_buf.write("set nat source rule {snat_rid} destination address {dest_addr}\n".format(
                  snat_rid=snat_rule_num, dest_addr=ip))
    vc_buf.write("set nat source rule {snat_rid} outbound-interface {outbound_ifname}\n".format(
                  snat_rid=snat_rule_num, outbound_ifname=BITCASA_ROUTES_IFNAME))
    vc_buf.write("set nat source rule {snat_rid} translation address masquerade\n".format(
                  snat_rid=snat_rule_num))

    # route config
    vc_buf.write("set protocols static route {ip}/32 next-hop {next_hop}\n".format(
                  ip=ip, next_hop=BITCASA_ROUTES_NEXTHOP))

    snat_rule_num += 1

print vc_buf.getvalue()

DNSクエリを発行するために、dnspythonをつかっているので、pip install dnspythonは実行してパッケージ入れておく必要があります。

BITCASA_ROUTES_IFNAMEは、Bitcasaに接続する際に出ていきたいインターフェース名、BITCASA_ROUTES_NEXTHOPはそのインターフェースの先のIP指定します。さっきメモった通り、show ip routeで分かります。

どかーっと標準出力にVyattaのコマンドが吐かれます。

delete nat source rule 1
set nat source rule 1 destination address 176.34.32.173
set nat source rule 1 outbound-interface pppoe1
set nat source rule 1 translation address masquerade
set protocols static route 176.34.32.173/32 next-hop xxx.xxx.xxx.xxx
(以下、IPアドレスの数だけ続く...)

(なんだかいろいろ不格好ですが、ほんとにこれでいいんでしょうか...)という不安はまあものは試し的なノリで置いておきますが、、、、

んで、VyattaのコンソールにSSHかなんかで入って

$ configure
# cat > /tmp/bitcasa_config
(さっき生成された設定をペースト)
# . /tmp/bitcasa_config

とやると、設定が投入されます。ちなみにデフォルトだと、SNATのruleを1番からゴリゴリ消して書き換えるので、既存設定がある場合は、SNAT_RULE_START_IDを書き換える必要があります。IIJmio向けの常用向けのruleは100に設定してあります。

outbound-interface pppoe0
translation {
    address masquerade
}

というシンプルな感じで、アドレスもなにも指定しない形です。VyattaのNATの設定はシーケンシャルにID順に評価されるようなので、この設定はすべての設定の最後に書いておくのがたぶん無難です。

ここまでくれば一応設定は完了です。

適当にNAT化のホストで
$ curl https://my.bitcasa.com
として通信した後で、Vyatta上で、
$ show nat source statistics
で、該当ルールのpkts,bytesが増えていることを確認します。
もしくは、単純に、tracerouteで、
$ traceroute my.bitcasa.com
を実行して、IIJmioっぽくないことを確認します。

こういう感じで通信がちゃんと別経路で流れていることが確認できれば終了です。これで、BitcasaでアップロードしまくってIIJmioに怒られることはなくなりました。かもめインターネットに怒られる可能性は十二分にありますが。

とりあえず、この状態でアップロードをがしがしやろうとおもいます、怒られるまで。

今回の設定の問題はいくつかあって、

  • Bitcasaの各ホストが返してくるIPが変わったら設定も当然変える必要があるんだけど、定期的に監視するくらいしか方法がない
  • かもめインターネットとのPPPoEが切れて再接続すると、next-hopが変わってまったく通信できなくなる予感→これはBitcasaに繋がらなくなるのでたぶん分かるかな

くらいでしょうか。まあとりあえずこれで一旦使ってみる。

(おまけ)Bitcasaはアジア向けにAWSのtokyoリージョン使ってるのでいつのまにか速くなってるよ

ベータのときはそんなことなかったんだとおもうけど、今回いろいろ見てきたところ、アジア向けとして、BitcasaはTokyoリージョンを使うようになったらしく、最近、アップロード/ダウンロードはそれなりに速いです。アップロードは気がついたら、平均で5-10Mbit/secくらいは出ます。ダウンロードもシークとかはちょっと厳しいけど、普通に再生してて裏でダウンロードしてるのは気づかない程度に再生できたりします。

なんというか、すごく長くなった割に、いろいろ穴がある設定のままになってしまった。もうすこしまともに設定する方法はおいおい考えたいところ。

]]>
Mon, 03 Jun 2013 00:00:00 +0900
https://misc.mat2uken.net/blog/2013/06/03/aliexpress_qi_charge_pad.html https://misc.mat2uken.net/blog/2013/06/03/aliexpress_qi_charge_pad.html <![CDATA[Aliexpressで買ったQiの充電器が届いた]]> Aliexpressで買ったQiの充電器が届いた

Qi充電するためのiPhoneケース買った に続いて、今のところ、ドコモで以前もらったチャージャー1つしかなかったので、会社用にも1つ欲しいなぁと思っていたところで、Aliexpressで「qi charger」で検索したところ、これ を見つけて注文してました。

到着まではやっぱそれなりに時間がかかって、China Post Airmailで送ると10-20日くらいかかるのがアレですねー。今回は12日くらいかな。無事アカウントもゲットしたので、流通王で送ってくれよみたいな交渉を今後はできるときはやろうかなとか考えてます。Aliexpressだと厳しいかなー、Alibabaなら確実だけど。

ヤフオクで、2000-3000円くらいで買えるのは一応確認していたんだけど、どれもドコモのワイヤレスチャージャー01で12V入力なのと可動コイル方式で手元で使ってる分には結構認識に失敗して充電がはじまらないのもあって(といいつつ、位置の問題らしく最近は慣れた)、可動タイプでないやつで、5V入力で動いて、それも1.5A供給できればUSBポートからでも電源を供給出来ることに惹かれてこっちにしてみた。

とりあえず、とどいたパッケージはこんな感じ。

../../../_images/qi_chargepad_package_01_thumb.jpg

いつものながらの黄色テープでぐるぐる巻きにされた通称チャイナ梱包。

いつも通り適当にカッターでテープを切り裂きながら箱を開けます。

../../../_images/qi_chargepad_package_02_thumb.jpg

Qi規格にちゃんと対応してるぜ!的な主張を確認。

../../../_images/qi_chargepad_intpackage_01_thumb.jpg

パッケージは店売りでも通用しそうなレベルのいい感じ。$25するだけある。先日の扇風機のパッケージとかよりは全然良いね。

../../../_images/qi_chargepad_intpackage_02_thumb.jpg

本体が見える感じで、いかにもヨドバシとかでありそうな。

../../../_images/qi_chargepad_intpackage_03_thumb.jpg

とおもってたけど、内部のパッケージは破れてたり。まあこれくらいどうでもいいけど、やっぱそんなもんだよね。

../../../_images/qi_chargepad_intpackage_04_thumb.jpg

本体はこんな感じで収納。この下にマニュアルとACアダプタ、ケーブルなどが入っています。

../../../_images/qi_chargepad_intpackage_05_thumb.jpg

マニュアルはわりと普通の紙に印刷されてて綺麗。

../../../_images/qi_chargepad_intpackage_06_thumb.jpg

ACアダプタとそれに接続するUSBケーブル。一応、色は白で統一されてる。出力は5V1.5A。

../../../_images/qi_chargepad_intpackage_07_thumb.jpg

USBケーブルが入ってる袋。これもチャイナ風味があって、触ると分かるんだけど、同じ感じの日本製の製品に比べて妙に薄いんですよ、たぶんこれが中国の標準なんだと思う。別にだからどうしたって感じですが。

という感じで、パッケージから本体、同梱品をざっくり紹介。

で、実際の使用感としては、所詮、充電器なのでシンプルで、ACアダプタつなぐと、Powerのところが赤く光って、充電はじまるとChargingのところが緑に光る。FULLっていうLEDもあるんだけど、どういうタイミングで光るのかは謎。 可動コイルのタイプじゃないんで、置く位置をミスりさえしなければ、充電の開始は大分早い印象。Maxell系もきっと同じ感じなんだろうな。適当に2A給電できるUSBポートにつないでも問題なく動きます。

充電中の姿はこんな感じ。

../../../_images/qi_chargepad_charging_01_thumb.jpg

まあ大体中心点があってれば充電されるので、それほど位置はシビアではなさそう。

../../../_images/qi_chargepad_charging_02_thumb.jpg

LEDはこんな雰囲気。中国語も書かれてるけど、下に英語もあるのでまったく困らない。

という感じで、会社でも楽に充電できるようになって、iPhoneの充電に関しては、すごいいい感じになった。是非、iPhoneは次はQi充電対応してほしいなぁ、とかおもったけど、まあ、あり得ないですよね。

という感じで、Aliexpressで買い物するのは楽しいよ、という話(違うけど)。 とおもったら、ヤフオクで、Maxellの2つ充電タイプ が普通に1980円で出てて、ぐぬぬってなってる(送料とか考えると、Aliexpressのが安いんだけど。)

]]>
Mon, 03 Jun 2013 00:00:00 +0900
https://misc.mat2uken.net/blog/2013/06/03/vyatta_ssh_use_public_key.html https://misc.mat2uken.net/blog/2013/06/03/vyatta_ssh_use_public_key.html <![CDATA[VyattaのSSHサーバで公開鍵でログインする]]> VyattaのSSHサーバで公開鍵でログインする

loadkeyコマンドの存在に気づけば一発(マニュアル読み漁って気づいた)。いや、なんとなく、set service ssh以下に書くのかなぁとか思うじゃないですか。

# loadkey xxxxx http://misc.mat2uken.net/mat2uken_id_rsa.pub

xxxxxのところはユーザ名、んで、公開鍵としては、ファイルとかHTTPやFTPのURLが指定できるようなので、自分の公開鍵ファイルをS3にアップロードしてそこからロードした。

その上で、パスワード認証はちゃんと無効にしておきましょう。

# set service ssh disable-password-authentication
# commit
# save

これで、ログイン時にパスワード入れなくていいし楽だよね。(ssh-agentなりがクライアント側で立ち上がってる前提だけど)

(追記 2013/06/03) 設定ファイル直接変更でもたぶんいける

その後、設定ファイルみてたら、system loginの下に設定が追加されているのを発見したので、

# set system login user xxx authentication public-keys user@hostname key (公開鍵 ssh-rsa or ssh-dsaとuser@hostnameを除く)
# set system login user xxx authentication public-keys type ssh-rsa

とやってもいけそう。

]]>
Mon, 03 Jun 2013 00:00:00 +0900
https://misc.mat2uken.net/blog/2013/05/31/square_reader.html https://misc.mat2uken.net/blog/2013/05/31/square_reader.html <![CDATA[Squareのリーダーが届いた]]> Squareのリーダーが届いた

とりあえず、日本上陸のニュースの時に登録して申し込んでおいたら、5日くらいで銀行口座が承認されて、その3日後くらいにはリーダーが届きました。なかなか素早い対応なんではないでしょうか。ニュース直後だったんで、どう考えても混み合ってただろうし。

銀行口座の登録

三井住友の口座を登録登録すれば翌営業日に口座にお金が振り込まれるとかメリットがあるみたいだけど、まあ本格的に使うつもりでもなし、とりあえずお試しにということなので、いつも使っている三菱東京UFJ銀行の口座を登録しました。すると、2-3日で1円が口座に振り込まれてる形跡があって、その翌日に銀行口座の承認が下りました。なんか口座の正当性みたいなのをチェックしてるんですかね。わざわざ振り込むことでどういう詳細情報が知れるのかっていうのはちょっと興味あるけど、だれか教えてくれないかな。

リーダー届いた

んで、その後、リーダーが届いたので、こっちも使ってみた。実は会社にはすでに何個もSquareのリーダーがあって、分解されているものもあったりしたので、その写真もついでにこっそり載せてみます。

../../../_images/square_package_01_thumb.jpg

外箱もアメリカで売ってたのとは違う形で、何故か「Square リーダー」という無駄に日本語化されているんじゃないか感

../../../_images/square_package_02_thumb.jpg

開けた中の説明もちゃんと日本語化されてる。でも、外箱も含め、アメリカ版よりちょっとコストダウンされてるような気も。

../../../_images/square_body_01_thumb.jpg

本体はこんな感じで収納されてる。

../../../_images/square_and_iphone_01_thumb.jpg

iPhoneに装着するとこんな感じ。コネクタのところのモールドも純正品と同じようにちゃんと細めになってる。 Qiのケースで刺さりにくくなっててもちゃんと刺さった。よかったよかった。

../../../_images/square_and_iphone_02_thumb.jpg

アプリ使ってる時はこんな感じ。

実際、アプリ起動して、会社の人に500円決済させてもらったけど、リーダー通すところが結構認識させるのが意外に難しい感じ。小さくて、イヤホンジャックに刺さってるだけなのでどうしても安定しないからですかねぇ。カードを素早く通してください、と言われて5回くらいやってるうちに認識しました。その後の処理はサインするのにちょっと戸惑うくらいで結構処理自体は早め。

実際これで、割り勘とかやるかって言われると、手数料3.2%払ってまでかなぁという感じで、個人的には、友達になんか自分のものを売るときに使うくらいかなー。しかしまあ、持ってて損はないと思うので、なにかの機会には一度使ってみたいなぁ。

分解写真のおまけ

分解した写真を2枚ほど。

../../../_images/square_teardown_01_thumb.jpg

なんとボタン電池入ってました。

../../../_images/square_teardown_02_thumb.jpg

結構、いろいろ部品が載った基板が入ってます。

とりあえず、電池が入ってるのが驚きですねー。充電してる気配はまったくないので、いつか電池切れて読めなくなるんでしょう、きっと。イヤフォンジャック側からの微妙な電力では動かない程度になんかやってるってことなんですかねー。

]]>
Fri, 31 May 2013 00:00:00 +0900
https://misc.mat2uken.net/blog/2013/05/31/setting_ogp.html https://misc.mat2uken.net/blog/2013/05/31/setting_ogp.html <![CDATA[このブログにOGPを設定した]]> このブログにOGPを設定した

そういえば、ということでOGPを設定した。

Tinkererで、すでにカスタムしたテーマをつかっているので、_themes以下にあるpage.htmlに以下のようなのを追加した。

{%- block extrahead -%}
<meta property="og:title" content="{{ shorttitle }}" />
<meta property="og:description" content="{{ title|striptags|e }}" />
<meta property="og:url" content="http://misc.mat2uken.net/blog/{{ pagename }}{{ file_suffix }}" />
<meta property="og:image" content="http://misc.mat2uken.net/img/gfbl_logo.png" />
{% endblock -%}

カスタムテーマはboilerplateを継承してるので、そのlayout.htmlを見て、extraheadのblockに足せばいけるやろ、ということでそこに追加。 og:urlのところだけなんかすごい不格好で、Tinkererというか、Sphinxが提供しているJinja2のテンプレートで使えそうな変数とかヘルパー関数をみてみたんだけど、自分のURLをさくっと取る方法がよくわからなくて、pagenameとfile_suffixをつなげて、その前のURLの部分はベタ打ちという形にした。なんかコレ、もうすこしまともな方法ありそうなんだけどよくわからんかった。

OGPの確認方法

FacebookのOGP Debugger を使えば、さっくり確認できてオススメ。というか、これで読めれば実質、Facebookさんのために設定してるOGPなので安心ということで。

エラーメッセージがたまにわかりにくいことあるけど、結構普通に使いやすいですよね。

ロゴ

これを機になんか適当にロゴつくってみた。

../../../_images/small_logo_sample_for_ogp.jpg

すごいやっつけだけど、どこか遠くへ行きたい感を出す感じで適当に作ってみた。

とりあえず、ヘッダとかにもこの画像使おうかなぁ。

]]>
Fri, 31 May 2013 00:00:00 +0900
https://misc.mat2uken.net/blog/2013/05/30/senpuki_from_aliexpress.html https://misc.mat2uken.net/blog/2013/05/30/senpuki_from_aliexpress.html <![CDATA[去年から恒例となりつつあるAliexpressで卓上用USB扇風機買った]]> 去年から恒例となりつつあるAliexpressで卓上用USB扇風機買った

大体、夏が近づいてくると、会社の近くの秋葉原のお店では、2-3年前から大量のUSB扇風機が売られるようになってて、最初はそのへんから適当に扇風機買ってたんですよね。でも、去年、ふとAliexpress見ると、その店舗たちで売られてるUSB扇風機が山のように売られてて、Free Shippingのやつであれば値段も700-100円くらいで大差ないし、店舗にはなさそうな大好物のキワモノ系がいっぱいあることに気づきました。

ということで、去年からはAliexpressで秋葉原の店舗でも売られてなさそうな、平たく言ってしまえば、胡散臭いやつを試しに買ってみることにしています。

まずは、去年かったやつを紹介。これは、ダイソンの羽なし扇風機が流行ってたんで、それのパチもんの卓上羽なし扇風機。これがまたすごいクオリティで、ものすごいモーター音がするわ、ちゃんと5Vでまともに1A以上安定して供給できる電源につないでも、何故か不定期に回転数が変わるというステキ仕様。とはいえ、$10くらいのもんだしね、ということで、割と楽しめました。

../../../_images/senpuki_2012_01_thumb.jpg

こんな感じのやつ、いかにもチープって感じも逆に趣深い

../../../_images/senpuki_2012_02_thumb.jpg

設置としては、こういう感じで天井にくっつけてたんだけど、両面テープだと強度がたりなくて朝来たらよく落ちてた

で、次が今年買ったやつ。羽なしの他のモデルっぽいのも見つけたりはしたんだけど、なんか二番煎じっぽかったので、今度はLOFTとかに置いてそうに一見見えるんだけど、実物見ると極めてパチもんっぽいってのを目指して これ にしてみた。

んで、実物はコチラ。

../../../_images/senpuki_2013_01_thumb.jpg

意外にまともで、写真だとそのへんに売ってそうに見えるレベル

ただ、想像以上に風量少ないです。まあ、そういう意味では相変わらずのクオリティ。細部の出来もあまりよくねーな、とかいろいろ感想はあるけど、$7ですからねーという一言でまあ納得できるレベルではある。たぶん、まともな場所に置けば、Aliexpressで買ったとバレないかも、くらいではある。

../../../_images/senpuki_2013_02_thumb.jpg

ディスプレイの上に置いてて、LED止めてる金具で微妙なバランスで支えられてます。この位置においても、顔に感じる風はまさに微風。

とりあえず、最終的には、LED固定してる金具と同じようなので、天井にねじ止めしちゃおうかと思っています。今年の扇風機はこれで乗り切る予定。

おまけ

ちなみに、Aliexpress, Alibabaで商品を購入すると、みんな同じ黄色いテープでぐるぐる巻きにした梱包でやってきます。会社では、チャイナ梱包という名称で親しまれています。

../../../_images/china_konpo_01_thumb.jpg

こういう感じで、謎の黄色いテープでぐるぐる巻きになっています。

一応、船便とか航空便で送られると、気圧の影響やらで結露しやすいので防水のためだとかいろいろあるんでしょうが、なんというか、妙にこうチープ感が漂いますよね。あとね、大抵、この梱包開けたときに独特の匂いがするんですよ、日本ではまず嗅ぐことのないチャイナ臭が。一度、買ってその匂い嗅ぐと確実に共感が生まれます。

../../../_images/china_konpo_02_thumb.jpg

こういう感じで、黄色のテープでぐるぐる巻きにされた段ボール箱のなかに、化粧箱が実際にはいってて、本体が入ってるという感じ。

Aliexpressで買って、深圳あたりからChina post Airmailで送ってもらうと、漏れなくこの梱包になってやってくるので、とりあえず安いのでいいので、是非なんか買ってみるのおすすめ。たとえば、ノベルティ なんかはなかなかキワモノからふつーに便利なものまで揃ってて余裕があれば全部買ってみたいくらいなので、誰か代わりに買ってレビューして欲しいw

]]>
Thu, 30 May 2013 00:00:00 +0900
https://misc.mat2uken.net/blog/2013/05/29/vyatta_traffic_graph_by_munin_to_s3.html https://misc.mat2uken.net/blog/2013/05/29/vyatta_traffic_graph_by_munin_to_s3.html <![CDATA[自宅のVyattaのトラフィックをグラフ化してモニターする]]> 自宅のVyattaのトラフィックをグラフ化してモニターする

Bitcasaを使い始めて調子に乗ってアップロードしまくっていたところ、自宅で使っているIIJ mioからお前送出トラフィックが多すぎて迷惑だから、このままだと回線止めるぞと言われてしまいました。そんなこともあって、最近はかなりびびっていて、ちょっとずつしかアップロードしないようにとか窮屈な生活を送っています。IIJ mioは連絡によると、制限値は15GB/dayだそうなので、大体それくらいになるようにびくびくしながらアップロードしている毎日です。おそらくは15GB/dayを1日超えただけで警告が来るわけじゃなくて、1週間くらいの値を見てるみたいで、警告には7日分の送出トラフィックの値が記載されていました。

とはいえ、今日はまだアップロードしても平気なんだっけ、とか不安になることもあるし、前日分だけをガッツリ見るわけでもないなら、日々アップロード量を確認しながらアップロードすればまあ大丈夫かなぁなんてことを思っていて、自宅のサーバじゃない機器たちはPPPoEやらNATやらを一手に引き受けてるVyattaが動いてるノートPCを経由するので、ここのトラフィックをちゃんとグラフ化して監視することにしました。

とりあえず、別にアラートをどっかに投げたりも必要なくて監視というほどでもないので、VyattaのSNMPから取れる値をmuninでグラフを含んだHTMLにした上で、S3にアップロードするという形で、あとはそのURLを日々ブラウザで確認できるようにという構成にしました。下記、備忘録的メモとして作業手順をざっとおさらい。

VyattaのSNMPのコミュニティ名を設定

「Vyatta SNMP」でぐぐるといういつもの行為から入ったところ、そもそもSNMPは動いているようなので、単純にコミュニティ名だけ設定すればよさそう。

というわけで、

$ configure
# set service snmp community home-env
# commit
# save
# exit

という感じで、コミュニティ名だけ設定します。

んで、とりあえず、snmpwalkでちゃんと値が取れるかどうか確認だけします。

$ snmpwalk -v2c -c home-env home-vyatta

で、ずらーといろんな値がちゃんととれればOK。(home-vyattaはVyattaが実際動いているホスト名です。内部でもDNSが動いてるのでこれで名前が引けます。)

muninのセットアップ

自宅でほんとはNAS用なんだけど暇してるGentooが入ったマシン(正確にはVMだけど)にmuninを入れます。munin-nodeになるのもこいつで、このホストからvyattaのSNMPの値を定期的に取得します。

# emerge -av net-analyzer/munin
# emerge --config net-analyzer/munin

というかんじで、–configのほうを実行すると、crontabの設定が入るみたい。

まずはmunin-nodeの設定から、今回はSNMPで取得したいので以下のような形で

# munin-node-configure --snmp home-vyatta --snmpcommunity home-env --shell| sh

とやって、各種pluginの設定をやってもらいます。 とりあえず、もっと細かくいろいろやってもいいのかもしれないけど、とりあえずは、このplugin周りの設定はそのまま利用します。

その後、/etc/munin/munin-node.confを設定します。特に変更する箇所は普通はないかも。ログファイルの場所とhost_nameだけ今回は変更しました。重要なのはというか、設定が必要なのは、Gentooであれば、/etc/munin/plugin-conf.d/munin-nodeのほうで、ホストの設定をします。

[smnp_home-vyatta_*]
    env.community home-env
    env.version 2

という感じで、コミュニティ名とバージョンを設定します。versionが2で正しいのかは実は自信がないんですが、snmpwalkで2でも動くし、実際、そのままでも動いてるのでこれでいいんじゃないかな、という適当な感じ。

最後に、実際、munin-nodeからデータを集めて、HTML化するmunin-cronが走るのも同一のホストなので、今回は/etc/munin/munin.confのほうも設定します。 設定としては、上記と一緒で、SNMPで取ってくる分のホストを追記すればいいんですが、私の環境ではついでに、dbdir,htmldir,logdirを変更しています。(/varにマウントしているディスクが4GBしかないのであまり使いたくないのです。)

[home-vyatta]
    address 127.0.0.1
    use_node_name no

こんな感じで追加します。ここでよくハマるというか、今回もやったのが、この場合、addressはmunin-nodeが動いているアドレスなので、127.0.0.1じゃないとアカンことですね。ちなみに、今回はさらにハマっていて、この設定追加する前に、とりあえず、munin-cronを動かしてみたら、

not a reference at /usr/lib/perl5/site_perl/5.8.8/Munin/Master/Utils.pm

という感じのエラーメッセージとともにエラーになって、あれーとおもって、各所にprintいれて、munin-htmlが動いてないのがまずそう→あれ、なんか$dataが空だな、うーん、なんでだろう、という感じで1日悩んでいて、次の日にまたやってみるかーとおもって触っていて、node treeの設定が空なのが原因であることをやっと突き止めて、あー、先に設定が必要だったのね、みたいな切ないオチを体験もしました。

素直に検索すれば、コレ とかに、”if you dont have collected any data for any node. So the directory usually created in /var/opt/munin is empty.”とかそれっぽいことが書かれたりしてたんですが、まあソースさらっと読めばわかるやろーくらいであまり真剣に検索しなかった過去の自分を後ろから刺したい。

まあ、同時に、そういうときのエラーはもう少し分かりやすくメッセージ出して欲しいッスと思わなくもないんですけどね。

ここまでくれば、

$ sudo -u munin /usr/bin/munin-cron

とかやれば、htmldirに指定したディレクトリに各種HTMLファイルが生成されているはず。

S3にHTML一式を定期的にアップロードする

ここまで来ればあとはこのHTMLを見れる環境にしてあげるだけです。ローカルにApacheやらnginx入れてもいいんですが、munin入れたホストが外部からアクセスするのがちょっとめんどくさい子というのと、まあなんやかんや、自宅サーバってよく間違ってプロセス落としてたりするので、安心できるところにアップロードしとくのがいいかなーとおもって、S3にファイルを置いておくことにしました。

手順というか、方法は簡単で、s3cmdを使ってsyncします。s3cmd –configureをつかって設定ファイルをよしなに生成しておいて、それをmuninユーザから読める位置に置いておきます。んで、下記のようなシェルスクリプトを作ります。 (前提として、S3 websiteが有効なBucketがすでにあってそれを指定しているという前提です。下記だと、xxxxx.mat2uken.netですね。)

#!/bin/bash

/usr/bin/s3cmd -P -c /data/munin/scripts/s3cfg sync /data/munin/html/* s3://xxxxxx.mat2uken.net/ninmu-html/ 2>&1 | logger -t munin-upload -p local0.info

これをmunin-uploadとか名前つけて適当な場所に置いておきます。

最後に、muninに設定されたcrontabをちょっと改変します。

# This runs the munin task every 5 minutes.
*/5   * * * *         /usr/bin/munin-cron

# This runs the munin task every 5 minutes.
*/5   * * * *         /usr/bin/munin-cron && /data/munin/scripts/munin-upload

みたいな感じに。 これで、5分ごとの生成が終わったあとに、s3に更新されたファイルをアップロードします。

という感じで

Vyattaのトラフィック情報をmuninでグラフ化してS3にアップロードするまでの手順をざっとメモ化しました。

これで、以下のようなグラフが見れるようになりました。

../../../_images/munin_traffic_graph_thumb.jpg

まださっき設定したばかりなのでほぼ空っぽのグラフ

これで適宜モニターして、あ、やべーな思ったより使ってるなというのにたぶん気づけるようになったかもしれません。15GB超えたらアラートメールかSNSで通知みたいなのもやってもいいんだけど、実はこれと並行して、あまり制限がないらしいかもめインターネットに申し込んでしまったので、Bitcasa向けの通信は、今後はかもめインターネットに切り替えるつもり、というどんでん返しがあったりするのですが、まあトラフィックを可視化できたので、それはそれできっと使い出があるだろうということでよしとしています。

次はVyattaでPPPoE2本張って特定の宛先だけ、こっちのPPPoE使うみたいな設定例も一応書いておきたいところ。ルーティング追加するだけだけど。(Bitcasaのアプリの通信先特定するパケットキャプチャとかのほうがめんどくさそう。)

]]>
Wed, 29 May 2013 00:00:00 +0900
https://misc.mat2uken.net/blog/2013/05/28/7port_usb_charger.html https://misc.mat2uken.net/blog/2013/05/28/7port_usb_charger.html <![CDATA[上海問屋の7ポートUSBチャージャーを買った]]> 上海問屋の7ポートUSBチャージャーを買った

家の作業机ではサンワダイレクトの液晶モニター台にある電源タップから適当にUSB-ACアダプタつないで充電とかしてたんだけど、なんだかんだで、BluetoothスピーカーやらiPad, iPhone, Kobo, UN-W700とかで充電するポート足りないなぁと思いつつ、まあ適当に差し替えて使ってたんだけど、上海問屋で7ポートのUSBチャージャーで、5ポートは1A、2ポートは2A供給できる割とよさげなやつが出たのでこれを気に充電関係をこれに集約させようということで、上海問屋の7ポートUSBチャージャー を買ってみた。

../../../_images/7port_usb_charger_package_thumb.jpg

パッケージはもう最近お決まりのApple的な箱... こういう製品でこういうパッケージいらんのではと思うんだけど。 メーカーはBROWAYというところらしい。箱が潰れているのはご愛敬。

とりあえず、開封すると、本体はこんな感じ。この下に、マニュアル、保証書、ACアダプタが入ってた。

../../../_images/7port_usb_charge_main_unit_thumb.jpg

本体自体は割とコンパクト、クリアな塗装とかも特に違和感ないレベルで、表面の仕上げはそこそこクオリティ高いのでは。

../../../_images/7port_usb_charger_ac_adapter_thumb.jpg

ACアダプタはやはりかなりでかいもので、12V5Aで60Wまでいけるやつ。USBからだけで45Wくらい出力するんだからこれくらいはいるか。

../../../_images/7port_usb_charger_manual_thumb.jpg

マニュアルと保証書は、割と適当に折られてクシャッとして入ってた。パッケージをApple的にするならこういうところも気をつかって欲しいね。

../../../_images/7port_usb_charger_manual2_thumb.jpg

基本的に、マニュアルとかも全部英語。まあマニュアルが欲しいような製品ではないのでどうでもいいや。 しかし、このメーカー製の保証書も入れっぱなしなところはいろいろと潔い。

../../../_images/7port_usb_charger_charging_thumb.jpg

実際に、これくらいつないで充電しても特に問題なさげ。

これで、作業机周りがすこしだけスッキリするといいなーということで、帰ったら実際に設置してみよう。とりあえず、Hub名人とかも長年つかっている身としては、できればAC-DC部分は内蔵してくれるとすごく便利というか、そうするついでに本体をガッツリ重くしてくれると、7本とかケーブルささっても安定するので凄くありがたいんだけど、PSEとかCEとかFCCとかを本体ごと全部とるのは大変だし、ACアダプタならアリものを使えばいいしってことなんですかねー。あと重いのは必ずしも万人向けではないか。。。

とまあ、もうちょいここがーみたいなのがないわけではないけれど、自分的には7ポートで全部が1A以上供給できるってのは昨今のむやみやたらと電流を喰うデバイスが増えてきているのでかなりありがたい製品。

]]>
Tue, 28 May 2013 00:00:00 +0900
https://misc.mat2uken.net/blog/2013/05/27/elb_and_nginx_400_badrequest.html https://misc.mat2uken.net/blog/2013/05/27/elb_and_nginx_400_badrequest.html <![CDATA[ELBの配下にいるnginxでアクセスログに400が出る問題が1.3.15で解消されてた]]> ELBの配下にいるnginxでアクセスログに400が出る問題が1.3.15で解消されてた

ELBに限らずということになるとおもうんだけど、ロードバランスの配下にいたりすると、ヘルスチェックのためにポートが開いてるかどうかを確認するために、TCPで接続→特になにもデータ送らず→切断っていうのを繰り返されることってありますよね。

そうすると、nginx 1.3.15までは、それが全部400 Bad Requestだということにされて、アクセスログに大量にゴミなログが残る仕様でこれうざいなーと思ってた。設定とかで回避できるわけでもなさそうだったので、とりあえず、ログ処理側でさくっと除外するようにしてたんだけど、1.4.0が出たっていうときに、 CHANGES 確認してたら、1.3.15以降であればこのアクセスログ残らなくなって居るらしいということに気づいた。

*) Change: opening and closing a connection without sending any data in
     it is no longer logged to access_log with error code 400.

というわけで、さっくり1.4.1にnginxを更新して入れ替えた。とりあえず、ELBからのTCP接続で出る無駄ログが消えてくれて大変スッキリ。特に実害はなかったものの、こういううざいなーコレ系の現象が解消されると、気分いいですね、というの話。

]]>
Mon, 27 May 2013 00:00:00 +0900
https://misc.mat2uken.net/blog/2013/05/24/iphone4s_qi_charge.html https://misc.mat2uken.net/blog/2013/05/24/iphone4s_qi_charge.html <![CDATA[iPhone4Sの充電をQiにしてみた]]> iPhone4Sの充電をQiにしてみた

割と会社の机の上がカオスで、iPhone充電しようと思ってもケーブルUSB挿すのもちょっとめんどくさいし、ケーブルが絡まりまくって大変なことになるので、心機一転、iPhoneにQi充電できるようになるカバーつけてQiで充電するように変えた。ということを考えていて、AliexpressとかでQiの充電ケースを探したりしてたら、サンワサプライのやつが アウトレット だけど、880円で売ってたので、これを即決で買ってみた。

iPhone4S_Qi_Case

割とゴツイけど、まあ許せるレベル。

チャージャーは、ちょっと前に嫁さんが買ったドコモのSHARPのAndroidケータイに付属してきたワイヤレスチャージャー01を持ってたので、これを会社に持ってきた。とはいえ、このケース、装着しちゃうと、Dockコネクターを潰してしまうという割り切り仕様なので、このままだと、チャージャー(トランスミッターという呼称が正しいんでしょうか。)がある会社でしか充電できなくなっちゃう、という切ない状態。

というわけで、チャージャーを追加で購入しようと思って探したんだけど、ヤフオク中古なら2000円以下のもなくはないみたいなんだけど、振込手数料やら、送料やらを考えると、2500-3000円くらいはかかりそう。

そこで、Aliexpressの出番ですよ。適当に検索するだけで、$25くらいでいろいろ売ってるみたい。ということで、チャージャーはAliexpressで注文してみた。具体的に、注文したのは、 具体的には、Qi Wireless charger transmitter module pad with charger and usb cable にした。円安もあってあまり安い感じはないけれど、これはチャージャーへの給電がUSBコネクタなものからでも給電できるケーブルがついてきてて、5Vで給電できるのでこれにしてみた。一応、PSE的な話もあるので、ACアダプタは付属のは使わない方向にしようかなーと思ってます。

全体的な使用感としては、まだ2日しか使っていないけれど、かなり快適です。とりあえず、適当に置いておけば充電されるので、行動が習慣化さえされれば、充電忘れが激減しそう、という感触。ケース側が結構ゴツイのだけが今のところ最大の難点。

iPhone4S_Qi_Charge

  充電されている様子。意外と充電早い。このケース買うときは意識してなかったけど、1Aまで受電できて急速充電できてるっぽい。

Qi対応製品はほかにも、Qiなモバイルバッテリー QE-PL201 も愛用しているので、充電用のパッドというか、チャージャーを充実させていきたいところ。もう少し安くならんかなー。ナナメ置きできる こういう やつが2000円切るくらいで買える世の中になって欲しいなー。

]]>
Fri, 24 May 2013 00:00:00 +0900
https://misc.mat2uken.net/blog/2013/05/23/looking_nice_stormssh.html https://misc.mat2uken.net/blog/2013/05/23/looking_nice_stormssh.html <![CDATA[stormsshがいい感じ]]> stormsshがいい感じ

.ssh/configはどうしても職業柄ものすごい長くなってて、割とカオスになってたんだけど、 ふとみつけたstomsshという.ssh/configの管理ツールがシンプルでいい感じ。

READMEに大体かかれている通りなので、こっち の本家のgithubのページ見ればいいと思うけど、とりあえずlistとかが見やすいだけでも手元で使える。 でも、本命はfabricとかで今、configを各ホストに配ってたりするんだけど、こっち使って管理するようなのに買えようかな。各ホストごとにファイル管理してて今すごい微妙なんですよね。

とりあえず、ざっと見て一点、不満があって、ProxyCommandに対応してないのが切ない。これもlistとかで表示してほしいなぁ。

]]>
Thu, 23 May 2013 00:00:00 +0900
https://misc.mat2uken.net/blog/2013/05/21/boto_config_load.html https://misc.mat2uken.net/blog/2013/05/21/boto_config_load.html <![CDATA[botoが読む設定ファイル]]> botoが読む設定ファイル

冒頭で先に結論書くと、botoが読み込む設定ファイルとして、boto.pyami.Configにpathという引数で渡せば基本的にそれが最も優先してロードされると思ってたら、それよりもAWS_CREDENTIAL_FILEという環境変数がさらに優先されるんだったという話。

で、実際の動作を振り返ると、boto/pyami/config.pyをサクッと見たレベルで、まずは、モジュールのロード時に下記の動作をして、BotoConfigLocationsってのが作られる

  • この解説 の通り、基本的には、まず、/etc/boto.cfg, ~/.botoをデフォルト設定ファイルとして読み込んでいる
  • 次は、BOTO_CONFIG, BOTO_PATHという環境変数を参照していて、ここに設定されたファイルを読んでいる

んで、Configクラスの初期化時に下記のように動作するっぽい。

  • do_loadがTrueで、且つ、path or fpが渡されれば、BotoConfigLocationsより優先してロードされる
  • が、そのあと、環境変数にAWS_CREDENTIAL_FILEが定義されていれば、そっちをロードする

罠っぽいのは、path or fpが引数で渡されていたとしても、AWS_CREDENTIAL_FILEが定義されている場合の処理は一番最後にdo_loadがTrueでさえあれば常に実行されてしまうので、path, fpを渡しても環境変数のAWS_CREDENTIAL_FILEの定義が優先されるとこ。

いや、ソース嫁以外のなにものでもないんですけど、これで1時間くらいハマった。。。なにはともあれ、path渡しとけばそれが優先されるかなーとなんとなく思ってたら注意。

]]>
Tue, 21 May 2013 00:00:00 +0900
https://misc.mat2uken.net/blog/2013/05/19/twisted_lose_or_abort_connection.html https://misc.mat2uken.net/blog/2013/05/19/twisted_lose_or_abort_connection.html <![CDATA[TwistedのabortConnection]]> TwistedのabortConnection

TwistedでTCPサーバを書いていて、loseConnectionだと実は切断できないケースがたぶんあるような気がする、と思ってドキュメントをよんでいてabortConnectionを発見した。

abortConnectionとloseConnectionの違いは、 Writing Servers に説明があって、

In the code above, loseConnection is called immediately after writing to the transport. The loseConnection call will close the connection only when all the data has been written by Twisted out to the operating system, so it is safe to use in this case without worrying about transport writes being lost. If a producer is being used with the transport, loseConnection will only close the connection once the producer is unregistered.
In some cases, waiting until all the data is written out is not what we want. Due to network failures, or bugs or maliciousness in the other side of the connection, data written to the transport may not be deliverable, and so even though loseConnection was called the connection will not be lost. In these cases, abortConnection can be used: it closes the connection immediately, regardless of buffered data that is still unwritten in the transport, or producers that are still registered. Note that abortConnection is only available in Twisted 11.1 and newer.

となっている。たぶん、Due to network failuresのケースに該当してるんだとおもうんだけど、TCP的にPUSHがおくられているのに、ACKが来ないケースが大半で、まあ、要は相手はもういないんだろう、というのがパケットキャプチャした結果で、このときに、loseConnectionだと結局TCPの再送タイマで再送が失敗するまでコネクションが切断されないということになるっぽい?というわけで、こういうケースの場合には、abortConnectionを呼ぶのがよい?ということなんだろうか。

ただ、問題というか、自分の中の謎は2つ残っていて、なんでこういうTCP接続が残ったままのつもりになっているのかというのと、ていうか、loseConnectionを呼ぶべきか、abortConnectionを呼ぶべきかってどうやって判断すればいいの?というあたり。

今回のサーバは、相手は起動していてがんばって働いている間は、ずっとTCPを維持し続けるという仕様で、且つ、最低でも15秒に一回はサーバにデータが送信されるはず、というサーバで、でも実際に運用してみると、どうもTCPは維持されているつもりなのに、かなりの時間データがきていなくて、実際なにかサーバ側からデータを書いてもおそらく届いていなそうという話のはず。 その中で、なんでこういうTCP接続がのこったままなのか、という話は、おそらくは3Gとかの不安定な回線でSYN,ACKまでは着弾するんだけど、それ以降の大きめのPUSHはうまく通らないというケースなのかなぁとおもいつつ、実際のケースを見てると、どうもそれだけでもなさそうということで、そもそもどういう原因や環境でこれが起こるかはまだ全然掴めていない。

loseConnectionなのか、abortConnectionなのか、どちらを呼べばいいの?みたいな話は、実際かなりやっかいだなぁとおもっていて、今回は最低でも15秒に一回はデータが来ているはずというのをベースに、120-150秒間隔で実行するLoopingCallで作ったタスク内で最終受信時間をチェックして、ある程度以上の時間受信していなければ切断という処理にした。この場合はおそらくabortConnectionってことでいいんだろうけど、それ以外にも切断をサーバから野動的に呼ぶケースはあり得て(ユーザからのリモートからの切断要請とか)、その場合にも、同様に最終受信時間チェックで、loseかabortを呼び分けるのがいいんかなぁ。。。よくわからん。

LoopingCall

関係ない話だけど、Twistedつながりで、いままでLoopingCallでtask作るときに、startを呼んだらすぐにtaskの内容が実行されてしまうのが嫌で、reactor.callLater(task.start, args)みたいなことをしてたんだけど、LooingCallにはnowって引数があって、これをFalseにすれば、最初いきなり実行しないようになってた。気づかなくてすごい格好悪いことしてた。

]]>
Sun, 19 May 2013 00:00:00 +0900
https://misc.mat2uken.net/blog/2013/05/16/no_hateb_chrome_extension.html https://misc.mat2uken.net/blog/2013/05/16/no_hateb_chrome_extension.html <![CDATA[はてなブックマークのChrome Extensionを外した]]> はてなブックマークのChrome Extensionを外した

以前からGoogleで検索して、検索結果ページを表示→どれかのページへ遷移→戻るボタンクリックとしたときに、 なぜか検索結果一覧ページじゃなくて、さらにもうひとつ前のページに戻ってしまう現象があって、 なんでこんなことになるんだろうとおもってたんだけど、どうもはてブのExtensionのせいだったらしい。

ふと「chrome google 検索 戻れない」で検索したら、 このページ がひっかかって、あ、もしかして、どれかextensionが悪さしているかなとおもって、順番にはずしていったところ、はてブのextensionだった。 たぶん、検索結果全部のURLのはてブ数をだしてるあたりの処理が終わらない間に、リンクをクリックしちゃって次のページに遷移すると、戻れなくなるのではないかという気がしてる。

まあ、そんなこんなでextensionはダメそうなのでブックマークレットに変えた。 extensionって意外な罠があるんですね、という話。

(2013.05.24 追記) 修正版がリリースされたようです

本人はふと発見した、というレベルでチラ裏的に書いていただけなのですが、妙に話題になり、本日、すごい早さで 修正版 をリリースされているようです。すごい素早い対応ありがとうございます&お疲れ様でした。 とりあえず、私もExtensionを有効にしてまた使ってみています。

]]>
Thu, 16 May 2013 00:00:00 +0900
https://misc.mat2uken.net/blog/2013/05/05/vyatta_6_6_upgrade.html https://misc.mat2uken.net/blog/2013/05/05/vyatta_6_6_upgrade.html <![CDATA[おうちルータのVyattaを6.6R1に上げた]]> おうちルータのVyattaを6.6R1に上げた

6.6に上がっていることに気がついたので、おうちルータを6.6R1に上げた。 やり方は至極簡単。

$ add system image http://www.vyatta.com/downloads/vc6.6/vyatta-livecd_VC6.6R1_i386.iso
$ reboot

このイメージのisoを指定するだけでアップグレードできる仕組みは素晴らしいっすね。

6.5に上げたときは、たぶんMSSCLAMPが無効になって、微妙に大きなパケットを受信できないとか 若干トラブルがあったけど、今回は特に問題なさそう。

MSSの調整に関しては、policy routeとして下記のものを一応入れたままにしてる。

route PPPOE-IN {
  rule 10 {
      protocol tcp
      set {
          tcp-mss 1414
      }
      tcp {
          flags SYN
      }
  }
}

そろそろ、せっかくグローバルなv6のアドレス振られてるんだし、 v4 over v6のVPNをちゃんと設定しときたいところ。そうすれば、会社から家のネットワークに入るのが楽になるし。 ブロードキャストとかマルチキャスト通るようになるといろいろ便利そうだし、L2でつなぎたい。 IIJのSIMももっていてそっちもv6のアドレス振られるのでそっちからもVPNつなげるようにしときたいなぁ。

]]>
Sun, 05 May 2013 00:00:00 +0900
https://misc.mat2uken.net/blog/2013/05/04/start_blog.html https://misc.mat2uken.net/blog/2013/05/04/start_blog.html <![CDATA[blog start]]> blog start

GWとかの休みで時間ができたときによく起こる発作で、ブログをTinkererで始めてみるテスト.

]]>
Sat, 04 May 2013 00:00:00 +0900