10/30/2015

VIRLでLISP (1)

IPアドレスは位置(RLOC: Routing Locator)とノードの終点識別子(EID: Endpoint ID)の二つの役割を同時に持っている。そのため、インターネットに接続される分だけの経路情報が必要になり、これが経路テーブル(BGPテーブル)の爆発的増大を招く要因になっている。そこで、RLOCとEIDを分離するプロトコルが提案されており、実用レベルになっているのが、Ciscoが開発したLISP (Locator/ID Separation Protocol) (RFC 6830)である。LISPを簡単に言ってしまうと、EIDとなるIPアドレスを、RLOCのIPアドレスでトンネル化して通信を行う仕組みである(UDPを使う)。LISPには、

  • RLOCのアドレスのみをルーティングすれば良いので、インターネットの経路テーブルが小さくできる
  • マルチホームに対応し、BGPを使わずに入り方向のトラフィック制御ができる
  • ノードを移動させてもEIDのアドレスを変更する必要がない(すなわち、プロバイダの移動が自由になる)
  • ホストは変更が不要
  • LISPはエッジ側の技術なので、既存のインターネット環境を変更する必要はなく、徐々に広げることができる(非LISPとの接続も考慮)

などの利点がある。EIDをIPv6、RLOCをIPv4にすれば、IPv6 over IPv4も可能になるので、コアはIPv4のままでIPv6をデプロイすることも可能になる。VIRLでLISPの動きを確認してみることにする。

LISPのデータプレーン

Lisp data plane

データの動きは単純だ。

  1. A1からB1宛てのパケットが届くと、ITR (Ingress Tunnel Router)がホストB1のRLOCを解決する
  2. B1へのパケットをRLOCでUDPカプセル化して、インターネット側に送る
  3. ETRはパケットが届くとデカプセル化し、ホストB1に送る

LISPのコントロールプレーン

ITRがどのようにRLOCのアドレスを知るかがコントロールプレーンの役割である。

Lisp cntrl plane
  1. Map ServerにEIDプレフィックスとRLOCの情報を登録しておく
  2. ETRは自LISPノードの宛先となるEIDのネットワークをMap-Registerメッセージを使ってMap Serverに送信する。Map Serverは登録されているEIDプレフィックと照合し、これらが一致すればMap Registerは受け入れられ、ETRの登録が完了する。Map Registerの送出は60秒毎に行われる
  3. ITRはB1へのパケットが届くと、ルータ内にあるEID-RLOCのマッピングキャッシュを見て、そこに無ければ、Map-RequestメッセージをMap Resolverに送る
  4. Map ResolverはMap Serverにリクエストを転送する
  5. Map Serverはリクエストと設定されているEID-RLOCデータベースを比較する。一致していれば、ETRにリクエストを転送し、一致しなければ、リクエストは捨てられる
  6. ETRはITRにMap-Replyをマッピング情報と一緒に返す
  7. Map-Replyを受け取ったITRはEID-RLOCマップキャッシュを更新する

LISPの設定

次のようなネットワークをVIRLで作ってみる。LISPのEIDはIPv6(lisp-1/lisp-2)、コアルータ(core)はIPv4のみルーティングできるようにして、トンネルされていることを実感しやすいようにIPv6 over IPv4でテストしてみる。

Lisp virl v6ov4

IOSの場合、LISP関連の設定はrouter lispの中で行う。まず、Map Server/Map Resolverの設定。あらかじめ、EIDプレフィックスとRLOCの情報を登録し、IPv6のMap Server/Map Resolverとして働くようする。

router lisp
 site site1
  description LISP Site 1
  authentication-key SITE1KEY
  eid-prefix 2001:DB8:A::/48
  exit
 !
 site site2
  description LISP Site 2
  authentication-key SITE2KEY
  eid-prefix 2001:DB8:B::/48
  exit
 !
 ipv6 map-server
 ipv6 map-resolver

次にETR/ITR (xTR)の設定。通常、ITRとETRは同一のルータである。ここでは、RLOCの設定(アドレスでもインタフェースでも可)、EIDプレフィックとRLOCのマッピング、そして、Map ServerとMap Resolverの設定を行う。

router lisp
 locator-set SITE1
  10.0.1.2 priority 1 weight 1
  exit
 !
 eid-table default instance-id 0
  database-mapping 2001:DB8:A::/48 locator-set SITE1
  exit
 !
 loc-reach-algorithm rloc-probing
 ipv6 itr map-resolver 10.0.100.2
 ipv6 itr
 ipv6 etr map-server 10.0.100.2 key SITE1KEY
 ipv6 etr
 exit

以上、基本的なLISPの設定はたったこれだけである。

動作の確認

Map ServerがETRからのMap Registerを受理すると次のようになる。

MSMR#show lisp site
LISP Site Registration Information
* = Some locators are down or unreachable

Site Name      Last      Up   Who Last             Inst     EID Prefix
               Register       Registered           ID       
site1          00:00:30  yes  10.0.2.2                      2001:DB8:A::/48
site2          00:00:20  yes  10.0.9.2                      2001:DB8:B::/48

xTR側では配下のマッピングエントリが確認出来る。通信が発生していない状況では、キャッシュにはSite2のエントリは無い状態(デフォルトのみ)。

xTR-1#show ipv6 lisp database 
LISP ETR IPv6 Mapping Database for EID-table default (IID 0), LSBs: 0x1, 1 entries

2001:DB8:A::/48, locator-set SITE1
  Locator   Pri/Wgt  Source     State
  10.0.1.2    1/1    cfg-addr   site-self, reachable
xTR-1#show ipv6 lisp map-cache 
LISP IPv6 Mapping Cache for EID-table default (IID 0), 1 entries

::/0, uptime: 00:18:39, expires: never, via static send map-request
  Negative cache entry, action: send-map-request

Map Requestが行われ、Map Replyがあれば、キャッシュにエントリーが追加される。このあとは、キャッシュを見てマッピングが行われる。

xTR-1#show ipv6 lisp map-cache 
LISP IPv6 Mapping Cache for EID-table default (IID 0), 2 entries

::/0, uptime: 00:06:19, expires: never, via static send map-request
  Negative cache entry, action: send-map-request
2001:DB8:B::/48, uptime: 00:00:14, expires: 23:59:46, via map-reply, complete
  Locator   Uptime    State      Pri/Wgt
  10.0.9.2  00:00:14  up           1/1  

lisp-2からのエコーリプライパケットをcoreとxTR-1間でキャプチャしてみると、IPv6パケットがIPv4でUDPカプセル化されていることが分かる。

Lisp v6ov4 packet

ロードバランス (マルチホーム)

RLOCを複数持つ(マルチホームや複数回線)ことで、負荷分散や入り方向のトラフィック調整が可能になる(フローベース)。この実現にLISPでは、RLOCにpriorityとweightを設定できる。送り側は、この値を見て、どのRLOCにパケットを送るかを調整する。ETR側で次のようにRLOCを設置すれば、二等分されてバランスされる。

router lisp
 locator-set SITE1
  10.0.1.2 priority 1 weight 1
  10.0.2.2 priority 1 weight 1
  exit

RLOCの設定を確認する。

xTR-1#show ipv6 lisp database 
LISP ETR IPv6 Mapping Database for EID-table default (IID 0), LSBs: 0x3, 1 entries

2001:DB8:A::/48, locator-set SITE1
  Locator   Pri/Wgt  Source     State
  10.0.1.2    1/1    cfg-addr   site-self, reachable
  10.0.2.2    1/1    cfg-addr   site-self, reachable

パケットを送る側から、マップキャッシュを確認すると次のようにRLOCが2つになったことを確認出来る。

xTR-2#show ipv6 lisp map-cache 
LISP IPv6 Mapping Cache for EID-table default (IID 0), 2 entries

::/0, uptime: 00:23:19, expires: never, via static send map-request
  Negative cache entry, action: send-map-request
2001:DB8:A::/48, uptime: 00:13:23, expires: 23:46:36, via map-reply, complete
  Locator   Uptime    State      Pri/Wgt
  10.0.1.2  00:13:23  up           1/1  
  10.0.2.2  00:13:23  up           1/1  

負荷分散が行われるかを確認してみる。

lisp-2#ping 2001:db8:a:1::1 source 2001:db8:b:1::1 repeat 500
---------------------
xTR-2#show adjacency lisP 0 detail
Protocol Interface                 Address
IPV6     LISP0                     10.0.1.2(5)
                                   500 packets, 68000 bytes
                                   epoch 0
                                   sourced in sev-epoch 0
                                   Encap length 36
                                   4500000000004000FF115DE90A000902
                                   0A000102000010F50000000040000000
                                   00000001
                                   LISP
                                   Next chain element:
                                     IP adj out of GigabitEthernet0/1, addr 10.0.9.1
IPV6     LISP0                     10.0.2.2(5)
                                   0 packets, 0 bytes
                                   epoch 0
                                   sourced in sev-epoch 0
                                   Encap length 36
                                   4500000000004000FF115CE90A000902
                                   0A000202000010F50000000040000000
                                   00000001
                                   LISP
                                   Next chain element:
Protocol Interface                 Address
                                     IP adj out of GigabitEthernet0/1, addr 10.0.9.1
---------------------
lisp-2#ping 2001:db8:a:1::1 source 2001:db8:b:1::3 repeat 500
---------------------
xTR-2#show adjacency lisP 0 detail 
Protocol Interface                 Address
IPV6     LISP0                     10.0.1.2(5)
                                   0 packets, 0 bytes
                                   epoch 0
                                   sourced in sev-epoch 0
                                   Encap length 36
                                   4500000000004000FF115DE90A000902
                                   0A000102000010F50000000040000000
                                   00000001
                                   LISP
                                   Next chain element:
                                     IP adj out of GigabitEthernet0/1, addr 10.0.9.1
IPV6     LISP0                     10.0.2.2(5)
                                   500 packets, 68000 bytes
                                   epoch 0
                                   sourced in sev-epoch 0
                                   Encap length 36
                                   4500000000004000FF115CE90A000902
                                   0A000202000010F50000000040000000
                                   00000001
                                   LISP
                                   Next chain element:
Protocol Interface                 Address
                                     IP adj out of GigabitEthernet0/1, addr 10.0.9.1

TarDisk Pear

MacBookは後で内蔵ストレージを交換増設することができないのが難。TarDisk PearはSDメモリをフュージョンドライブのように論理的にマージして一つのボリュームに見せられる。これなら、内蔵ドライブが増量したように感じるわけだ。内蔵ドライブが優先して使われ、TRIMも有効。2つのモデルがあり、128GBが149ドル、256GBが399ドル。注意点は、OSはYosemiteあるいはEl Capitan、Bootcampが使えない、FileVaultはボリューム作成前に一旦オフにする必要あり。手順は次の通り。

  1. TarDisk Pearを購入
  2. バックアップ
  3. FileVaultをオフ
  4. 内蔵ドライブに8GBの空きを作る
  5. Macをシャットダウン
  6. シングルユーザモードで起動 (Command+Sで電源オン)
  7. ファイルシステムチェック「fsck -fy」を実行し、"The volume (name) appears to be OK"が出るまで繰り返す
  8. 再起動(reboot)
  9. ディスクユーティリティで「First Aid」を実行
  10. 全てのプログラムを終了
  11. TarDisk Pearを挿入
  12. TarDisk Pear installerを実行してPearing
  13. 再起動して終了

10/29/2015

Cisco VIRLが20ノードに制限緩和

Cisco VIRLでシミュレーションを行う際、ルータ・スイッチのノード数が15に制限されているが、その制限が11/1から20ノードに緩和されるとのことだ。また、30ノードまで使える新しいライセンスも作られる。

更新

10月のウェビナーで、次期バージョンの新しい機能として、Live Visualizationとオーバーコミット機能が紹介された。オーバーコミット機能は注目で、UWM画面でRAMとCPUのオーバーコミットを設定できる。例えば、8GBのメモリを割り当てたVIRL環境でXRvを3ノード動かそうとすると、メモリが不足していると言われてシミュレーションができない。ここで、オーバーコミット係数、例えば1.6を設定すれば12.8GBまでのメモリが利用可能となり、XRvを3台動かすことが可能となる。

更新

20に増えた。

Virl node20

10/28/2015

Let's Encryptのベータプログラム開始

Let's Encryptベータプログラムを開始したそうだ。Let's Encryptから証明書を取得するには、ACMEクライアントを実装する必要がある。ACME (Automatic Certificate Management Environment) は人間の手を介さずに、HTTPサーバに証明書を自動で取得するためのプロトコルで、Pythonで書かれたリファレンス実装がある(Rubyで書かれたものもある)。ACMEの手順は次の通り。

  1. 鍵ペアを作成する
  2. CAはエージェントに対して、ドメインを所有していることを証明するため、次のいずれかのチャレンジを課す。example.comを管理している場合、
    • example.comの下にDNSレコードを設定する
    • https://example.comの特定のURIにHTTPリソースを設定する
  3. チャレンジと合わせ、CAからnonceが渡されるので、鍵ペアが管理下にあることを証明するため、秘密鍵で署名する
  4. これらの結果をCAに渡し、CAはnonceの署名の確認と、チャレンジの結果(例えばWebサーバのファイルをダウンロードして、値が一致するか)を確認する
  5. 確認されれば、鍵ペアは認証済み鍵ペアとなる
  6. 証明書の発行・更新・失効は、証明書の管理メッセージを認証済み鍵ペアを用いて署名して送ればよい

Hacker News

更新

パブリックベータが12月3日から開始される。

Hacker News

10/23/2015

セキュリティ研究者、NTPの時刻改ざん攻撃を指摘

コンピュータの時刻同期で広く使われるNTP (Network Time Protocol)は、多くが暗号化されず平文でやり取りされる。ボストン大学の研究者が、MITM手法を使った時刻改ざんによる攻撃を論文(PDF)で発表した。時刻を狂わされることで、DNSSECの改ざん防止やTLSの証明書の期限切れを回避させることが可能になる。その他、HSTS(HTTP Strict Transport Security)、DNSキャッシュ、RPKI、Bitcoin、API認証、Kerberosなども影響を受ける。

NTPの利用者側もブート時に時刻を合わせるだけだったり、大きく時刻がドリフトするのを許さない実装をしているOSは少ないようだ。また、対称鍵をサポートしている公開NTPサーバも少ない(NISTの場合は、鍵を受け取れるのは郵送やファックスで登録したユーザのみとハードルが高い)。

ちなみに、OpenNTPDが実装するntpdは、信頼できるHTTPSサーバから時刻情報を得ることで、時刻の正確さを検証している(例えば、constraints from "https://www.google.com/")。その他、NTPセキュリティプロジェクトに期待か...。

ars technicaHacker News

追記

NTPsecプロジェクトのエリック・レイモンド氏が進捗を説明。コードの全面書き換えではないとのこと。引き継いだコードベースを簡素化して、古いコードをPOSIX APIに書き直すことで、サイズが227KLOCから97KLOCへと43パーセントになったとのことだ。コードの強化は例えば次のハッキングガイドに現れている。

  • strcpy, strcpy, strcat → strlcpyとstrlcat
  • sprint, vsprintf → snprintf, vsnprintf
  • scanf 類は、長さ制限なしの%s形式を禁止
  • strtok: 明らかなループの中では、strtok_r()あるいはunrollを使う
  • gets → fgets
  • gmtime(), localtime(), asctime(), ctime() → reentrant *_r
  • tmpnam() → mkstemp()あるいはtmpfile()
  • dirname(): Linuxバージョンはリエントラントだが、この性質は移植しない

Hacker Newsには、少し新しくなるだけではという話も。全面的にモダンなCか、RustやGoのような安全な言語にする...

10/16/2015

Yahooがパスワードを廃止 (Yahoo Account Key)

YahooがiOS、Android向けにメールアプリをアップデートしたが、パスワードの代わりにプッシュ通知を利用してサインインする「Yahoo Account Key」を導入した(既に、SMSでコードを受け取るオンデマンド・パスワードを導入しており、これはその発展系)。二段階認証と似ていているが、パスワードを思い切って廃止して、スマートフォンで受け取るコードのみで認証してしまうというもの。

10/15/2015

銀河系内にエイリアン文明の証拠?? :-)

ケプラー望遠鏡で発見されたKIC 8462852に不規則で非周期な光度曲線が見られるということで注目されている。この高度曲線の分析を行ったところ、中心は主系列星段階のスペクトル型F3 V-IVの恒星であることがわかった。この奇妙な光度曲線について考えられるシナリオで有力なのが、主系列星の周りのダスト塊による影響で、これによって中心にある恒星が掩蔽されているためとのこと。ところが、驚くような考えもある。一部の天文学者は、エイリアンが恒星からエネルギーを得るために構築した巨大な構造物(ダイソン球)の影響で、エイリアン文明の証拠ではないかと考えているのだ。

Popular Science

更新

SETIがアレン・テレスコープ・アレイでKIC 8462852の調査したが、ETの存在を示すような証拠の発見に失敗したとのこと(Slashdot)。

10/14/2015

安価にできるWiFi電波妨害攻撃

ベルギーのセキュリティ研究者が、アマゾンで購入出来る15ドルのWi-FiドングルとRaspberry Piボード、小さなアンプを使って、安価にWiFi、Bluetooth、Zigbeeの電波妨害(ジャミング)が可能と発表したそうだ。Wi-Fiは全てのデバイスは公平で、パケットを送信する前にクリアにするため送出を待ってしまうという弱点を利用しているそうだ。その論文ソースコード

Slashdot

10/08/2015

ラリー・ウォールがPerl 6.0.0を公表

Slashdotによると、ようやくPerl 6が発表できるようになったとのこと(Perlは誕生して28年、Perl 5からは20年以上経過)。

昨晩、ラリー・ウォールが、今の最優先事項は機能と間違えられるバグを修正することという冗談を交え、Perl 6の初の開発リリースを発表した。新しい言語はメタプログラミングが特徴で、言語を拡張するために自分自身でシンタックスの新しいビットや、新しいinfix演算子を定義できる。ラリーはsequence演算子、reactのような新しい制御構造やgather/takeリストを含む、レビュアーが「エキゾチックで新しい」と呼ぶ機能をプレビューした。ラリーは、「我々はsteamを使い果たすために言語を欲しているのではない。30あるいは40年使えるプログラミング言語になるだろう。私はそれで十分だと考えている」と語った

Hacker News

10/06/2015

HPがOpenSwitchを発表

HPがLinuxをベースとしたオープンソースのネットワークオペレーティングシステム「OpenSwitch」を発表した。HPのAltolineスイッチで動くようだ。Broadcom、Intel、VMware、Aristaらと、OpenSwitchコミュニティを形成している。

Hacker News

死と変容 - 西側企業の黄金時代は終わるかもしれない

西側の公開会社の黄金時代は終わりつつあるというエコノミストにあった記事。ヒラリーなんかも四半期資本主義を批判していたなぁ。

西側企業の黄金時代は終わりに近づいている

偉大なイギリスの歴史家エドワード・ギボンは、アウグストゥス時代のローマ帝国の輝かしい叙述で「衰亡史」を始めた。帝国は地球でもっとも美しい地域を持っていた。ローマ帝国の敵は古代の名声と武勇によって追い詰められ続けた。市民は、富と贅沢のメリットを楽しみ乱用した。悲しいかな、この幸せな状況は失われなかった。帝国はすぐに自身の破滅の種を食い止めようとした。ギボンはすぐに祝賀凱旋から悲劇へと方法を変えていった。

おそらく、西側企業の歴史はいつかほとんど同じやり方で描かれるだろう。今日の企業帝国は地球の隅々まで理解した。彼らは高度に訓練された経営者とライバルが争っている。彼らはここで投資の約束、あるいはそこでコンサルタントとしての仕事に沿って地方の政治家と足並みを揃えている。巨大企業は匹敵する相手がいないほどのリソースを持っている。例えば、Appleは2000億ドル以上のキャッシュを持っている。そして、彼らは上級マネージャーや「富や豪華さ」を持つ優れた投資家を送って、偏見を持ったローマ人と同じように影響を与えている。

マッキンジー・グローバル研究所(MGI)の新しいレポートは未来のギボンに有益な統計を提供し、世界中の3万近くの企業のデータを処理した。企業は1980年から2013年の間で、3倍以上の収益を上げ、世界全体のGDPの7.6パーセントから10パーセントに伸びており、西側の企業が2/3以上を占めている。アメリカ企業の税引後利益は、1929年以来、国民所得のシェアとして最高レベルにある。

しかし、マッキンジーの人々はギボンと同じくらい速くやり方を変えている。彼らの主張は、西側企業の黄金時代が市場のグローバル化や生産コストの結果の二つの穏やかな発達の生産だった。グローバルな労働力は1980年来12億に拡大し、新しい労働者が新興経済国から大規模に流入している。OECDの企業税率はほとんどの富裕国では半分に落ちている。そして、ほとんどの生活必需品の値段は実質ベースで下がっている。

今、より困難な時代が始まっている。1990年代と今日を比べると多国籍企業が2倍以上に増えており、より競争化に晒されている。利幅は圧迫され、利益の不安定さは増している。北米企業の資本収益の中の平均分散は、1965-1980年よりも60パーセントと高くなっている。MGIは、企業利益は10年間で世界全体のGDPの10パーセントから約8パーセントに落ちると予測している。

とりわけ2つの事が古い帝国的な多国籍企業にとっての心地よい世界をかき乱している。最初は新興市場の競争相手の登場である。新興市場をベースにするフォーチューン500社のシェアは、1980-2000年の5パーセントから今日では26パーセントに増えている。これらの企業は、日本や韓国で以前から起きているように先行者がほとんど同じ方法でグローバルに拡大している。過去10年間で、巨大な新興世界企業は海外からの収入の割合が2倍になっている。多くの新興市場の見通しは数年前よりもより入り混じったものになっており、自国の障害がより迅速に国際化する多国籍企業の増加をプッシュしている。

2つ目の要素は東西問わずハイテク企業の台頭である。これらの企業は一瞬で多くの顧客を獲得してしまう。フェイスブックは中国の人口と同じ14億人の月間利用者を誇っている。巨大テック企業はビッグデータセンターのネットワークを使って、急速に現在の領域を植民地化している。中国のE-コマース企業のアリババ、TencentやJD.comは金融サービスの中でこれを実行している。そのような企業はより小さい企業にもグローバル市場で競争できるような発射台を提供している。

MGIはこのことについて深く論じていないが、政治的環境はより敵対的にもなっている。企業の貪欲さに対して、左右ともポピュリストは怒っている。アメリカでは、大統領候補のバニー・サンダースやドナルド・トランプ両氏とも税金の抜け道を探そうとする企業を批判している。穏健な政治家でさえ、より反企業の注意を鳴らしている。アンゲラ・メルケルは2014年にドイツで初めてとなる最低賃金を導入した。そして、イギリスのデイビッド・キャメロンは「生活賃金 (Living Wage)」を段階的に導入している。企業は自分達の立場は広く社会に還元するという圧力の下にあると理解するかもしれない。

西側企業はそれらの規制への危機をどのように乗り切るのだろうか? MGIは彼らが比較的優位を持ち続ける一つ分野に集中するよう助言している。メディア、金融や製薬産業のような明らかな市場のある企業ばかりではなく知識集約企業が繁栄しているのに対し、多くの労働集約企業や資本集約産業は外国の競合企業によって打ちのめされてしまった(物流や高級車は発展し続けているが)。MGIが定義している「アイデアセクター」は、1999年が17パーセントだったのに対し、西洋企業によって作られた利益の31パーセントを占めている。

Capitalist redemption

西側企業の相対的な衰退は、ビジネスを成功させることについての長期にわたる仮定のうちいくつかが再考につながるかもしれない。公開会社は他の会社(未公開会社)に押されてしまうかもしれない。アメリカでは、1996年に8025あった証券取引所に上場した企業が今では半分に減少している。四半期収益主義がいっそう多くを失うかもしれない。著しい数の新しい企業勝者は、強い創業者の形で支配的なオーナーがいる。彼らは長く続くビジネスを構築するために短期の結果を避けるのを厭わない。例えば、フェイスブックのマーク・ザッカーバーグ氏やマヒンドラや非上場企業がそうだ。伝統的な文明が野蛮さと放縦さを自制したのがギボンの偉大な仕事は衰亡の物語だった。運が良ければ、西側企業の相対的衰退の物語は、新しい形態の企業が古い企業からチャンスを奪うという資本主義の改革の物語になるだろう。

10/02/2015

El CapitanとNAT64

OS X 10.11 El Capitanから、インターネット共有でNAT64が利用できる。システム環境設定から共有を選択し、オプションキーを押しながら、共有あるいは共有に入ってからインターネット共有をクリックするとNAT64のオプションが表示されるので、一旦キャンセルしてNAT64にチェックを入れるとNAT64(RFC 6052)が利用できるようだ。早速、試してみたところ、iPhoneをWi-Fiで接続するとIPv6接続になるが、NAT64を介してIPv4サイトに接続できる。

Elcapitan nat64

iPhone(IPv6ノード)から接続先(www.google.co.jp)のAAAAレコードを問い合わせ、MacはIPv4アドレス(173.194.120.95)をIPv6アドレスに変換した形で応答し(64:ff9b::adc2:785f)、iPhoneからはIPv6→IPv4に変換されて接続される。少し試した程度なのでまだ分からないが、なぜかIPv6サイトに接続できなかった。

更新

El CapitanのNAT64はiOSアプリの開発者がIPv6オンリーのネットワークを使って、試験するためのものと思われる。そのため、NAT64配下からIPv6をスルーして接続する機能は省かれているのかも知れない。その他、

  • NAT64配下のIPv6アドレスは、2001:2:0:aab1::/64 (RFC5180で確保されているベンチマーク用アドレス)をRAで払い出し
  • DNS64はunbound、NAT64はApple独自実装?(/usr/libexec/InternetSharing )

10/01/2015

El CapitanとHomebrew

OS X 10.11/El Capitanがリリースされた。El Capitanには、System Integrity Protection (SIP or rootless)と呼ばれるセキュリティ強化が行なわれている。SIPは、/System、/bin、/usr、/sbin のようなOSに関わるディレクトリへの書き込みは管理者レベル(root)でも防いでおり、sudoを使っても書き込めなくなっている。ただ、開発者向けに/usr/local 以下をSIPの対象外にしてくれたため、Homebrewは今まで通りに使うことができる。

但し、El Capitanへのアップグレード後、/usr/local は "root:wheel restricted" というパーミッションになっているので、書き込みができるように下記を実行する

sudo chown $(whoami):admin /usr/local \
  && sudo chown -R $(whoami):admin /usr/local

/usr/localが無い場合(これから使いたい場合)は、まず再起動してリカバリーモードにしてからターミナルを開き、"csrutil disable" でSIPを無効化する。そして、再起動させ、ターミナルを開いて次のコマンドを実行する。

sudo mkdir /usr/local && sudo chflags norestricted /usr/local \
  && sudo chown $(whoami):admin /usr/local \
  && sudo chown -R $(whoami):admin /usr/local

そして、再度リカバリーもーどにしてからターミナルを開いて、"csrutil enable"でSIPを有効にして、再起動させる。これでHomebrewがインストールできる。