« 2009年4月 | メイン | 2009年6月 »

2009年5月

2009年5月13日 (水)

LinuxでIPv6コマンドを使う

<環境>CentOS4, CentOS5など

IPv6が使えるようにしておくこと。

<アドレスの確認方法>

Globalが2つ、Link Localが1つ設定されていることが分かる。

IPv6のループバックアドレスは、::1となっている。

$ /sbin/ifconfig -a

eth0 Link encap:Ethernet HWaddr xx:xx:xx:xx:xx:xx

inet addr:192.168.10.100 Bcast:192.168.10.255 Mask:255.255.255.0

inet6 addr: fd36:xxxx:xxxx:0:222:1ff:fecd:1245/64 Scope:Global

inet6 addr: 2001:db8::111:1ff:fecd:1245/64 Scope:Global

inet6 addr: fe80::230:1ff:fecd:1245/64 Scope:Link

UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1

lo Link encap:Local Loopback

inet addr:127.0.0.1 Mask:255.0.0.0

inet6 addr: ::1/128 Scope:Host

UP LOOPBACK RUNNING MTU:16436 Metric:1

sit0 Link encap:IPv6-in-IPv4

NOARP MTU:1480 Metric:1

<IPv6アドレスの追加>

管理者権限で、Globalアドレスを手動で追加

# ifconfig eth0 inet6 add fd36:xxxx:xxxx:0:222:1ff:fecd:1245/64

または

# /sbin/ip -6 addr add 2001:db8:xxx::2/64 dev eth0

*実際には -6 オプションがなくても登録できる

<IPv6アドレスの削除>

管理者権限で、IPv6アドレスを削除

# ifconfig eth0 inet6 del fd36:xxxx:xxxx:0:222:1ff:fecd:1245/64

または

# /sbin/ip -6 addr del 2001:db8:xxx::2/64 dev eth0

確認

fd36:のアドレスがなくなっていることが分かる。

$ /sbin/ifconfig eth0

eth0 Link encap:Ethernet HWaddr xx:xx:xx:xx:xx:xx

inet addr:192.168.10.100 Bcast:192.168.10.255 Mask:255.255.255.0

inet6 addr: 2001:db8:6789:0:111:1ff:fecd:1245/64 Scope:Global

inet6 addr: fe80::230:1ff:fecd:1245/64 Scope:Link

<ローカルアドレスにPING>

リンクローカルアドレスへのPINGではインターフェースを指定する。windowsやMacのような%インターフェースID 指定は出来ない。

-c はカウント

$ ping6 -c 2 -I eth0 fe80::230:1ff:fecd:ae65

PING fe80::230:1ff:fecd:ae65(fe80::230:1ff:fecd:ae65) from fe80::230:1ff:fecd:1245 eth0: 56 data bytes

64 bytes from fe80::230:1ff:fecd:ae65: icmp_seq=0 ttl=64 time=0.415 ms

64 bytes from fe80::230:1ff:fecd:ae65: icmp_seq=1 ttl=64 time=0.403 ms

:

<グローバルアドレスにPING>

インターフェース指定(-I) は不要

$ ping6 -c 2 2001:db8::xxx:xxx:xxx:xxx:5

PING 2001:db8::xxx:xxx:xxx:xxx:5(2001:db8::xxx:xxx:xxx:xxx:5) 56 data bytes

64 bytes from 2001:db8::xxx:xxx:xxx:xxx:5: icmp_seq=0 ttl=64 time=818 ms

:

<ルーティングテーブルの表示>

IPv6のDNS設定を行っていないので、"getnameinfo failed"となっている。

$ /sbin/route -A inet6

Kernel IPv6 routing table

Destination Next Hop Flags Metric Ref Use Iface

localhost/128 * U 0 364 2 lo

getnameinfo failed

[UNKNOWN]/128 * U 0 122 2 lo

getnameinfo failed

[UNKNOWN]/64 * UA 256 2261 0 eth0

fd08:xxx:xxx::/64 * UA 256 3 0 eth0

:

または

$ /sbin/ip -6 route show

unreachable 2002:a00::/24 dev lo metric 1024 expires 20528335sec

   error -101 mtu 16436 advmss 16376 hoplimit 4294967295

fd08:xxx:xxx::/64 dev eth0 proto kernel metric 256 expires 152323sec mtu 1500

    advmss 1440 hoplimit 64

fe80::/64 dev eth0 metric 256 expires 2047342sec mtu 1500

    advmss 1440 hoplimit 64

ff00::/8 dev eth0 metric 256 expires 2047342sec mtu 1500

    advmss 1440 hoplimit 1

:

以下のファイルにも経路情報が書き込まれる。

/proc/net/ipv6_route

<経路の追加>

# /sbin/route -A inet6 add 2000::/3 gw 2001:db8:xxx::1 [device]

または

# /sbin/ip -6 route add 2000::/3 via 2001:db8:xxx::1 [device]

<経路の削除>

なぜか"unreachable"ができているので、消してみる。

# /sbin/route del xx

または

# /sbin/ip route del 2002:a00::/24 dev lo

<近隣キャッシュの表示>

$ /sbin/ip -6 neigh show

fe80::xxx:xxx:xxx:5678 dev eth0 lladdr 00:xx:xx:xx:56:78 router nud reachable ・・・ルータのリンクローカルアドレス

2001:db8:xxx:0:xxx:xxx:xxx:abcd dev eth0 lladdr 00:xx:xx:xx:ab:cd nud reachable ・・・別のIPv6対応ホストのグローバルアドレス

2001:db8:xxx::1 dev eth0 lladdr 00:xx:xx:xx:56:78 router nud reachable ・・・ルータのIP

Linux IPv6 HOWTO

windows XP関連のIPv6コマンドはこちら

2009年5月12日 (火)

windowsでIPv6を使う

windows XPでIPv6を使用する方法

コマンドプロンプトから、以下を実行し、IPv6プロトコルを追加

> ipv6 install

Installing...

Succeeded.

削除する場合は、以下を実行し、再起動。

C:>ipv6 uninstall

Uninstalling...

A reboot is required to complete this action.

IPv6インストール後、リンクローカルアドレス(fe80:で始まる)が自動構成される。ルータがRA対応に設定されていれば、グローバルアドレス(ここでは2001:で始まる)も設定される。

C:\>ipconfig /all

Windows IP Configuration

Host Name . . . . . . . . . . . . : mymachine
Primary Dns Suffix . . . . . . . :
Node Type . . . . . . . . . . . . : Unknown
IP Routing Enabled. . . . . . . . : No
WINS Proxy Enabled. . . . . . . . : No

Ethernet adapter LAN:

Connection-specific DNS Suffix . :
Description . . . . . . . . . . . : xx xx xx
Ethernet NIC
Physical Address. . . . . . . . . : 00-11-22-33-cd-6e
Dhcp Enabled. . . . . . . . . . . : Yes
Autoconfiguration Enabled . . . . : Yes
IP Address. . . . . . . . . . . . : 192.168.100.30
Subnet Mask . . . . . . . . . . . : 255.255.255.0
IP Address. . . . . . . . . . . . : 2001:xxx:xxx:0:xxx:xxx:xxx:ab58
IP Address. . . . . . . . . . . . : 2001:xxx:xxx:0:xxx:xxx:xxx:cd6e
IP Address. . . . . . . . . . . . : fe80::xxx:xxx:xxx:cd6e%4

Default Gateway . . . . . . . . . : 192.168.100.1
fe80::xxx:xxx:xxx:ef3a%4

pingで同じネットワーク内にあるルータや他のPCへの疎通確認

%4はLAN("ローカルエリアネットワーク")のScope identifier(インターフェースインデックス)で、ネットワーク構成により値が異なる。ここで「4」はローカルエリアネットワークインターフェースを指す。

C:\> ping6(またはping) fe80::1234:abcd:0:xxxx%4

Pinging fe80::1234:abcd:0:xxxx%4

from fe80::xxx:xxx:xxx:cd6e%4 with 32 bytes of data:

Reply from fe80::1234:abcd:0:xxxx%4: bytes=32 time<1ms

Reply from fe80::1234:abcd:0:xxxx%4: bytes=32 time<1ms

Reply from fe80::1234:abcd:0:xxxx%4: bytes=32 time<1ms

Ping statistics for fe80::1234:abcd:0:xxxx%4:

Packets: Sent = 3, Received = 3, Lost = 0 (0% loss),

Approximate round trip times in milli-seconds:

Minimum = 0ms, Maximum = 0ms, Average = 0ms

アドレスの再取得

C:\>ipv6 renew

telnetでローカルにあるWebサーバーにIPv6でアクセスする。グローバルアドレスでのアクセスの場合、インタフェースID(%n)は不要

C:\>telnet fe80::1234:abcd:0:xxxx%4 80

GET / HTTP/1.0

(リターン)

 :

HTTP/1.1 200 OK

Date: Mon, 12 May 2009 02:04:22 GMT

netshコマンドについては別途記載

fe80::xxx:xxx:xxx:ef3a はルーターのローカルアドレス

C:\>netsh interface ipv6 show routes

アクティブ状態を照会しています...

Publish Type Met Prefix Idx Gateway/Interface Name

------- -------- ---- ------------------------ --- ---------------------

no Autoconf 8 2001:xxx:xxx::/64 4 LAN

no Autoconf 256 ::/0 4 fe80::xxx:xxx:xxx:ef3a

yumでTypeError

<環境>CentOS4

yumでパッケージを手動Updateしたあと、翌日のcronのログに次のようなエラーが吐き出されていた。

/etc/cron.daily/yum.cron:

Traceback (most recent call last):

  File "/usr/bin/yum", line 29, in ?

TypeError: unsubscriptable object

まずは手動でエラーを確認。

# yum -c yum.conf update

Loaded plugins: downloadonly, fastestmirror

Loading mirror speeds from cached hostfile

 * updates: www.ftp.ne.jp

 * base: www.ftp.ne.jp

 * addons: www.ftp.ne.jp

 * extras: www.ftp.ne.jp

Excluding Packages in global exclude list

Finished

Setting up Update Process

Resolving Dependencies

--> Running transaction check

---> Package file.i386 0:4.17-15.el5_3.1 set to be updated

---> Package sos.noarch 0:1.7-9.16.el5_3.5 set to be updated

---> Package pango.i386 0:1.14.9-5.el5.centos set to be updated

Traceback (most recent call last):

  File "/usr/bin/yum", line 29, in ?

    yummain.user_main(sys.argv[1:], exit_code=True)

  File "/usr/share/yum-cli/yummain.py", line 229, in user_main

    errcode = main(args)

  File "/usr/share/yum-cli/yummain.py", line 145, in main

    (result, resultmsgs) = base.buildTransaction()

  File "/usr/lib/python2.4/site-packages/yum/__init__.py", line 647, in buildTransaction

    (rescode, restring) = self.resolveDeps()

  File "/usr/lib/python2.4/site-packages/yum/sqlitesack.py", line 94, in _read_db_obj

    setattr(self, item, _share_data(db_obj[item]))

TypeError: unsubscriptable object

確かになんだかftpサーバー名がおかしい。前にUpdateがうまくいかなくなったときは、yumのデータベースが壊れていたっけ、と思いつつ以下を実行。

# yum clean all

Loaded plugins: downloadonly, fastestmirror

Cleaning up Everything

Cleaning up list of fastest mirrors

再度、Updateを実行

# yum -c yum.conf update

Loaded plugins: downloadonly, fastestmirror

Determining fastest mirrors

 * updates: ftp.iij.ad.jp

  Updating       : pango                                             [1/6]

  Updating       : file                                              [2/6]

  Updating       : sos                                               [3/6]

  Cleanup        : file                                              [4/6]

  Cleanup        : sos                                               [5/6]

  Cleanup        : pango                                             [6/6]

Updated: file.i386 0:4.17-15.el5_3.1 pango.i386 0:1.14.9-5.el5.centos sos.noarch 0:1.7-9.16.el5_3.5

Complete!

ということで無事回復できた。

2009年5月 8日 (金)

PATHの読み込み、su と su- の違い

<環境>CentOS4、5、RHEL4、5など

サーバーのPATH設定で、おかしな箇所を発見した。

rootの~/.bashrc の中に、PATHが直指定してある。これでは新しくプログラムを追加した際など、他の設定ファイル(/etc/profile.d/*.shとか.bash_profileとか)で設定したPATHを上書きしてしまう場合が出てくる。

# .bashrc

# User specific aliases and functions

alias rm='rm -i'

alias cp='cp -i'

alias mv='mv -i'

# Source global definitions

if [ -f /etc/bashrc ]; then

        . /etc/bashrc

fi

PATH=/usr/kerberos/sbin:/usr/kerberos/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin:/usr/local/progname/sbin

他に影響を与えないよう、赤字の部分を以下のように変更。

PATH=$PATH:/usr/local/progname/sbin

ついでに。

<環境変数PATHのおさらい>

環境変数PATHの読み込みは、RedHat系の場合、以下のような順番で行われる。ここで、ログインシェルは bash が起動。

ユーザーが、su - でrootにアカウント変更した場合(ログインシェルの場合、su - user の場合)。

1. /etc/profile ・・・全ユーザ共通

 → /etc/profile.d/*.sh

2. ~/.bash_profile ・・・ ユーザーごとに有効

 →~/.bashrc

  →/etc/bashrc

* CentOS, RHELには~/.bash_login, ~/.profile はない。リリースにより異なる。

一般ユーザーが、su でrootにログインした場合(bashシェル実行時、su user の場合)。

~/.bashrc

 →/etc/bashrc

   →/etc/profile.d/*.sh

bashでどんなファイルをどんな順番で読み込んでいるか、以下のコマンドで確認できる。straceが入っていなければ、yum でインストール

# strace -f -e trace=open -o 結果の出力ファイル名 su - ユーザー名

26720 open("/etc/ld.so.cache", O_RDONLY) = 3

26720 open("/lib/libpam.so.0", O_RDONLY) = 3

26720 open("/lib/libpam_misc.so.0", O_RDONLY) = 3

ただし、一般ユーザーからは Permission denied となりコマンドは実行できない。

ファイルと利用方法

ファイル名

利用方法

profile

全ユーザーに対する設定を記述

.bashrc

シェルやターミナルを起動する度読み込まれる

エイリアスなどが指定してある

.bash_profile

ログインしたときに読み込まれる

ユーザーごとに使用したい設定を記述

<su と su - の違い>

su と su - では、ログインしたときの環境変数PATHが異なってくるので注意。

su - でアカウント変更した場合、PATHに/usr/local/sbin、/sbin、/usr/sbin などが含まれるが、su でrootにアカウント変更した場合、一般ユーザーの環境を引き継ぐため、これらのPATHが通らない。結果、ifconfigのようなよく使うコマンドが使えなくなる。

たとえば、一般ユーザーのPATHが以下の場合とする。

PATH=/usr/kerberos/bin:/usr/local/bin:/bin:/usr/bin:/home/blueeyesblue/bin

このユーザーが su でrootになった場合

PATH=/usr/kerberos/sbin:/usr/kerberos/bin:/usr/local/bin:/bin:/usr/bin:/home/blueeyesblue/bin

このユーザーが su - でrootになった場合

PATH=/usr/kerberos/sbin:/usr/kerberos/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin

rootの権限を与えるのはセキュリティ上良し悪しなので、sudoなどと組み合わせて適切に利用したい。

詳しくはこちら

http://hagio.org/wiki/index.php/Bash

http://www.linux.or.jp/JM/html/GNU_bash/man1/bash.1.html

2009年5月 7日 (木)

/bootの空き容量を増やす

最初の頃カーネルのアップデートを除外していなかったせいか、/bootがとうとう90%以上にまで膨れ上がってしまった。このため、yumでアップデートのエラーが起きてしまったので、/bootの空き容量を以下の方法で増やすことにした。

対処方法:

/bootにある、古いカーネルを削除

<準備>

CebtOS4の場合は、yum-utils-0.5-2 パッケージをインストール

この中に含まれる、package-cleanupコマンドを使うため。

CentOS5には、デフォルトでインストールされている。

# yum install yum-utils

オプションは以下のとおり

# package-cleanup --help

usage: package-cleanup [options]

options:

  -h, --help           show this help message and exit

  --problems           List dependency problems in the local RPM database

  --leaves             List leaf nodes in the local RPM database

  --all                When listing leaf nodes also list leaf nodes that are

                       not libraries

  --orphans            List installed packages which are not available from

                       currenly configured repositories.

  -q, --quiet          Print out nothing unecessary

  -y                   Agree to anything asked

  --oldkernels         Remove old kernel and kernel-devel packages

  --count=KERNELCOUNT  Number of kernel packages to keep on the system

                       (default 2)

  --keepdevel          Do not remove kernel-devel packages when removing

                       kernels

  -cCONFFILE           config file location

現状の確認

$ df -h

Filesystem          サイズ  使用  残り 使用% マウント位置

/dev/mapper/VolGroup00-LogVol00

                      125G   12G  104G  16% /

/dev/sda1              99M   88M  6.0M  94% /boot

none                  505M     0  505M   0% /dev/shm

古いカーネルの削除

# package-cleanup --oldkernels

Setting up yum

Excluding Packages in global exclude list

Finished

I will remove the following 20 kernel related packages:

kernel-2.6.x-xx.xx.xx.xx

 :

Is this ok [y/N]: y

削除後の/boot サイズの確認。60%まで減ったことが分かる。

$ df -h

Filesystem          サイズ  使用  残り 使用% マウント位置

/dev/mapper/VolGroup00-LogVol00

                      125G   12G  104G  16% /

/dev/sda1              99M   56M   38M  60% /boot

none                  505M     0  505M   0% /dev/shm

とりあえず、当面はこれで運用。

詳しくはこちら

古いカーネルを削除するには

そのうち、GParrtedでパーティションを切りなおそうと思う。

ext4に対応した Parted Magic 3.5 でパーティションを操作する

2009年5月 5日 (火)

NetBeansを使ってみる

目標:

windowsクライアントPC上でJavaのプログラムを動かす。

開発環境としてNetBeansを使う。サーバーとしてTomcatがバンドルされており、Java+IDE+Webサーバー+DBがオールインワンパッケージになっているもので環境を構築する。

<インストール>

以下のページからJDK 6 Update 13 with NetBeans 6.5.1 をダウンロードする。

http://java.sun.com/javase/ja/6/download.html

JDK 6u13 with NetBeans IDE 6.5.1 Bundle  の右横のDownloadボタンをクリック

Polatform選択画面で「Windows」を選択。License Agreementにチェックをつけ、Continueボタンをクリック

jdk-6u13-nb-6_5_1-windows-ml.exe のリンクを右クリックして、メニューから保存を選択。

ダウンロード後、インストーラを起動しインストール。

<NetBeans IDEを起動>

NetBeans IDEを起動すると、最初に更新確認画面が表示されるので最新版に更新。

IDEを再起動

<プロジェクトの作成>

ファイル->新規プロジェクト

 新規プロジェクト画面で、Java->Javaアプリケーションを選択し次へ

書きかけ

2010年3月

  1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31      

My Favorite Songs

  • My foolish heart
    Bill Evans Trio: Waltz for Deby (★★★★★)