2018/06/09(土)IPv6の基礎(10) - 機器設定時に必要と思われる知識

最後に、IPv6アドレスを手動設定する場合に必要となる知識を簡単にまとめておきます。
20180606_3.png
実際にIPv6アドレスの設定をする際、お目にかかるのは、
 ・リンクローカルユニキャストアドレス
 ・ユニークローカルユニキャストアドレス
 ・グローバルユニキャストアドレス
の3つで、単に「IPv6アドレス」と称する場合は、たいてい「グローバルユニキャストアドレス」を指すことは、何度か説明しました。

手動設定する際は、これらのアドレスの詳細構造を知っていないと、トラブルの原因になりますので留意してください。

このうち、リンクローカルユニキャストアドレスはあまり手動設定する機会はないと思いますが、
これを見たら、正しいリンクローカルユニキャストアドレスのプレフィックスは、fe80:0000:0000:0000 固定であることが判ると思います。

ユニークローカルユニキャストアドレスのLビットは、通常は1にして使用してください。
Lビットの0の指定は、現在、用途そのものが規格化されていませんが、将来的に何らかの機能を持たせることになっているようなので、つまらないトラブルの原因を作らないためにも、決められた通りにした方が無難です。

グローバルIDの部分とサブネットIDの部分はLANで管理するのであれば、任意の値が利用可能です。また、「プレフィックス長は常に /64」と記載していますが、これは一般的なLAN環境での話で、仕様としては、/8 ~ /64 の間で使用可能です。

今のところ、一般的なISPで一般的なユーザが IPv6 の接続を行うと、プレフィックス長 /64 のグローバルユニキャストアドレスなIPv6アドレスが自動的に付与されます。
これは、日本国内のフレッツ接続の場合、「半固定アドレス」でして、常時接続が継続している間はIPv6アドレス変わりませんが、何らかのきっかけで「切断 → 再接続」をしたりして通信が一度途絶えると、そのタイミングで IPv6アドレスが変わる(ことがある)という仕様です。

次の記事で、インタフェースIDの決定方法について記述します。

2018/06/07(木)IPv6の基礎(9) - 機器設定時に必要と思われる知識

前回の続き・・・
20180606_2.png
DHCPv6 によるIPアドレス取得の内部処理自体は、DHCPv4 とあまり変わりません。
ですが、DHCPv6 単体でデフォルトゲートウェイが設定出来ないのは、ちょっと・・・ という感じです。
DHCPv4 だと、デフォルトゲートウェイも取得できるのですがね。。

恐らく、ICMPv6にその機能があるから、ということなのでしょうが、ICMPv6 で設定できる項目や設定内容の自由度はあまりなく、そこを DHCPv6 でカバーしようとしても、デフォルトゲートウェイの設定がDHCPv6 単体では出来ない仕様のため、結局、DHCPv6 を使う際も ICMPv6 は不可欠。。ということになります。

2018/06/06(水)IPv6の基礎(8) - 機器設定時に必要と思われる知識

今度は、IPv6アドレスをどのように自動設定するかの仕組みの話です。
IPv6機器を設定する際、特にルータを設定する際、ここに挙げた知識が無いと設定項目の意味が理解できない場面があります。
1枚に収まりきまらなかったので、2回に分けて掲載します。
20180606_1.png


一般的なのが、上記で示すステートレス自動設定で、ICMPv6 を使って設定されます。
IPv6におけるICMPv6は、ネットワークリンクの自律的維持を行うようにある程度の特化がされている部分が、ICMPv4と異なる部分です。

図では明示していませんが、IPv6 においては、同一のLANインタフェースが、複数のIPv6アドレスを認識・所持します。
これは IPv4 とは大きく異なる部分です。

少なくとも1つのリンクローカルアドレス、1つのマルチキャストアドレス(全ノードマルチキャストアドレス=ff02::1)、1つのユニークローカルユニキャストアドレスかグローバルユニキャストアドレスの3つを同一LANインタフェースにて所持する形になります。

IPv6機器がIPアドレスを自動設定する際は、先ずサイト自体で、一定のルールに基づいたインタフェースIDを自動生成し、それをプレフィックスと合体させ、IPv6アドレス自体が他ホストと重複していないのを確認する作業が行われ、これを近隣要請(NS)・近隣広告(NA)と呼びます。

ICMPv6 によるIPv6アドレス自動設定は、リンクローカルに接続されているルータによって、接続に必要な情報が与えられることで機能します。これをルータ要請(RS)・ルータ広告(RA)と呼び、特にルータ広告は接続に必要な情報を与えることから、「RA設定」などと呼ばれています。

また、ルータ広告は定期的(10分毎に行う機器が多い)にルータがマルチキャスト(ff02::1) にて送信する仕様にされているので、ルータの設定変更に自動追従が可能なのも大きな利点です。

2018/06/05(火)IPv6の基礎(7) - 機器設定時に必要と思われる知識

いよいよ、IPv6アドレスの具体的な中身の話に入っていきます。
・ユニキャストアドレス
・エニーキャストアドレス
・マルチキャストアドレス        全てに共通する内容になります。
20180605_3.png


上記では、IPv6アドレスを扱う上で必須で知っておくべき内容を記述しています。
特に重要なのは、IPv6アドレスは前半の「プレフィックス」部と、後半の「インタフェースID」部に分かれるという点です。

「プレフィックス」は IPv4 のネットワークアドレス部に相当するもので、その長さは「プレフィックス長」で、ビット長で示します。

IPv4においても、ネットワークアドレスの長さは、CIDR と呼ばれるビット長で示されます。
これは、サブネットマスクの置き換えであり、IPv4のCIDR で /28 と表現されるときのサブネットマスクは 255.255.255.240 になり、IPv4のCIDR で /24 と表現されるときのサブネットマスクは、255.255.255.0 になります。

IPv6 では、アドレスそのものが長いため、サブネットマスクは一切使わず、CIDR の概念を踏襲した「プレフィックス長」を使うことになっています。

図では明示していませんが、上記のインタフェースID部がすべてビット0のものは、「サブネットルータエニーキャストアドレス」として認識され、上記のインタフェースID部で下位7ビット以外がすべてビット1のインタフェースIDは、「グローバルエニーキャストアドレス」として認識され(プレフィックス長が /64 の時だけ、エニーキャストアドレスの扱いが異なっている)ることになっていますので、これらのインタフェースIDは、ユニキャストアドレスとして使用することができません。

2018/06/04(月)IPv6の基礎(6) - 機器設定時に必要と思われる知識

このあたりから徐々に佳境になっていきます。
この後、IPv6を理解するために、2進数や16進数の知識が必要になってきます。
といっても、この知識がある方にとってこの項目は冗長なので、ここは読み飛ばしても差し支えありません。
20180605_2.png


今までさり気なく、IPv6アドレスを例示してきましたが、アルファベットが混じっていることにお気づきかと思います。
これは、「16進数」という情報処理系分野でごく普通に使われている数理方式で、普段我々が使う10進数の0~9の10個の数字に加えて、a ~ f のアルファベット6文字を加えて16進数としているのです。
つまり、16進数において、a ~ f は数字なのです。尚、a ~ f のアルファベットは、大文字でも構わないのですが、現在では、一般的に小文字の使用が強く推奨されています。

16進数が多用される理由は、コンピュータ(情報処理機器)との相性が良いからです。
10進数と2進数・16進数との相互変換を使う場面は、IPv6設定においては多くありません。(たまに必要になる場合があるが。。)

コンピュータは、2進数で内部処理の一切を行いますが、0と1の2つの数字しか使わない(だから2進数)ため、大きな数字を表現しようとすると、必然的に桁数が多くなります。

IPv6 アドレスを2進数で表現すると、128桁(128bit)にもなります。2進数4桁をひとまとめにすると、16進数1桁に上手く収まるので、4分の1になる上に、相互変換もやりやすくなります。

尚、一般的に「1バイト」といえば、16進数2桁,8ビットですが、そうでない場合もあるらしく、通信関係では代わりに「オクテット」がよく用いられます。
同じく、16進数2桁,8ビットが「1オクテット」です。

2018/06/02(土)IPv6の基礎(5) - 機器設定時に必要と思われる知識

前回は、IPv6のアドレス種別について簡単に示してみましたが、
今回はもうちょっと細かい部分を示します。理解しておかないと、この先益々チンプンカンプンになる可能性がありますので、是非一度眺めてください。
20180605_1.png


・ユニキャストアドレス
 一言で「ユニキャストアドレス」と言っても主なものだけでもこれだけの種類があります。
 このうち、3) と 4) は、2018年6月現在では既に廃止されているため、古い機器の設定や古い文献を参照する場合は注意です。
 廃止時点で既にこの世に出回っている機器で廃止された機能を使うことは妨げないことになっていますが、結局、近い将来に新しい機器との相性問題になるため、廃止された機能等は使わないようにするべきです。

 このうち、ユニークローカルユニキャストアドレスは、IPv4における「プライベートIPアドレス」と同じように使用できるアドレス領域として規定されています。
 以前は、似たような目的で「サイトローカルユニキャストアドレス」というのが規定されていたのですが、これは「ユニークローカルユニキャストアドレス」に置き換えることとなっています。

・エニーキャストアドレス
 エニーキャストアドレスは専用のアドレス領域が割り当てられておらず、プレフィックス以外の部分のアドレス表現で、ユニキャストアドレスと区別されるようになっています。
 例示は、よく使われるプレフィックス長 /64 の場合ですが、インタフェースIDの部分(IPv6 アドレスの後ろ半分)が fdff:ffff:ffff:ff80 ~ fdff:ffff:ffff:ffff のアドレスと、0000:0000:0000:0000 はエニーキャストアドレスとして解釈されるので、ユニキャストアドレスとして使用することができません。こういった部分に注意する必要があります。

・マルチキャストアドレス
 IPv6においては、先頭が ff~ で始まるIPアドレスは、マルチキャストアドレスと規定されており、仕様で定められているマルチキャストアドレス以外は、ユーザが自由に割り当てることもできます。
 IPv6は、IPv4にあった「ブロードキャスト」が仕様として存在しないため、代わりに「マルチキャストアドレス」を使うように置き換えされています。
 例示は、必要不可欠で必須的に使われている2つのマルチキャストアドレスを示しています。
 

2018/06/01(金)IPv6の基礎(4) - 機器設定時に必要と思われる知識

久々になります。
今回は、今後の説明の理解に必要な基礎的内容になります。
20180326_3.png


実は、これらは IPv4 にも存在する概念ではありますが、IPv4 には明確に示している既存資料があまり見当たりません。
そう大きな相違は無いのですが、明示してみることにします。

・ユニキャストアドレス
 ネットワーク通信の大半がこの形態です。「ユニキャスト」とは「単一の相手」という意味で、一対一で対向通信を行う目的で、通信端点(通信装置)毎に異なるアドレスを付与します。
「IPアドレス」と単に示す場合、殆どの場合この「ユニキャストアドレス」を指します。

・エニーキャストアドレス
 あまり見慣れないと思いますが、IPv4 では、192.88.99.0/24 が 6to4 と言われるIPv6ネットワークとの相互接続において主に利用されています。
 技術的には IPv4 でも IPv6 でもエニーキャスト自体は可能です。(「IPv4 ではエニーキャストはできない」と書いている諸氏が散見されるが、それは間違い)

 エニーキャストとは、複数のサーバに同じIPアドレスを予め付与しておき、そのアドレスに向けて発信した際に、最も早く応答した相手(通常は対応可能で最も近い相手)と一対一で対向通信を行います。

・マルチキャストアドレス
 「複数相手への同報通信」がマルチキャストです。
 エニーキャストアドレスとマルチキャストアドレスが発信元IPアドレスには絶対になりません。返信が必要な場合、各ホストやルータに割り当てられている本来のユニキャストアドレスを発信元として返信を行います。
 IPv4では後から追加された仕様ということで、あまり普及していませんが、
 IPv6では「ブロードキャスト」の概念に代わり、「マルチキャスト」に置き換わっています。

2018/05/15(火)FreeBSD で大量のファイルを一度に消去する

2018/05/15 24:25 サーバ運営・管理
いつもの自分メモ・・・
今般、サーバのHDD使用残量が変に圧迫していて、不要なファイルを削除する、というメンテナンスを行う必要性が出たのですが、削除対象ファイルがざっと 200万 ~ 300万個あり(計算上)、普通に削除しようとすると、下記のようになります:
20180515_1.png


これは、コマンドラインで '*.jpg' のようにワイルドカード指定すると、処理を始める前段階で、全ての対象ファイル名をリストにするからで、そのリストサイズは現行 FreeBSD の場合、262144 バイトに制限されており、数が多いと収まりきらないためです。そのため「引数のリストが長すぎる」というエラーになるのです。

このような時は、標準入出力をパイプで連結する、という手法をとります。
20180515_2.png


xargs コマンドが肝になる部分で、このコマンドは、標準入力に与えられた長いリストをエラーにならない範囲で分割し、所定のコマンドを実行するものです。

これで、削除には15時間ほどかかりましたが、無事に削除完了できました。

2018/04/13(金)〔テスト〕adiary アップデート 3.13a → 3.14a

2018/04/13 1:21 雑多なトピック
この記事は独り言です。

今まで標準モードで投稿が出来なかったのは、動作環境のせいだとおもって諦めていたが・・・
どうも Perl 5.26 では上手く動作しないというバグだったらしい。

半年前に adiary を 2.xx から 3.13a にアップデートした時にどうしても上手く出来ずに、試行錯誤の途上でデータの一部を誤って壊してしまい....

だったのですが、既に Perl を 5.26 にしていたことと、 「Perl 5.26 では不具合がある」という情報が一切無かったので、「adiary自体を疑う」という発想には及ばなかった自分でした。

まぁ「動作環境のせい」ではありますね。
コメントスパムが酷いものの、制作元で対策が一向にされないもうひとつのブログシステムを adiary にしようかどうか迷っていたところですが、これで踏ん切りつきそうです。

2018/04/10(火)IPv6の基礎(3) - 機器設定時に必要と思われる知識

今回は、IPv6 対応の機器に IPv6 アドレスを設定するときの記述方法です。
20180326_2.png
IPv6 アドレスは記述自体が長くなるため、一定の省略記述ルールが決められています。
しかしながら、必ずしも省略記述をする必要はありません。
むしろ、慣れないうちは敢えて省略記述をしない方がよいのです。

ですが、実際には先駆者によって多用されているので、ここでは省略記述ルールを紹介します。
「省略記述」は全て、数字の'0' (ゼロ) を省略するルールが定義されています。

先ず、「各フィールドの上位桁の'0'は省略可能」です。ただし、'0000' だけは全てを省略せずに'0'を記述します。
次に、「'0000' のフィールドが連続する場合は、該当部分を '::'(ダブルコロン)で省略可能」です。
但し、これが使えるのは1回だけです。

また、'::'(ダブルコロン)は、最も長く省略できる部分に適用すべき、と規定されました。
なので、厳密には上記例の3番目も×です。
2番目の 2001:db8:0:3::1 のみが正解となります。

更に、IPv6 表記でしか設定できない環境下で、IPv4を表記する場合の記述法も定義されています。
現在は、「IPv4 射影アドレス」の記法がよく用いられており、「IPv4 組み込みアドレス」は淘汰方向現在は廃止(使用不可)です。[RFC6890] 参照。
ただし、「IPv4 組み込みアドレス」もたまにみかけるので、知っておくとよいです。