IPv4/IPv6メーターをつけてみました

右下のウィジェットにインテックシステム研究所さんIPv4/IPv6メーターIPv4枯渇時計をつけてみました。IPv6の普及具合とIPv4のX-Dayが目に見える・・・・かもしれない。

インテックシステム研究所さんでは他にも、IPv4/IPv6 checkerなんてものもあって、真ん中のチェックボタンを押すとアクセスしているIPv4/IPv6アドレスを表示してくれます。

Internet Metricsというページでは、IPv4/v6関連のネットワーク計測結果が見れるのですが、色々興味深いです。例えば、

  • IPv4/IPv6の遅延比較を全体と日本で見比べてみると、全体ではv4/v6どちらが遅いということははっきりしないのだが、日本では明らかにv6の方が遅延が大きいことがわかる。枯渇枯渇と叫ばれていても、海外と比較して実態として準備が進んでいないことを表しているのでしょう。
  • OS別アクセス比率IPv4というページでは、今なおWindowsXPの比率が40%くらいを占めているのがわかる。さらによく見ると、小刻みにヒゲ状のグラフになっていて、これは週末になるとWindowsXPの比率が下がることを示していると思う。つまり、パーソナルユースではWindows7などへの置き換えが進んでいるのだけど、ビジネスユースでは遅れているということなのでしょう。
  • OS別アクセス比率IPv6では今年に入って上記のヒゲ状のものが見えます。週末にIPv6にトライする人が増えたということでしょうかね?

などなど。

IPv6を使う他の方法(Debian+gogoNET その2)・・・失敗事例

gogoNETを使う debian PC の準備ができたので、実際にインストールを行ってみる。

インストールしてみる。(これはやってはいけない!)

# apt-get install tspc
パッケージリストを読み込んでいます… 完了
依存関係ツリーを作成しています
状態情報を読み取っています… 完了
以下の特別パッケージがインストールされます:
radvd
以下のパッケージが新たにインストールされます:
radvd tspc
アップグレード: 0 個、新規インストール: 2 個、削除: 0 個、保留: 12 個。
104kB のアーカイブを取得する必要があります。
この操作後に追加で 438kB のディスク容量が消費されます。
続行しますか [Y/n]?
取得:1 http://ftp.jaist.ac.jp lenny/main radvd 1:1.1-3 [62.1kB]
取得:2 http://ftp.jaist.ac.jp lenny/main tspc 2.1.1-6.1 [42.0kB]
104kB を 0s で取得しました (275kB/s)
未選択パッケージ radvd を選択しています。
(データベースを読み込んでいます … 現在 120112 個のファイルとディレクトリがインストールされています。)
(…/radvd_1%3a1.1-3_i386.deb から) radvd を展開しています…
未選択パッケージ tspc を選択しています。
(…/tspc_2.1.1-6.1_i386.deb から) tspc を展開しています…
man-db のトリガを処理しています …
radvd (1:1.1-3) を設定しています …
Starting radvd:
* /etc/radvd.conf does not exist or is empty.
* See /usr/share/doc/radvd/README.Debian
* radvd will *not* be started.
tspc (2.1.1-6.1) を設定しています …
Setting up IPv6 tunnel: tspGetCapabilities error 2: SOCKET_ERROR
if you are using udp, there is probably no udp listener at anon.freenet6.net

All transports failed, quitting

Error is 2: SOCKET_ERROR
TSP session done
invoke-rc.d: initscript tspc, action “start” failed.
dpkg: tspc の処理中にエラーが発生しました (–configure):
サブプロセス post-installation script はエラー終了ステータス 1 を返しました
以下のパッケージの処理中にエラーが発生しました:
tspc
E: Sub-process /usr/bin/dpkg returned an error code (1)
#

となって、エラーになってしまった。

調べてみると、apt-get でインストールできるクライアントは非常に古いものらしく、NGなのだそうだ。

で、

# apt-get purge tspc

とやってもエラーになってうまくいかず、嵌ってしまった・・・。

さらに調べると、

# rm /etc/init.d/tspc

としてから

# apt-get purge tspc

とすれば削除できるとのこと。

これだと依存関係で入った radvd が削除されないので、併せて、

# apt-get purge radvd

で削除して戻した。

参考:

IPv6を使う他の方法(Debian+gogoNET その1)

WindowsでのTeredo、Ubuntu環境でのMiredoによるIPv6接続を試してみましたが、他にgogoNET(旧Freenet6)というIPv6トンネルサービスがあるようですので、かつてインストールしたDebian(でも最近は電源を落としたままだった)上で試してみることにしました。調べてみると(旧Freenet6時代の話しか見えないのですが)固定のIPv6アドレスが取れるようなのです。

利用するにはまず gogonet.gogo6.com にアクセスし、サインアップします。姓名、メールアドレスと誕生日、パスワードに続いて、居住国や都市、アンケートなどに答えるとサインアップできます。

次に、実際に設定を行う前に、今回使用するDebianマシンもIPv6経由で外に晒されることになりますから、Firewall(iptablesベース)を設定します。今回は簡単にWebminで設定し、デフォルトで全ての接続を破棄し、必要なポートだけ開けることにしました。

受信の設定は以下の通りとしました。DNS、ssh、ident、http、https、webminだけを利用可能な設定です。webminは実際にはIPv4のローカルアドレス(=プライベートアドレス)からしか接続を受け付けないようにしてあります。

許可 : もし 着信インターフェースが eth0 でない
許可 : もし プロトコルが TCP である 且つ TCPフラグ ACK が ACK である
許可 : もし 接続の状態が ESTABLISHED である
許可 : もし 接続の状態が RELATED である
許可 : もし プロトコルが UDP である 且つ 宛先ポートが 1024:65535 である 且つ 発信元ポートが 53 である
許可 : もし プロトコルが ICMP である 且つ ICMPタイプが 0 である
許可 : もし プロトコルが ICMP である 且つ ICMPタイプが 3 である
許可 : もし プロトコルが ICMP である 且つ ICMPタイプが 4 である
許可 : もし プロトコルが ICMP である 且つ ICMPタイプが 11 である
許可 : もし プロトコルが ICMP である 且つ ICMPタイプが 12 である
許可 : もし プロトコルが TCP である 且つ 宛先ポートが 22 である
許可 : もし プロトコルが TCP である 且つ 宛先ポートが 113 である
許可 : もし プロトコルが TCP である 且つ 宛先ポートが 80 である 且つ 接続の状態が NEW である
許可 : もし プロトコルが TCP である 且つ 宛先ポートが 443 である 且つ 接続の状態が NEW である
許可 : もし プロトコルが TCP である 且つ 宛先ポートが 10000 である 且つ 接続の状態が NEW である

送信の設定は以下の通りとしました。DNS、http(apt-getのため)のみ開けてあります。

許可 : もし 発信インタフェースが eth0 でない
許可 : もし 接続の状態が ESTABLISHED である
許可 : もし 接続の状態が RELATED である
許可 : もし プロトコルが ICMP である 且つ ICMPタイプが echo-reply である
許可 : もし プロトコルが ICMP である 且つ ICMPタイプが echo-request である
許可 : もし プロトコルが TCP である 且つ 宛先ポートが 80 である 且つ 接続の状態が NEW である
許可 : もし プロトコルが TCP である 且つ 宛先ポートが 53 である 且つ 接続の状態が NEW である
許可 : もし プロトコルが UDP である 且つ 宛先ポートが 53 である
許可 : もし プロトコルが UDP である 且つ 宛先ポートが 67 である

とりあえず、外部からNATを越えてローカル(正確には専用セグメントですが)のIPv6のhttpサーバにアクセスすることを目標にします。

~~続く~~

Linux版TrueCryptを導入する

Windowsで使っている暗号化した外付けHDDをLinux(Ubuntu)からもアクセスしたいので、TrueCryptをUbuntuにインストールすることにしてみました。

まず、www.truecrypt.org からStandard – 32-bit(x86) を選択して truecrypt-7.0a-linux-x86.tar.gz をダウンロードします。

ダウンロードしたtar.gzを展開すると、シェルアーカイブ形式のファイルが一つ出てきます。これをコマンドラインから

$ ./truecrypt-7.0a-setup-x86

として、シェルアーカイブを起動します。すると、ライセンスの確認や、アンインストールの方法(’truecrypt-uninstall.sh’ を使うとのこと)などが表示されて、管理者パスワードの入力要求に答えると、あっという間に終わります。(あっけない感じです)

インストール完了後は「アプリケーション」→「アクセサリ」→「TrueCrypt」で起動できるようになります。操作は基本的にWindowsと同じですが、Linuxはドライブレターがないので、そこは異なります。コンテナファイルを開く際に「Option」を選ぶとマウントポイントを指定できるので、適当なディレクトリを指定してやるとそこにマウントできます。外付けHDDはNTFSでフォーマットしてあるので、ReadOnlyでマウントしました。

Ubuntuのセキュリティチェックをする

UbuntuをはじめとしたLinuxの場合、Kasperskyやノートンのような統合的なセキュリティ対策アプリケーションがないので、個別に対策しなくてはなりません。

ウイルス対策についてはKlamAV(ClamAVのフロントエンド)でやっていますが、セキュリティホールについてはどうするべきかこれまでよくわかりませんでした。

で、ファイアウォールに関してはGufwでiptablesベースの対応ができることがわかりました。

次にすでに仕込まれてしまったrootkitなどについてどうするのか調べていたところ、chrootkitとrkhunterというrootkit検出ツールがUbuntuではSynapticパッケージマネージャから利用可能なことがわかりました。

で、まずはインストールします。例によって Synaptic から検索キーワードに「rootkit」と入れると、両方とも出てくるのでインストール指定します。(その依存関係解決の過程で unhide も勝手に選択されます)

インストールはサクッと終わります。

早速、chrootkit を使ってチェックしてみます。

$ sudo chrootkit

で主要なコマンドが改変されていないか、既知のルートキットの痕跡や怪しいファイルがないかをチェックしてくれます。

次に、rkhunter を使ってチェックしてみます。

$ sudo rkhunter -c

で主要なコマンドの改変、既知のルートキットやマルウェアの痕跡、既知のバックドアに使われるポート、アカウントのチェック、システム設定ファイル、その他のファイルシステムのチェックをしてくれます。

自分のところでは、最後のファイルシステムのチェックで /dev と隠しファイル/ディレクトリで Warning がでました。詳細を /var/log/rkhunter.log で確認すると、

[17:32:05] Performing filesystem checks
[17:32:05] Info: Starting test name ‘filesystem’
[17:32:05] Info: SCAN_MODE_DEV set to ‘THOROUGH’
[17:32:05]   Checking /dev for suspicious file types         [ Warning ]
[17:32:05] Warning: Suspicious file types found in /dev:
[17:32:05]          /dev/shm/pulse-shm-4192393294: data
[17:32:05]          /dev/shm/pulse-shm-1822237287: data
[17:32:05]          /dev/shm/pulse-shm-3897017937: data
[17:32:05]          /dev/shm/ecryptfs-xxx-Private: ASCII text
[17:32:05]          /dev/shm/pulse-shm-2720418268: data
[17:32:06]   Checking for hidden files and directories       [ Warning ]
[17:32:06] Warning: Hidden directory found: /etc/.java
[17:32:06] Warning: Hidden directory found: /dev/.udev
[17:32:06] Warning: Hidden directory found: /dev/.initramfs

となっていました。で、/dev/shm はいわゆるRAMディスクで、再起動の度に消えてしまいますので、問題ではないように思えます。後の3つは調べてもちょっと調べたくらいでは今ひとつわかりません。ただ、それほど危ない感じでもないので様子をみることにします。

Ubuntuでシステム時計が狂うのを直す

UbuntuをWindowsとのデュアルブートやUSBブートで使っていると気づくのですが、UbuntuはシステムのRTC(リアルタイムクロック)をUTC(世界標準時)と決め打ちでインストールしてしまうようで、さらにNTPでネットワークから時刻を拾ってきてシステムの時計を修正してしまうようです。

そのため、USBやデュアルブートでUbuntuを使った後、Windows(自分の場合はXP)を使うと時計が9時間ずれてしまっています。

で、調べて見たところ、Ubuntu日本語フォーラムに回答がありました。読んでみると、Ubuntu8.10あたりから起きているようです。

修正方法は簡単で、/etc/default/rcS の中に、「UTC=yes」という記述があるので、それを「UTC=no」に修正するだけでした。

これで再起動後にWindowsの時計が狂っている、ということもなくなりました。

WindowsXPでIPv6を使ってみる

WindowsXPの場合は簡単です。今回は、Tokyo6to4 PROJECTのページの記載と、アクセンステクノロジー社のWebの記述を参考にしました。

コマンドプロンプトで「ipv6 install」と入力します。「Installing…」と表示され、しばらくすると「Succeeded.」と表示されます。

次に、teredoのサーバを教えてやります。(Miredoの開発者が提供しているサーバではうまくいかないようです)

netsh interface ipv6 set teredo enterpriseclient teredo.ipv6.microsoft.com

その後、ポリシーテーブルを変更してIPv6を優先で使うために、以下の内容を入力します。

netsh interface ipv6 set prefixpolicy ::1/128 50 0
netsh interface ipv6 set prefixpolicy ::/0 40 1
netsh interface ipv6 set prefixpolicy 2002::/16 30 1
netsh interface ipv6 set prefixpolicy ::/96 20 3
netsh interface ipv6 set prefixpolicy ::ffff:0:0/96 10 4
netsh interface ipv6 set prefixpolicy 2001::/32 30 1

赤字の部分はtokyou6to4のサイトの記述から変更した部分です。変更しないとブラウザでhttp://www.kame.netにアクセスしても亀さんが踊ってくれませんでした。本当はもうちょっとちゃんと設定値を考えないといけないのでしょうが、とりあえずここまでということで。

・・・というわけで、あっさり完了です。

元に戻すときは、

  • 「ipv6 reset」でIPv6の設定を初期化
  • 「ipv6 uninstall」でIPv6をアンインストール
  • 「netsh interface ipv6 reset」でポリシーテーブルをデフォルトに戻す

ということのようです。

・・・・と思ったら、一度アンインストールしたら同じ手順では動かなくなってしまいました。tracert6などは正常に動作していますが、なぜかブラウザではアクセスできません。

で、いろいろ1時間くらい悩んだ結果、一瞬だけKerperskyの動作を禁止し、その間にアクセスすると、その後は大丈夫(再起動しても大丈夫でした)、ということがわかりました。一体何なんでしょうね・・・。

UbuntuでIPv6対応する手順のまとめ

先の記事では作業過程で書いていたので、結局何が必要なのかわかりにくくなってしまいました。他のPCでもIPv6対応するときのために、NAT環境下のUbuntu10.04LTSでIPv6対応する手順をまとめておきます。(自分では確認していませんので、そのつもりで見てください)

  1. Gufwをインストールして起動する(これはIPv6のためではありません)
    クライアントPCなら設定はそのまま(受信はすべて拒否)でOK
  2. ufwの設定として、/etc/ufw/ufw.conf に
    IPV6=yes
    と書き足して、IPv6を使うことを知らせる。
  3. Synapticパッケージマネージャでmiredoを選択してインストールする
  4. Teredoサーバを選択するなら、/etc/midero.conf を編集する
  5. ネットワークマネージャの接続情報で、ターゲットとなる設定のIPv6設定の「メソッド」を「無視」に設定する
  6. ホスト名の解決のため、/etc/gai.confの
    #label 2001:0::/32 7
    という行を、
    label 2001:0::/32 1
    に修正する
  7. 再起動する
  8. ブラウザで http://www.kame.net に接続し、踊る亀が見えればOK

と、意外にあっさりしたものになりました。

UbuntuにIPv6パッケージ(miredo)を入れる

FireWallも入ったので、いよいよIPv6にトライしていきます。

  1. まず、Ubuntu用のTeredoパッケージ(という位置づけでいいのかな?)のmiredoを入れます。例によってSynapticから検索してインストールするだけです。
  2. pingを打ってみます。
    ~$ ping6 www.kame.net
    PING www.kame.net(2001:200:xxx:xxxx:xxx:xxxx:xxxx:xxxx) 56 data bytes
    ping: sendmsg: Operation not permitted
    ping: sendmsg: Operation not permitted

    ということで、名前解決はできているようなのですが、ping自体がエラーになります。うーん。

  3. その他情報取得
    ・インタフェース情報: $ ifconfig teredo
    ・設定情報: /etc/miredo.conf にある
    (デフォルトでは、teredo-debian.remlab.net がteredo serverのようである)
    ・Routing Tableの表示:
    $ ip -6 route show
    $ route -A inet6
    $ netstat -rn -net6
  4. Gufwでファイヤウォールの動作を停止すると、ping6が通ることがわかりました。
    そこから、ufwの設定として、/etc/ufw/ufw.conf に
    IPV6=yes
    と書き足してやることが必要なことがわかりました。
  5. 次に、ネットワークマネージャのアイコン(通常だと右上のネットワーク状態を示すアイコン)を右クリックして、「接続情報」を選択します。
  6. ターゲットの無線接続(もちろん有線でもいいはず)を選択し、「編集」を押す。
  7. その中の「IPv6設定」タブを選び、「メソッド」を「自動」に変更して、「適用」を押す。
    →ここは再起動するとこれではダメで、「無視」にしておかないと再起動時に一切通信できなくなってしまう。「無視」のままでもTeredoにはつながっている。
  8. なぜか一旦Gufwの動作中を外してやると、その後はping6が通るようになった。(戻しても大丈夫だった)
  9. ダイレクトにURLに「http://[2001:200:dff:fff1:216:3eff:feb1:44d7]/」といれてやると、www.kame.netの踊る亀(これはIPv6で接続すると踊る亀になり、IPv4で接続すると踊らない亀になる)を見ることができた!
  10. ホスト名の解決について、

    /etc/gai.conf の
    #label ::1/128       0
    #label ::/0          1
    #label 2002::/16     2
    #label ::/96         3
    #label ::ffff:0:0/96 4
    #label fec0::/10     5
    #label fc00::/7      6
    label 2001:0::/32   1

    の最後の行が元々7になっているのを1にしてコメントアウトするとホスト名が引ける、という情報があったが、(試している時点では)うまくいっていない。

再起動してみたところ、 IPv4のアドレスすら取得できず、一切通信ができなくなってしまった。syslogを見ると、IPv6のアドレス取得に失敗してすべてを放棄してしまっているようなので、ネットワーク設定で「『IPv6設定』タブを選び、『メソッド』を『自動』に変更」したところを、『無視』に変更したところ、アドレス取得がうまくいくようになった。そして、そのまま http://www.kame.net にアクセスしたところ、踊る亀が見えるようになった!(嬉しい!)

参考にしたページ
UbuntuでIPv6(とある技術屋の戯言さん)・・・設定情報を参考にさせていただきました
・その他ググったら出てきたページ(あっちこっち見てたのでわからなくなりました。ごめんなさい。)

Ubuntuで802.11nを動かす(4)Gufwの導入

よくみるとわけのわからないタイトルだった前回ですが、気を取り直して(?)Ubuntuに戻ります。

IPv4プライベートアドレスの元でも、IPv6の導入によって(たぶん)外界に晒されることになるのでFireWallくらいは設定しておくことにします。

調べると、UbuntuではGufwというのが定番なようなので、これを導入します。導入にあたっては、「Gufw Ubuntuのファイアウォールで外部からのアクセスを拒否する」のページを参考にさせていただきました。

  1. 例によって、Synapticパッケージマネージャで検索すると、一発で見つかりますので、インストールします。
  2. インストールが完了すると、「システム」→「システム管理」→「ファイアウォールの設定」で設定を確認できるようになります。初回起動時は、
    となっていて、動作していません。
  3. そこで、「□ 動作中」にチェックを入れると、となって動作を開始します。デスクトップ環境なので、とりあえず設定はこれだけです。