寝る前に,お風呂に入ろうとして台所の給湯器でバケツに熱湯を汲みお風呂に湯を入れていたところ,
重たくてバランスを崩して足と手にぶっかけてしまった…。
あつかった。(しくしく)。結局は朝まで起きていましたが…(笑)
IPv6の実験
*1
をしていたため…。ついでに遊んでみることにする。
$ telnet irc6.kyoto.wide.ad.jp 6667
としてまずはIRCサーバに接続する。その次に,自分のnicknameとuseridなどを入力。
NICK tomochaV6
USER tomocha 0 * :ともちゃ
といれ接続完了。USERの書式は以下の通りです。
USER <username> <hostname> <servername> :<realname>
正常に接続ができると,ircサーバよりmotdが流れてきますので,その後,以下のように入力してチャンネルに参加します。
JOIN #じゃぺーん,#うにっくす
また,JOIN には3つまでチャンネルをカンマ","で区切って並べることが出来ます。
さっそく,チャンネルに入ったら会話をしてみましょう。
会話をするには, PRIVMSG というコマンドを使います。書式は
PRIVMSG <receiver>{,<receiver>} :<message>
です。私たちが発言するには以下のように入力すればよいでしょう。
PRIVMSG #じゃぺーん :こんにちは。
そのようにすれば,発言することが出来るでしょう。ただ,要注意なのは,Windowsなどから発言する場合です。
チャンネル名および2バイト文字等は
JISコードで発言しましょう。
PuTTy等でリモートログインした環境で発言するのは非常に大変です。おそらく,PuTTy等の文字コードをEUCにしているでしょう。
そのような環境の元で発言やチャンネル名をIRCに投げるとそのEUCをJISとして認識しまい本来と異なるチャンネルにJOINしたり文字化けを起こします。
そのため,ある種の対策が必要です。
対策方法(?)としては非常に不便かもしれませんが,一時的にPuTTy等の文字コードを変えるか,もしくはエディタをつかって無理矢理変換をしちゃいましょう。
わたしは,秀丸を使用した方法で試してみました。
まず,秀丸でチャンネル名や2バイト文字を書き,保存する形式にJISを使います。そして,次に閉じて開くを行い,文字コードをEUCにして無理矢理開きます。
そのようにすれば秀丸からは文字化けして表示されますが,そのままクリップボードにコピーを取っちゃいましょう。
そして,PuTTy上に貼り付ければOKです。そうすれば可逆的に送信出来るはずです(笑)
また,IRCにての報告によると,MacOSXではJISにて普通に送信してくれるようです。
後になりましたが,もう一つ注意点があります。先ほど送信はJISで行うと書きましたが,replyはEUC(?)のようです。
受信文字は表示されるが発言文字は化けた状態(もしくは逆)になるので要注意です。
ひとつはIRCクライアントで接続して,もう一つはtelnetにて接続してどのように発言されるかテスト用のチャンネルをつくって遊んでみると良いかもしれません。
あとは定期的にIRCサーバより
PING :irc6.kyoto.wide.ad.jp
というのが流れてくると思いますので適当に以下のように投げましょう。この応答が無いと 「Ping timeout」 で落ちる原因になってしまいます。
PONG 0
とりあえず,こんな感じになっちゃいました。(笑) <
スクリーンキャプチャ
以下
RFC1459日本語和訳より引用
USERメッセージは接続の最初に新しいクライアントのユーザ名,ホスト名,サーバ名,本名を指定するために使います。 これは2つのサーバ間での通信でもIRC上の新しいクライアントの到着を示すのに使用します。USERとNICKの両方を受け取った後にサーバはユーザを登録するからです。
サーバ間ではUSERメッセージはクライアントのニックネームのプレフィックスが必要です。 USERメッセージは直接接続したクライアントから来た時,<hostname>と<servername>をIRCサーバは(安全のために)無視することに注意してください。しかし,これらはサーバ-サーバ通信では使用されます。 新しいユーザを残りのネットワークに紹介する時,USERコマンドで情報を送信する前にNICKメッセージを送信せねばならないことを意味します。
<realneme>のパラメータは最後のパラメータであることに注意してください。これはこのパラメータはスペース文字を含むかもしれないからです。このようにスペースを認識させるためにコロン(':')のプレフィックスを付けねばなりません。
<username>の取得はUSERメッセージにのみ依存しているので,クライアントは偽ることが容易です。そこでサーバには"Indentity Server"の使用が推奨されています。(訳者注:RFC1413を参照) クライアントの接続しているホストが"Identity Server"を使用可能ならば<username>は"Identity Server"からのリプライに従って設定されます。
もっと詳しく知りたい方は、
★ RFC1459日本語和訳 (http://www.haun.org/kent/lib/rfc1459-irc-ja.html)
を参照してください。
*1:
Linux機に複数のIPv6アドレスを当てた場合,どのIPが優先的に使用されるかなど。
それの結果を見るのはIRCを使うと便利なため。
★ 静的にIPv6を振る方法をメモ:
先日設定したルータ箱が有るため,IPv6アドレスは,自動設定機構(rtadvd)により以下のように振られる。
ifconfigの結果は以下の通り
eth0 Link encap:Ethernet HWaddr 00:90:CC:00:54:D3
inet addr:192.168.0.8 Bcast:192.168.0.255 Mask:255.255.255.0
inet6 addr: 3ffe:501:1889:0:290:ccff:fe00:54d3/64 Scope:Global
inet6 addr: fe80::290:ccff:fe00:54d3/10 Scope:Link
つぎに,新しくIPv6のアドレス[3ffe:501:1889::1:1/64]を振ってみることにする。まずはrootになって
# ifconfig eth0 add 3ffe:501:1889::1:1/64
と入力を行えば振られていることが確認出来ると思う。
その次に,自動設定機構により振られたIPアドレスを解放する。
# ifconfig eth0 del 3ffe:501:1889:0:290:ccff:fe00:54d3/64
とすれば解放される。そのあとは,traceroute6や先ほど
私が記述した方法でircに接続するなどで新しく振られたIPが正常に有効になっている確認
*1
する。
確認が出来たら, /etc/network/interfaces あたりに以下のように追記しよう。
iface eth0 inet6 static
address 3ffe:501:1889::1:1
netmask 64
そうして,
# /etc/init.d/networking restart
として完了。/etc/init.d/networking restart したらまた自動設定機構によりIPが割り当ててしまうが…(^^;
★ sshdをIPv6アドレスでLISTENさせる方法。:
そのままのwoodyのsshdではIPv6はLISTENできても,外部から接続は出来ない。
そのために,パッチを当てる必要があるらしいが,面倒なことを私がするわけがない(笑)
ということで,
Debian IPv6 apt-able mirrorsより /etc/apt/sources.list を編集してsshdを入れて終わり。
Woody (Stable)
deb http://debian.fabbione.net/debian-ipv6 woody ipv6
deb-src http://debian.fabbione.net/debian-ipv6 woody ipv6
Sarge (Testing)
deb http://debian.fabbione.net/debian-ipv6 sarge ipv6
deb-src http://debian.fabbione.net/debian-ipv6 sarge ipv6
Sid (Unstable)
deb http://debian.fabbione.net/debian-ipv6 sid ipv6
deb-src http://debian.fabbione.net/debian-ipv6 sid ipv6
手順は以下の通り
# vi /etc/apt/sources.list (ここで対応しているdebのアドレスを入力)
# apt-get update
# apt-get install sshd (新しいバージョンにsshdだけアップデートされる)
これで完了。
★ 参考URL:
・
IPv6 setup memo @ deisui.bug.org
・
Debian GNU/Linux -- Debian IPv6 Project - Setup Instructions
・
LinuxにおけるIPv6の現状
・
inet6-apps
・
Debian IPv6 apt-able mirrors
*1:
別のホストからping6を撃てばよい罠だが…複数IPを当てた場合どうなるかも確認してみたかった。