さくらVPSのサービスが改変になりました!

ネタ的にはちょっと前の話なのですがw
ひとまず自分のためのまとめとしても記載しておきたいと思います。

改変の内容としてはプランの変更が主なものです。
詳細は以下の感じです。
http://www.sakura.ad.jp/news/sakurainfo/newsentry.php?id=620

新しく「2Gプラン」というものができて、
今まであった「512プラン」がなくなるようです。
512プランについては最大30分のネットワーク断を伴い
最低プランの1Gプラン相当に格上げというのが正しいかも。
上げてもらおうかしらw

また移行に伴い優遇プランもあるようです。
2012年3月29日(木)12:00 [正午] ~ 2012年4月20日(金)23:59まで
この期間に乗り換えの申込をする必要があるみたい。

ちょっとめんどくさいけど、1Gプランが最低になるようですし
早めに乗り換えようかな~。って既に遅いけどw

PCに無線LAN設定をしました!

公衆無線LANには普段からお世話になっています。
カフェとか(カフェと言ってもスタバですがw)でネットしてます^^
使ってるPCはWindowsXPです。早く新しくしたい><

今まで何となく設定して動いてましたが、
でも、再度同じ設定をしろと言われると自信なス(w
ということで再設定の時のためにメモ!!

WindowsXPの設定

・まずはFlet’s Spotの契約を済ませます。※使うデバイスのMACも登録!
・登録デバイスを持ってFlet’s Spotに接続できる場所に移動。
・無線LANのアクセスポイントが見える状態にする。
・マイネットワークから「ワイヤレスネットワーク接続」の「プロパティ」選択
・「ワイヤレスネットワーク」タブを選ぶ。
・「FLETS-SPOT」をクリックして「プロパティ」選ぶ。
 ※SSIDの部分にグレーで「FLETS-SPOT」と見えます。(東日本の場合)
・そして以下を設定
 >ネットワーク認証:オープンシステム
 >データ暗号化:WEP
 >ネットワークキー:WEPキー(HEX)を入れる
・「認証」タブを選び「IEEE 802.1Xを有効にする」のチェックを外す。
・「OK」
・ワイヤレスネットワークの設定はこれでOK。

WindowsXPでプロバイダ設定!

・「新しい接続を作成する」を選択。
・「次へ」
・「インターネットに接続する」を選択&「次へ」
・「接続を手動でセットアップする」を選択&「次へ」
・「ユーザ名とパスワードが必要な広帯域接続を使用して接続する」を選択&「次へ」
・ISP名にわかりやすい名前を指定する。(例:Flets with ぷらら)
・プロバイダから渡されたIDとPASSを設定&「次へ」
・「完了」クリック。

そうすると「広帯域」という欄に指定したISP名のアイコンができます♪
ということで、メモ完了~!

Flet’s SPOT接続設定について

普段、自分はNTT東日本のFlet’s Spotを利用しています。
けっこう早いですし家がFlet’sだと月額数百円で利用できて便利♪
あとはモバイルポイントも使っていますがFlet’s Spotが望ましいです^^

Flet’s Spotを利用するにはPC(or スマホ)のMACアドレスの
登録が必要になります。何もそこまでしなくても、、、とも思いますが、
登録しないことには利用できないのでとりあえず登録。

で、最近PCを新調し、その時にMACアドレスも登録変更が必要です。
このMACアドレスの登録変更が大変。。
その備忘録としてやり方記載します。

MACアドレスの変更について

NTTサポートに電話すると「サービス情報サイトでMAC変更できます。」と言われます。
ただ、このサービス情報サイトというのは実は二つあります。。
これが紛らわしい。。

http://flets.com/square/
一つ目が上のNTTのホームページにあるところです。

http://www.flets/
もう一つがこちら。本物?のサービス情報サイトです。
MACアドレス登録変更ができるのはこちらのサイトです。

「よくある質問」にもサービス情報サイトから各種設定変更できる!とあります。
しかしながら、1個目のサービス情報サイトでは何の変更もできません><
実際に電話サポートの人もあまりよくわかっていないようでした。。
何度聞いても「サービス情報サイトで変更できます!」としか言いません。。
結果的にどのサポートの人も下のサービス情報サイトを指しており、
でも実際に自分が見ていた同じ名前の上のサービス情報サイトでした。。

本物のサービス情報サイトに接続するには

では、後者のサービス情報サイトに接続するにはどうしたらいいでしょう??
実はFletsの提供するネットワーク内に、
登録情報の変更や確認をできるサービス情報サイトがあるのです。
Fletsさんの提供する閉域網内にあるのです。。

なので、これは自宅から接続するしかないのです。
これをわかっている人って相当少ないのではないでしょうか?
※サポートの人もわかってませんでしたし(w

まずは自宅インターネット接続環境を軽く説明。
自分はBフレッツマンションタイプで接続し、プロバイダはヤフーBBです。

家にはPCが2台あり、フレッツモデムに小さいルータを接続しています。
そのルータはDHCPの役割もしており、2台のPCにアドレスを配るという感じです。
ヤフーBBの接続設定はこのルータに設定しています。

ルータには「WAN側設定」という項目の所にヤフーBBの設定がしてあります。

user : xxxxxx@sbb.ne.jp
pass : 指定のパスワード

つまり!
このプロバイダの所の設定を正しい設定に変更しないと
Flet’sサポートさん達が口をそろえて言う
サービス情報サイトには接続できないのです><

このサイトはフレッツ閉域網内にあるのでヤフーBBに繋いでいたら
接続できないようになっているのです!! おのれフレッツ!!

ということでこの自宅のルータのWAN側設定を以下のように変更。

user : guest@flets
pass : guest

そうすると一時的にフレッツ網内に接続できます。
でも当然プロバイダ契約をしていないので、インターネットには接続できません。
でもフレッツ網内の「サービス情報サイト」にはこれで繋がるようになります。

これでめでたくサービス情報サイトに接続できました><
ほんと、、いろいろなところをたらい回しにされて2時間くらいかかりました。。
でも電話でMACアドレス修正を依頼した場合には2100円かかり
更には時間もかかってしまうという二重苦。。

正しいサービス情報サイトに接続さえできてしまえば、
後は必要な情報の更新はとても簡単。

ということで無事にFlets Spotの接続MACアドレスを修正できました。
いやー。なかなか苦労しました(w

vsftpdを設定します!

前回はyumでvsftpdのインストールしました♪
vsftpdの設定したいと思います(>Д<)ゝ”

ftp基礎

ここでちょっとだけftp設定における基礎ちしきを。

■転送モード
ftpのデータ転送モードにはバイナリモードとASCIIモードがあります。
バイナリモードはデータに手を加えずそのまま転送します。
ASCIIモードはOSによって異なる改行コードを自動修正してくれます。

これらの使い分けはズバリ!
テキストエディタで見るデータはASCIIモード。
それ以外は全てバイナリモード。
コレです^^)v

ASCIIモードはデータ転送する際、改行コードを
正しく置換してくれるモードなので改行コードが
関わらないときは使う必要はないのです。
むしろ、それ以外は余計な置換は必要ないので
バイナリモードがいいですね。

■コネクションのタイプ
ftpはデータ送信用のコネクションにTCPポート20番を使い、
コントロール用のTCPポート21番を使ってセッションを張ります。
/etc/servicesとか見てみるとわかりやすいです^^

ftp-data        20/tcp
ftp-data        20/udp
# 21 is registered to ftp, but also used by fsp
ftp             21/tcp
ftp             21/udp          fsp fspd

ftpセッションの順番としては、
まずはコントロール用セッション(TCP/21)が張られ、
続いてデータ用セッション(TCP/20)が張られます。

コントロールセッションが張れない場合は問題外で
ftpサーバには接続できません。これはどうしようもないパターン。
ただ、コントロールセッションが確立後、データセッションが張られる時、
サーバ側からセッション張るか、クライアント側からセッション張るか。
というのを選択することができます。

これらの違いはアクティブftp、パッシブftpという言われ方をします。
あくまでftpサーバを中心に見ての表現なのに注意が必要。
アクティブftpはftpサーバからアクティブにデータセッションを張ります。
逆にパッシブftpの場合はクライアントからftpサーバに対して
データセッションを張ります。
肉食系ftpサーバがアクティブで、草食系ftpサーバがパッシブです(笑

「どっちからでもエエヤンケ!」
と思われることもあるかもです。自分はそう思いました(笑
データ転送という観点から見たらどちらでもいいかもしれません。
この違いはファイヤウォールの制限によるものです。

ftpサーバがいるセグメントにファイヤウォールがあり、
TCP/20番に対してどのような制限があるか?ということです。
ファイヤウォールはTCPのSYNパケットを見張り、
接続できる/できない をコントロールする場合が多いです。
場合によってはftpクライアント側のセグメントの
ファイヤウォール設定による場合もあるかもですね。

アクティブ/パッシブftpの違いを一言で!
「データ転送用セッションをどちら側から張るか?」
ということの違いによるもです。
パッシブとアクティブはftpサーバ中心に見た違いです。

設定のポリシーを決めてみる

前置き長すぎた><

今回はftpでデータ転送する訳ですが、どんなポリシーでデータ転送を
許可(拒否)するかを決めてやると、何を設定するか明確になります。
データはホームページ作成ソフトで作ったページを転送するためです。

なので、web公開されいるディレクトリ以外には
データを置けないように設定します。

■ログインユーザ
→ ローカルユーザのみ(しかも限定)

■データ置き場所
→Apacheの公開ディレクトリ

■権限
→書き込み+削除

■ログ
→ほどほどに出力+ローテーション設定

上記以外の作業は基本的にできないくても大丈夫。
というか、できないように制限をかけるようにします。

ログインしたユーザにより、Apache公開ディレクトリを
ディレクトリトップにさせたい場合にはちょっとややこし。
まずはftp用ユーザを作り、そのホームディレクトリに
公開するページを置き、Apacheディレクトリにそこを指定。

みたいなことをやらないとやりたいことを叶えることができない。
やってやれなくはないが、メンドイ!!(w

ということで用件を修正。
■ログインユーザ
→ローカルユーザ

■データ置き場
→制限なし

こんな感じに変えて設定してみました。
ログインできるのは基本的にローカルユーザのみ。
ftpとかアプリケーション用のアカウントはログインできず、
基本的には人に紐付くユーザのみ。

データを置く場所のパーミッションをちょっと広めに与えて、
そこにデータを転送するようにしました。

ということで結局は以下をNOにしたのみ。。。

anonymous_enable=NO

それだけデフォルトの使い方から外れてないってことすねf^^;
ログローテーションの設定につていも /etc/logrotate.d/vsftpd.log
ここにyumさんがファイルを置いてくれているので
特に設定を追加する必要がないという。。

結局yumすげー! という結果(w
あとはvsftpdを起動してオッケー!

$ sudo service vsftpd start
Starting vsftpd for vsftpd:          [  OK  ]

yumめ。
ことごとく便利なヤツ。

作業まとめ

(1) yumでvsftpdをインストール

$ sudo yum install vsftpd

(2) vsftpd設定ファイルの編集

$ sudo vim /etc/vsftpd/vsftpd.conf
:
# anonymous_enable=YES ←コメントアウト
anonymous_enable=NO ← NOに変更
:

(3) vsftpd起動

$ sudo service vsftpd start

(4) vsftpd起動確認

$ netstat -a | grep ftp
ポートのListenを確認
$ ps ax | grep vsftpd
デーモンが動いているのを確認

vsftpdをyumでインストール

データ転送をするにはやはりftpが必要!?
ということでftpサーバを導入することにしました^^

やりたいこととしてはホームページビルダーとか、
alphaEDITとかで作ったページをアップすることです!

yumで入るftpサーバを探す

ひとまずyumで探してみます。

$ yum list | grep ftp
ftp.x86_64           0.17-35.el5            installed
lftp.x86_64          3.7.11-4.el5_5.3       installed
gftp.x86_64          1:2.0.18-3.2.2         base
tftp.x86_64          0.49-2.el5.centos      base
tftp-server.x86_64   0.49-2.el5.centos      base
vsftpd.x86_64        2.0.5-21.el5           base

DAGリポジトリも見てるともうちょっとたくさん出てきました。

$ yum list --enablerepo=dag | grep ftp | grep dag
atftp.x86_64                  0.7-6.el5.rf                dag
atftp-server.x86_64           0.7-6.el5.rf                dag
ftpproxy.x86_64               1.2.3-2.2.el5.rf            dag
fuse-curlftpfs.x86_64         0.9.1-1.el5.rf              dag
libobexftp.x86_64             0.22-1.el5.rf               dag
libobexftp-devel.x86_64       0.22-1.el5.rf               dag
obexftp.x86_64                0.22-1.el5.rf               dag
perl-URI-sftp.noarch          0.01-1.el5.rf               dag
pftp.x86_64                   1.1.6-1.2.el5.rf            dag
proftpd.x86_64                1.3.3c-1.el5.rf             dag
proftpd-devel.x86_64          1.3.3c-1.el5.rf             dag
proftpd-ldap.x86_64           1.3.3c-1.el5.rf             dag
proftpd-mysql.x86_64          1.3.3c-1.el5.rf             dag
proftpd-postgresql.x86_64     1.3.3c-1.el5.rf             dag
pure-ftpd.x86_64              1.0.21-1.el5.rf             dag
pure-ftpd-selinux.x86_64      1.0.21-1.el5.rf             dag
python-obexftp.x86_64         0.22-1.el5.rf               dag
tnftp.x86_64                  0.0.20050625-1.2.el5.rf     dag

ftpクライアントやライブラリも多くあるようですねー。
いろいろなサイトも検索結果も考慮してみると
ftpサーバとしては以下かな。

  • vsftpd
  • proftpd

Dagレポジトリにproftpdがありますが、
baseにvsftpdがあるのを見ると、こちらが標準のようです。
ということで、vsftpdを入れてみることにしました!

vsftpdインストール&設定(via yum)

インストールはいつも通りyum様であっさり(w

$ sudo yum install vsftpd

ひとまず、起動スクリプトを覗いてみると
設定ファイルが書かれていました^^)b

$ less /etc/rc.d/init.d/vsftpd
---snip---
# processname: vsftpd
# config: /etc/vsftpd/vsftpd.conf
---snip---

ということで、次はvsftpd設定に移ります^^

vsftpd設定を確認(/etc/vsftpd/vsftpd.conf)

さっそく設定ファイルを見てみます。
たくさんあるコメント行を取り除いてみるとこんな感じ。

$ sudo grep -v "#" /etc/vsftpd/vsftpd.conf
anonymous_enable=YES
local_enable=YES
write_enable=YES
local_umask=022
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
xferlog_std_format=YES
listen=YES
pam_service_name=vsftpd
userlist_enable=YES
tcp_wrappers=YES

気になるのはanonymous_enable=YESの部分。
ここをNOに変更しました。後はひとまずこのまま。

vsftpd起動を確認

このまま上げっぱなしにするとヨロシクない!
vsftpdにはssl設定とかいろいろと設定できるようだが、
ひとまず起動確認だけやっておきます。

$ sudo service vsftpd status
vsftpd is stopped
$ sudo service vsftpd start
Starting vsftpd for vsftpd:           [  OK  ]
これで起動完了!

LISTENしているか確認。
問題なく起動しているみたい^^
ひとまず止めます。

$ netstat -an
---snip---
tcp    0    0 0.0.0.0:21        0.0.0.0:*         LISTEN
---snip---
$ sudo service vsftpd stop
Shutting down vsftpd:                 [  OK  ]

起動確認までできたので、一端終了。
あとは正しく設定を入れて起動!

基本的には自分しか使わないftpサーバにするので、
ログインとかその辺りの設定も厳しく設定。

続きはまた今度!

1個のさくらVPSの上にApacheのVirtualHostで複数サイトを構築する設定

1個のwebサーバで複数のサイトを立ち上げたい!!
サーバはさくらVPS1個なので、その上のApacheで複数のサイトを
立ち上げるにはApacheにVirtualHost設定が必要です。

VirtualHostのパターン

ApacheでVirtualHostを使う場合、
IP、ポート、名前で別のホストを装うことができます。

わかりやすいのはIP分割でしょうか。
1個のサーバにIPを何個も設定して、どのIPに接続しにくるかにより、
どのページを返すかDocumentRoot毎に分けられます。

次にわかりやすいのはポートでしょう。
普通httpはtpc/80番ポートを使うのですが、例えばtcp/8080番などを使い
アクセスされるポートによりコンテンツを出し分ける感じです。

最後に、名前毎かな。
個人サーバ等はこれが便利かなと思う。
IPは1個だけど、DNSさえ登録してしまえば、
その名前を使って複数のサイトを立ち上げられます。

例えばwww.exmple1.comとwww.example2.comには
DNS的に同じIPが設定されています。
でも、httpアクセスの中のホストヘッダを見分けて、
コンテンツを出し分けるとう方法です。
いやぁ~ 便利♪

これを名前ベースのバーチャルホスティングというらしい。(たぶんw)

名前ベースのVirtualHost

ということで、名前ベースでコンテンツを出し分ける設定をします。

# Listenポートを設定(一般的に80です)
Listen 80
# 全てのIPの80番で名前ベースのVirtualHost宣言!
NameVirtualHost *:80
# www.example1.comでアクセスしにきたクライアントに返すコンテンツ
<VirtualHost *:80>
DocumentRoot /www/example1
ServerName www.example1.com
# 他ディレクティブを書き換え
</VirtualHost>
# www.example2.comでアクセスしにきたクライアントに返すコンテンツ
<VirtualHost *:80>
DocumentRoot /www/example2
ServerName www.example2.com
# 他ディレクティブ書き換え
</VirtualHost>

こんな感じです。
この設定をしてコンフィグチェックとかして、
あとはApache再起動してやればオッケー!

$ sudo service httpd configtest
Syntax OK  ←OKでました!
$ sudo service httpd restart

(1) http://www.example1.com/
(2) http://www.exapmle2.com/

(1)と(2)にアクセスした場合には見られるコンテンツを
出し分けることができるようになりました! すばらしぃ~♪

まとめ

http://httpd.apache.org/docs/2.2/ja/vhosts/examples.html
こちらにApache VirtualHostの設定が載っています。
こちらも、いや、むしろこちらを参考に!w

名前ベースのVirtualHostというのがやはりお勧め。
さくらVPSを普通に頼むと当然1個のIPなので、
そのリソースだけでオッケーだからです。

あとはDNSの設定が必要だけど、それはどんな場合でも、
新しいドメインの場合は必要だから仕方ない。
ドメイン名はどの種類のVirtualHostでも同じだから
ここは仕方ないですね~^^

よっしゃー!

wordpressのページにお問合わせフォームを作る

webページによくあるお問合わせフォームを作りたいです!
管理人にweb経由で連絡をもらえるので、いいですよね^^
日本語文字化けの少ないと噂のContact Form 7を入れます。

Contact Form 7インストール

普通に設定する分には特に問題ないです。
wordpressのプラグインのインストールから「Contact Form 7」を選択。
流れに従い入れてあげます。

ただ、ちょっとだけやりたかったのが、人間確認のために
画像の中に書かれている文字を入力させてメールを送るようにしました。
これを入れておけば変なスクリプトでメール送るのは大変です^^)b
f:id:kuchida123:20111116002019g:image:w360

これを入れるためにはGD(画像系ライブラリ)とFreeType(フォント)
をサーバに入れてやる必要があります。

しかもそれらをPHPから使えるようにしてやる必要があるわけです。
ここにちょっとだけ手間取りました。まぁ~ 久々だったし!(言い訳w)

PHPでGDとFreeTypeを使う

まずはFreeTypeを入れてやります。
もちろんここはyum先生にお願いします(w

$ sudo yum install freetype
ズラズラ

FreeTypeはこれでオッケーです。

続いてphp53のgdです。
普通のlibgdでないのがミソ。って、、当然なのですが
これに気付くのにちょっと時間かかりましたf^^;

$ sudo yum install php53-gd
ズラズラ

ここまで来るともう大丈夫!
最後はphpinfoでちゃんと動くか確認です。
f:id:kuchida123:20111116002621g:image:w360

こうやって文章にしてみると、、、、
とてもアッサリに見えますよね。やっぱり。。
ここまでくると、php53がgd(&FreeType)を認識するので
Contact Form 7中のCaptchaがエラーを出力しなくなります。
ここまできたらあとちょっと!!

Contact Form 7でCaptchaする

上に貼ったキャプチャのように画像の中に文字を入れて
人間確認できるようになるまであと少し。

自分はこんな感じで作りました。

<p>画像内の文字を入力してください<br />
[captchac captcha-271 size:m]
[captchar captcha-271]
</p>

こんな文言をよくネットで見る気がします。
みんなこうやってやってたのねぇ~w
まぁ、もっと高度なの見た事ある気もしますが、
ちょっと使う分には十分すぎるかな♪

まとめ

久々にyum使いました。
改めてコマンド1発でいろいろ解決するyumに感動!
そして、ファイルIncludeで特に設定が必要ないファイルの
作りにも感動しておりました。その割りに時間はかかったけど(w

そして一歩先行く?web機能を提供することができました♪

文字コード復習(ASCII)

文字コードについて復習しました。
あまり好きではない文字コードですが、覚えておいて損ない。
ということで復習がてら書き残しておきます。

ASCII文字セット

ASCIIはAmerican Standard Code for Information Interchangeの略。
ASCII文字セットは4つのグループに分かれる。

◆制御文字グループ($00 – $1F)
アルファベット等の記号を表示するのではなく、
プリンタやディスプレイに対する制御用。
例えば、行頭に戻るキャリッジリターン、
カーソルを1行下に移動させるラインフィード。
カーソルを1文字分左に移動するバックスペースなど。

◆句読文字・特殊文字・数字グループ
ドット、ピリオド、アットマークなど。
あとはスペースや数字も。

◆大文字英字+特殊文字
A~Zまで。残りは特殊文字。

◆小文字英字+特殊文字
a~zまで。特殊文字もある。deleteもここ。

ASCII雑学

ASCIIは標準ではあります。アルファベットはどのマシン上でも
大概同じく表現できることが多いですが、制御文字はそうとは限らない。

共通にサポートされているのはバックスペース、タブ、CR、LF。
この4個くらい。

これらを手で変換しようとおもうと、とってもストレスw
でも今では変換ソフトやライブラリがそろっているので
そこまで意識しなくても大抵オッケー。
簡単なテキストエディタ等で変換は可能だったりします。

プチまとめ

Wikipedia – ASCII
詳細のASCII表はWikipediaを!
というまとめはちょっとヒドイw

今ではほぼ気にすることなく文字コードを扱えるようになりました。
XML等を多く使う今ではutf8が主流だったりするのでしょうね。
アルファベットと数字くらいを使ってプログラミングをする場合は
文字コードを意識する場面は少ないですが、やはりutf8とか
出てくると気になってきますよね。

utf8を使ってプログラミングをする場合、
何パターンか試してみて、うまくいったパターンを採用。
というのが多いような気がします。

この辺りをもうちょっと理解して、うまくプログラミングできると
ちょっとカッコイイ(≧∇≦)b

IPv6のトンネル方式の調査 – ISATAP

前回からちょっと時間が空いてしました><
続いてIPv6に接続するためのISATAPについて
調べたことを書きたいと思います♪

ISATAP (Intra-Site Automatic Tunnel Addressing Protocol)

ISATAPはIntra-Site Automatic Tunnel Addressing Protocolの略です。
何となく直訳すると「イントラネットでも自動トンネルしてくれる
トンネリングプロトコル。」といったとことでしょうか。

つまり、サーバがIPv4の、しかもプライベートアドレス※1しか
持っていない場合でもIPv6接続可能ということになります。
ISATAPルータがIPv4グローバルと、IPv6接続があれば
このプロトコルは利用可能ということですね~^^

◆ISATAP基礎

サーバがIPv4プライベートだけでも、ルータがISATAP対応していれば
ルータ経由でIPv6通信可能。ということです。

ISATAP動作詳細

ISATAPはルータがISATAP対応しているかどうかがキモです。
また、ルータが128bitsあるIPv6アドレスをどのように使うのかも
抑えておいたほうがよさげです!!

まず、128bitsある先頭64bitsはISATAPルータによって決まります。

64bits       32bits   32bits
+-----------------+--------+--------+
|       (1)       |  (2)   |  (3)   |
+-----------------+--------+--------+
(1) - ISATAPルータが決定
(2) - ISATAP識別子(0000:5efeで固定)
(3) - サーバのv4アドレスを16進に変換したもの

◆(1) プレフィックス
ルーティングは上位64bitsが関わってきて、
これはルータにお任せでオッケー。

◆(2) ISATAP識別子
識別子というくらいで0000:5efeの固定値です^^

◆(3) サーバv4アドレス
サーバのIPv4アドレスを埋め込みます。
例えば、192.168.10.1とかだと以下になります。

$ printf "%02x%02x:%02x%02x\n" 192 168 10 1
c0a8:0a01

さくらインターネットのprintfを使って計算♪

実際に導入するには!?

ISATAPを使ってIPv6を導入するにはIPv4/v6の
ネットワークに接続しているルータが必要になります。
これを準備するのはなかなかハードルが高そう。。

ISPなどでルータ運用している場合には
こういう構成をとることは可能なのでしょうが、
さくらVPSを利用してるだけの状態だと
なかなか準備が難しい環境かもですね。

ISATAP使う何かいい方法あるのかなぁ~。
ないよなぁ。。

まとめっ!!

ISATAPはルータがIPv4&IPv6のグローバルアドレスを持っていれば、
その配下のサーバはIPv4アドレスがプライベートでもIPv6ネットワークに
接続することが可能になるプロトコルです。

ただ、このISATAPルータを自前で準備するのはなかなか大変そう。。
ということでルータ運用している人向けで、さくらVPSユーザには
ちょっと敷居の高い技術であるようです。

何かいい方法ある人は是非教えてくださいっ!!

注釈メモと参考情報

※1 : 192.168.xxx.xxx や、10.0.xxx.xxx のような
インターネットに載らない社内ネットワークとかで使うアドレス。

■IPv4網にIPv6を通す 自動設定のトンネル技術(下)
http://itpro.nikkeibp.co.jp/free/NBY/ITARTICLE/20030801/1/?rt=nocnt

IPv6のトンネル方式の調査 – 6to4

さくらVPSでIPv6を使いたい!!
ということで、IPv6調査をスタートしました(゚∀゚ )

まずは調査からスタート。
IPv6トンネル方式の一つ6to4を調べました。

6to4基礎

6to4はルータ間の自動トンネリング技術のようです。
さくらVPSのCentosで設定できるような。。
って、Centosをソフトルータと考えるのですね(w

IPv4のグローバルを1個以上持っているルータに対し、
ユニークなIPv6アドレスプリフィクスを割り当てることで
IPv4ネットワークを通じてカプセル化したIPv6パケットを転送します。

IPv4アドレスはご存知32bitsです。そしてIPv6は128bits。
IPv4アドレスに対して、IPv6は十分に長いので、
IPv6アドレスの一部にIPv4アドレスは十分埋まります。

しかも、6to4はIPv6のPrefix(先頭64bits内)に埋め込むので
ルーティングにもそのまま役立ってしまうという感じ。

埋め込みかたは以下!!

■あるIPv6 Prefixがあります
xxxx:xxxx:xxxx::/64
~~~~ <- これが16bits
■6to4の場合
2002:xxxx:xxxx::/64
~~~~+~~~~ <- 32bits = IPv4を埋め込む

このPrefixを使ってルータ間でIPv6をするという訳ですな。
細かいところはさておき、概要はなんとなくさらえた気になっています♪

IPv6小技

さくらインターネット研究所ページを見ていてみつけた小技があります。
これまた、なるほど~っと思ってしまう技?というかコマンドでした。
それはprintfをコマンドラインで使うというやり方です!

printfってC言語でプログラム書くときか、
その他スクリプトでもフォーマットを細かく指定したいときに
使うくらいであまりコマンドラインで使うというイメージなかったのですが、
これまたうまくptintfを使っていました^^

用途はIPv4アドレスから6to4のPrefixを計算する際に使うのですが、
printfのフォーマット指定で値を出力させる感じです。

見たほうが早いかも。

$ printf "2002:%02x%02x:%02x%02x::/48\n" 192 168 10 1
2002:c0a8:0a01::/48  ←コレです!
192.168.10.1 というIPv4が見事に16進にっ!
検算してみるとぉー
192 ... 1100 0000 ... c0
168 ... 1010 1000 ... a8
10  ... 0000 1010 ... 0a
1   ... 0000 0001 ... 01
ま、当然あってます(w

これは便利!
他のモノにも応用できそうですし、スバラシイアイデアです(゚∀゚ )

参考ページ

■Tokyo6to4 Project
http://www.tokyo6to4.net/index.php/%E3%83%A1%E3%82%A4%E3%83%B3%E3%83%9A%E3%83%BC%E3%82%B8

■さくらインターネット研究所 6to4によるIPv6接続(Linux編)
http://research.sakura.ad.jp/2010/12/27/tunnel-6to4-linux/