館澤です。
SUSE1.9のマシンにエイリアスIPを付ける方法について質問があります。 エイリアスIPの付け方について、試してみたところ
(1) ifconfig eth0:0 IPアドレス ... を利用 (2) YaST の[ネットワークカード]-[編集]-[詳細設定]- [バーチャルエイリアス]を利用
の2種類の方法があることが分かったのですが、 これらの挙動が若干異なっていおり気になっています。
【(1)と(2)の違い】
(1)の方法ですと ifconfig -a で
eth0:0 Link encap:Ethernet HWaddr xx:xx:xx:xx:xx:xx inet addr:10.35.193.220 Bcast:xx.xx.xx.xx Mask:255.255.255.0 UP BROADCAST NOTRAILERS RUNNING MULTICAST MTU:1500 Metric:1 Base address:0x3040 Memory:fea60000-fea80000
とエイリアスIPのデバイスが表示されるのですが、 (2)の方法だと ifconfig -a で、エイリアスIPのデバイスが表示されませんでした。
【質問】
YaSTのエイリアスIP割り当てをコマンドラインで表現すると どのようになるのでしょうか?
ご存知の方いらっしゃいましたら宜しくお願いします。
M. Takeyamaです。
On Fri, 05 Nov 2004 18:41:08 +0900 Manabu Tatesawa mabu@home.email.ne.jp wrote:
館澤です。
[...]
SUSE1.9のマシンにエイリアスIPを付ける方法について質問があります。 エイリアスIPの付け方について、試してみたところ
ご存知の方いらっしゃいましたら宜しくお願いします。
YASTの設定だけだとうまくいきませんね。(経験上) /etc/sysconfig/network ifcfg-eth-xxxxx のファイルの中で
例) IPADDR_0="xx.xx.xx.xx" <--- エイリアスIP NETMASK_0="255.255.255.0" <--- /24のネットワークの場合のネットマスク この2つはYASTが生成してくれますが...
LABELが足りないとうまく動作しないようです。この場合、 LABEL_0=0 の1行を加えてください。
あたり前ですが... networkの再起動しないと反映されません。 /etc/init.d/network stop; /etc/init.d/network start;
P.S. (宣伝モード) もし、よかったら、11/21(日)の勉強会に是非参加してみてください。 質問コーナーもありますし... #参加者の集まりがわるいようなので... #(せっかくの機会なので...)
----- M. Takeyama
__________________________________ Do You Yahoo!? Upgrade Your Life http://bb.yahoo.co.jp/
山口と申します。
On Fri, 05 Nov 2004 18:41:08 +0900 Manabu Tatesawa mabu@home.email.ne.jp wrote:
SUSE1.9のマシンにエイリアスIPを付ける方法について質問があります。 エイリアスIPの付け方について、試してみたところ
(1) ifconfig eth0:0 IPアドレス ... を利用 (2) YaST の[ネットワークカード]-[編集]-[詳細設定]- [バーチャルエイリアス]を利用
の2種類の方法があることが分かったのですが、 これらの挙動が若干異なっていおり気になっています。
【(1)と(2)の違い】
(1)の方法ですと ifconfig -a で
eth0:0 Link encap:Ethernet HWaddr xx:xx:xx:xx:xx:xx inet addr:10.35.193.220 Bcast:xx.xx.xx.xx Mask:255.255.255.0 UP BROADCAST NOTRAILERS RUNNING MULTICAST MTU:1500 Metric:1 Base address:0x3040 Memory:fea60000-fea80000
とエイリアスIPのデバイスが表示されるのですが、 (2)の方法だと ifconfig -a で、エイリアスIPのデバイスが表示されませんでした。
比較的新しい Linux Kernel の TCP/IP 機能は、ifconfig コマンドでは操作で きない部分があります。/sbin/ifup スクリプトを眺めてみるとわかると思いま すが、実際には iproute2 パッケージに含まれる ip というコマンドで、IP イ ンターフェースの操作がされています。
上記の件は、eth0 というインターフェースに2つ以上のアドレスが付けられる ことが理由です。eth0:0 等ではなく、eth0 そのものにアドレスが複数割り当て できます。
ifconfig コマンドでは、同じインターフェース名に割り当てられた IP アドレ スは、先頭の1つしか表示できない仕様らしいので、混乱が起こります。
【質問】
YaSTのエイリアスIP割り当てをコマンドラインで表現すると どのようになるのでしょうか?
例として eth1 に2つアドレスを振ってみます。
(1) 現在振られているアドレスを表示
# ip addr show dev eth1 3: eth1: <BROADCAST,MULTICAST> mtu 1500 qdisc noop qlen 1000 link/ether 00:90:99:26:8a:e8 brd ff:ff:ff:ff:ff:ff
(2) 1つ目のアドレスを追加
# ip addr add 192.168.1.1/24 brd 192.168.1.255 dev eth1
(3) 現在振られているアドレスを表示
# ip addr show dev eth1 3: eth1: <BROADCAST,MULTICAST> mtu 1500 qdisc noop qlen 1000 link/ether 00:90:99:26:8a:e8 brd ff:ff:ff:ff:ff:ff inet 192.168.1.1/24 brd 192.168.1.255 scope global eth1
(4) 2つ目のアドレスを追加
# ip addr add 192.168.1.2/24 brd 192.168.1.255 dev eth1
(5) 現在振られているアドレスを表示
# ip addr show dev eth1 3: eth1: <BROADCAST,MULTICAST> mtu 1500 qdisc noop qlen 1000 link/ether 00:90:99:26:8a:e8 brd ff:ff:ff:ff:ff:ff inet 192.168.1.1/24 brd 192.168.1.255 scope global eth1 inet 192.168.1.2/24 brd 192.168.1.255 scope global secondary eth1
(6) ifconfig コマンドだと1つしか見えない
# ifconfig eth1 eth1 Link encap:Ethernet HWaddr 00:90:99:26:8A:E8 inet addr:192.168.1.1 Bcast:192.168.1.255 Mask:255.255.255.0 BROADCAST MULTICAST MTU:1500 Metric:1 RX packets:0 errors:0 dropped:0 overruns:0 frame:0 TX packets:0 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:0 (0.0 b) TX bytes:0 (0.0 b) Interrupt:10 Base address:0xcc00
(7) ifconfig コマンドのように、インターフェース名を指定して追加 (label)
# ip addr add 192.168.1.3/24 brd 192.168.1.255 dev eth1 label eth1:0
(8) 現在振られているアドレスを表示
# ip addr show dev eth1 3: eth1: <BROADCAST,MULTICAST> mtu 1500 qdisc noop qlen 1000 link/ether 00:90:99:26:8a:e8 brd ff:ff:ff:ff:ff:ff inet 192.168.1.1/24 brd 192.168.1.255 scope global eth1 inet 192.168.1.2/24 brd 192.168.1.255 scope global secondary eth1 inet 192.168.1.3/24 brd 192.168.1.255 scope global secondary eth1:0
(9) ifconfig -a コマンドでも確認できる
# ifconfig -a (中略) eth1 Link encap:Ethernet HWaddr 00:90:99:26:8A:E8 inet addr:192.168.1.1 Bcast:192.168.1.255 Mask:255.255.255.0 BROADCAST MULTICAST MTU:1500 Metric:1 RX packets:0 errors:0 dropped:0 overruns:0 frame:0 TX packets:0 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:0 (0.0 b) TX bytes:0 (0.0 b) Interrupt:10 Base address:0xcc00
eth1:0 Link encap:Ethernet HWaddr 00:90:99:26:8A:E8 inet addr:192.168.1.3 Bcast:192.168.1.255 Mask:255.255.255.0 BROADCAST MULTICAST MTU:1500 Metric:1 Interrupt:10 Base address:0xcc00
(10) 追加したアドレスを削除
# ip addr del 192.168.1.3 dev eth1 # ip addr del 192.168.1.2 dev eth1 # ip addr del 192.168.1.1 dev eth1
(または ip addr flush dev eth1 で一括削除)
(11) もはや eth1 には何も IP アドレスがついていない
# ip addr show dev eth1 3: eth1: <BROADCAST,MULTICAST> mtu 1500 qdisc noop qlen 1000 link/ether 00:90:99:26:8a:e8 brd ff:ff:ff:ff:ff:ff
※ip コマンドは強力ですが、エラーチェックが緩い (?) ため、おかしな設定も できてしまうところがありますので、注意が必要です。
■参考文献
Linux Advanced Routing & Traffic Control HOWTO ・Chapter 3.iproute2 入門 http://www.linux.or.jp/JF/JFdocs/Adv-Routing-HOWTO/lartc.iproute2.html
IP(8) ip - show / manipulate routing, devices, policy routing and tunnels (# man ip)
-- 山口健史 (YAMAGUCHI Kenji) E-Mail: yamk@yamk.net
館澤です。
Takeyamaさん、山口さん ありがとうございます。
デバイスにIPアドレスを付ける方法が変更されていたのですね。 とても勉強になりました。
"M. Takeyama(takezou)" takezou040728@yahoo.co.jp wrote:
YASTの設定だけだとうまくいきませんね。(経験上) /etc/sysconfig/network ifcfg-eth-xxxxx のファイルの中で
/etc/sysconfig/network/* や /etc/sysconfig/network/scripts/* の中を 覗いてみたのですが、かなり複雑に思えました。 やっていることが分かったので、もうちょっと頑張って読んでみます。
YAMAGUCHI Kenji yamk@yamk.net wrote:
比較的新しい Linux Kernel の TCP/IP 機能は、ifconfig コマンドでは操作で きない部分があります。/sbin/ifup スクリプトを眺めてみるとわかると思いま すが、実際には iproute2 パッケージに含まれる ip というコマンドで、IP イ ンターフェースの操作がされています。
上記の件は、eth0 というインターフェースに2つ以上のアドレスが付けられる ことが理由です。eth0:0 等ではなく、eth0 そのものにアドレスが複数割り当て できます。
ifconfig コマンドでは、同じインターフェース名に割り当てられた IP アドレ スは、先頭の1つしか表示できない仕様らしいので、混乱が起こります。
具体例まで書いていただき、分かりやすい説明本当に有難うございます。 iproute2パッケージ、ipコマンドがキーワードですね。 いろいろ試してみたいと思います。 #fakeパッケージはiproute2対応になっているのかしら #こちらも試してみたいと思います。