コンピュータ」カテゴリーアーカイブ

IPv6

 自宅のルータをIPv6対応のものに変更。IPoE/MAP-Eで接続し、ついにIPv6環境へ移行した。
 各種OSでのIPv6のサポートが2000年ごろから始まってもう20年。実際にIPv6が使えるようになるのにこんなにかかるとは思わなかった。最後まで日本の有線インターネットの一般利用者のIPv6化を遅らせる原因となったのは、ブロードバンドルータが対応しなかったことである。主要ISPがIPoEの接続サービスを開始することになり、またIPoEは利用者側からの需要もありそうだということになって、どんくさい日本メーカーもやっと重い腰を上げたようだ。やっと体制が整ったのが2018年ごろらしい。もっとも、筆者の使っているOCNでIPoEが無料で使えるようになったのは今年の6月(それまでは有料オプション)。そういう意味では、プロバイダが本気になったのもつい最近と云えるかも知れない。
 なぜIPoEが急に盛り上がっているかというと、これはよく宣伝されているように、フレッツ網のPPPoEの終端装置が容量不足になってしばしば輻輳しているところ、それを回避して回線を高速化する手段として使えるからである。フレッツのNGN網はIPv6ベースであり、IPoE/MAP-EはIPv6でIPv4パケットを伝送する技術なので、IPoEを使うと必然的にIPv6化することになるのだが、IPv6が使いたくてIPoEを導入する人は案外少ないかもしれない。
 実際使ってみると、確かにある程度高速化の効果があるようだ。従来YouTubeなどは夜のゴールデンタイムだとHD画質では度々途切れていたのが、IPoEに換えてからはほとんどなくなった。一つ注意が必要なのは、ブロードバンドルータによっては、IPoEを使うとMSS clampが効かないものがあるらしいことで、jumbo frameを有効にしているPCに限って、PMTU Discovery Blackholeの問題がある一部サイトにつながらないというわかりにくい問題が発生することがある。当面の回避策はjumbo frameを無効にするしかない。

 ここでIPoE関係の用語をまとめておくと、まずIP over Ethernet(IPoE)は、LANで使用するのと同じ方法で普通にIPを使うという意味合いの言葉である。LANで使うIPという本来の意味でのIPoEは一応RFC 894という短いRFCで規定されている(ちなみに、jumbo frameは厳密に云うとこのRFCに違反する)。しかし通常、このような普通のIPoEはわざわざIPoEとは言わない。IPoEという言葉が使われるのは大抵WANの文脈である。NGN網のIPoEも、基本的には普通の使い方でIPv6を使う。ただ、NGNでのIPoE接続には、回線に対して割り当てるIPv6アドレスを、NGN網からインターネットに接続する業者(VNE)からNTTが預かって配るとか、ユーザーからのパケットをVNEのルータに送るためにソースアドレスを用いたポリシールーティングを使うとかといった、特有の運用上のルールがあり、IPoEという言葉はそれらを併せて意味するものとして使われているようである。
 IPv4をIPv6のIPoEに載せる技術をIPv4 over IPv6と総称し、これを使うとIPv4だけPPPoEを使うといったことなく、IPv6/v4両方に対応したWANをIPv6だけで構築できる。ユーザー宅内施設でプライベートIPv4アドレスを使用することを前提とした場合の具体的な技術としては、MAP-E、MAP-T、DS-Liteなどがある。MAPは、IPv6アドレスの中にIPv4アドレスが埋め込まれ、かつNAPT処理をユーザーのブロードバンドルータ側で行うのが特徴。また、NAPTで使用するグローバルIPv4アドレスは、1つをポート番号範囲(1つとは限らない)で分割して複数ユーザーで共用する。MAPのうちMAP-Eは、IPv4ヘッダをいじらずにIPv4パケット(データグラム)をそのまま丸々IPv6にカプセル化する方式。丸々載せるのでMTUは小さくなるが、IPv6区間のみでフラグメント化処理が完結するので、ユーザーから見たMTUは1500で変わらない。もっとも、IPv6ヘッダはIPv4ヘッダより大きいので、MAP-TでもMAP-EほどではないにしてもMTUが小さくなるのは同じである。

 IPv6を使ってみて新鮮な感覚を受けるのが、DHCP相当機能が標準搭載なので、LAN内の機器に自動的にIPアドレスが配布されること(v6アドレスは長すぎるので手入力があまり現実的でない)、そしてそのアドレスがグローバルアドレスであることである。プライベートアドレスにどっぷりつかってきた今までの感覚からすると違和感もあるが、これが本来のIPネットワークなのだろう。もちろんセキュリティ確保のためフィルタの設定は必須であるが、一般消費者向けルータでは標準で設定されている。また、Windowsのデフォルトでは、MACアドレスベースで生成された伝統的なIPv6アドレスではなく、乱数で生成した一時アドレスが使用される。
 Firefoxでアドオンを入れるとv6とv4のいずれで接続しているか表示できるのだが、それで見ていると、YouTubeなどGoogle系のサイトはv6で接続している。しかしそれ以外にはv6対応しているサイトはまだ少なく、あったとしてもCDNと思われるサーバーから画像などをダウンロードする部分だけがv6化されている程度である。AmazonやTwitterなど著名サイトもメインのサーバーはv6になっていない。また例によってどんくさい日本企業は、Yahooなど著名サイトも含めてまだまだv4のみのところが多い。もっとも、通信事業者はさすがにほぼv6対応しているが…。なお、高速化の恩恵はv4でもv6でも等しく受けられるはずである。
 Googleの統計によると、日本からGoogleにIPv6でアクセスしている率は35%とのことである。モバイル網ではIPv6が早くから普及しているのが影響していると思われるため、有線インターネットでどうなのかはわからない。こちらには日本のフレッツ光ネクスト利用者のIPv6化率が74.5%という数字もあるが、これは実際に末端でIPv6を利用している(ブラウザなどのクライアントアプリがIPv6アドレスを使ってサーバーに接続している)率ではないものとみられる。また、NGN網に限って言うと、2019年末で過半数がIPoEを使用しているという資料もある。

Ubuntu 16.04で/etc/default/bind9に設定したOPTIONSが有効にならない

 bindをIPv4オンリーで動かしたいときは/etc/default/bind9に
OPTIONS="-u bind -4"
なんて書いたりするのが常道で、これをしないと延々syslogに
network unreachable resolving 'k.gtld-servers.net/AAAA/IN': 2001:503:231d::2:30#53
とかといった類の警告が出続ける。ところがsystemd化された後のUbuntuだとこの設定が効いてくれない。
 治し方だが、
# systemctl edit bind9
で開いたエディタで以下のように書いて保存。
[Service]
EnvironmentFile=-/etc/default/bind9
ExecStart=
ExecStart=/usr/sbin/named -f $OPTIONS

 EnvironmentFile=のあとのマイナスは間違いではなく、そのあとに書いてあるファイルがなければ無視するという意味。また、ExecStart=が2回出てくるのも間違いではなく、一つ目の空のExecStart=は設定の内容をクリアするという意味
 こんなの、どこかに書いておかないと自分でもわからなくなるに違いない。systemdはどうもあまりフレンドリーじゃないね。

Googleのrefererが変更?

 7月15日頃から、Googleのhttpsサイトの検索結果から飛んでくるときのreferer文字列が、それまでの”https://www.google.co.jp/”から”https://www.google.co.jp”に変更になった模様。Google側の仕様変更か、ブラウザ側かは不明。
 これまでホスト名以降にスラッシュを一つも含まないrefererを送ってくるのはSPAM用のbot以外になかったため、当サイトではそういうアクセスを弾く設定にしていた。このため、しばらくGoogleから当サイトにアクセス不可能な状態になっていた。

 時かけのTV放送前に気づいてよかった…

 なお、最近時かけ関係は更新していないけれど、細田守のトリロジーBD Boxだけ商品ページに追加。

Googleウェブマスターツールで少数のDNSエラーが報告される

 このブログはコンピュータ系の記事と映画系のとがごちゃまぜですが、数少ない読者の方々はどちらを期待されているのでしょうか…
 今回はネットワークネタを。

症状

 Googleのウェブマスターツールで少数のDNSエラーが報告される。しかし手元でホスト名を引いてみてもほとんど若しくは全くエラーは起こらない。

原因(の一例)

 当該ドメインを受け持つ公式(authoritative)サーバが、DNS Amplification攻撃(DNS Amp・DNS reflecton)のための大量のリクエストを受けていたために、DNSへの応答が遅れていたため。
 このことは、例えばLinux + BINDの場合、syslogに次のようなメッセージが大量に出力されていることで確認できる。
named[1528]: client 24.13.152.253#12767: query (cache) 'a.packetdevil.com/A/IN' denied
 なお、open resolverになってしまっている場合は、このようなメッセージも確認できない可能性がある。

対処策(の一例)

 まず、当該DNSサーバがopen resolverの場合、他のホストへの攻撃に利用されてしまっているので、外部からの再帰クエリを禁止するなどして早急にopen resolverでないようにする。
 その上で、当該DNSサーバ上でパケットフィルタを実施する。Linuxのiptablesの場合、GitHubにDNS Amp用フィルタを自動的にとってきて適用するためのスクリプトが上がっているので、これを利用するのが便利。

参考文献

DNSキャッシュサーバを使用した「DNSアンプ」攻撃が発生中……再帰的な問い合わせを悪用
DNS Ampの脅威
分散サービス拒否(DDoS)攻撃を仕掛けるDNS ampとは?
オープンリゾルバ(Open Resolver)に対する注意喚起
DNS Amplification Attacks Observer

Ubuntu 12.04にperlモジュールXMLRPC::Liteをインストールする

 久しぶりにperlでゴニョゴニョしようとして、XMLRPC::Liteを入れようとしたが、CPANやcpanmでサクっとインストールというわけにはいかなかった。ビルドでボロボロエラーが出る。
 暫定的な結論としては、CPANでのインストールの前に、aptの方で以下のようにインストールしておくとうまくいくようだ。
sudo apt-get install libexpat1-dev libnet-ssleay-perl libcrypt-ssleay-perl libxml-parser-perl libsoap-lite-perl
 また、DIME::Toolsはどうしてもtestが失敗するので
cpanm --force DIME::Tools
として強制的にインストールした。

 いきなりCPANだとうまくいかないのはたぶんCライブラリが足りていないからで、上のインストールでそれが満たされるのだろう。
 CPANとaptの使い分けの基準がよくわからないが、aptの方のパッケージ名はlib+< 小文字にしたパッケージ名、::は-に置き換える>-perlという形式になっているので、まずそちらを試して、なければCPAN、ビルドエラーが出たら前提モジュールについてaptを再度試すといったところか。

おまけ:
 perlのモジュールを一括でアップグレードするには、
# perl -MCPAN -e shell
でCPANシェルに入ってから
upgrade
でOK。
# cpan -r
でできるという記事も見かけたが誤り。これではリコンパイルされるだけ。

サーバ移転

 これまで自宅で10年物サーバにて運用してきた当サイトですが、今年も初夏を迎えてついにサーバの電源が異常を来したため、さくらクラウド(石狩DC)での運用に切り替えました。まだ問題点があるかもしれませんので、お気づきの節はぜひお知らせください。
 今までの回線は上りの遅いADSLでしたし(1Mbps弱)、サーバも10年分の時をまたいだことになりますので、予想していたことではありますが、最低グレードのプランでも高速に感じられ快適です。特にブログの反応は目に見えて早くなりました。ディスクもSSDですがこれは今までと同じです。
 昔のレンタルサーバと違って、今の仮想サーバはサーバの再起動やコンソールでの操作もすべてブラウザでできて便利です。申し込んで即日使えますし。さくらのクラウドは昨年大規模障害続きで話題になっていましたが、今は特に問題なく使えるようです。

 現時点で気付いたさくらクラウドの問題点は次の通りです。

  1. マニュアルが大変貧弱。ただ画面と画面項目を並べただけ。独自用語を定義せずに断りなく使っている。
  2. 東京からだと国内のわりにホップ数が多め。そのことと、物理的に北海道にあることが関係しているのかも知れないが、pingしたときのRTTが普通の国内サイトの倍くらい(30~40ms)かかる。
  3. 仮想NICを停止して再開すると、IPアドレスが変わってしまう。普段はしない操作だが、構成変更が必要になったときは問題になるかも。
  4. セカンダリネームサーバのサービスを依頼すると月1050円もかかる。なぜこんなに高い?
  5. IPv6未対応。今すぐ必要というわけじゃないけど、IPv4アドレスが既に枯渇してるのに、ちょっと意識低いかな。

追記: 4つ目の問題が致命傷で解約することにしました。次はどれにするかな……

The C++ Programming Language (4th Edition)


 予約注文していたこの本、10日に発売だったのですが、アメリカから1週間弱かかってやっと届きました。国内ではあまり注目されてませんが、C++11に対応した待望の改訂4版です。第3版はC++98ベースでしたから、ドラスティックに機能が追加されています。Stroustrup氏いわく「C++ feels like a new language.」(Prefaceより)。
 中は上質紙に2色刷りで、旧版の邦訳よりリッチな感じ。ただ価格もそれなりです。しかもこのところの円安でますます値上がりしています。Amazon.co.jpでの価格ははじめ7700円弱だったのが8001円になり、8051円になりました。
 しかもAmazonだと発売が10日遅れの20日ですが、とはいえ、それでもいまから注文するならAmazon.co.jpが一番早いでしょう。
 邦訳はいつになるでしょうか、まあ結構早いような気もしますが、C++14に間に合うかどうかは微妙なところです。