kinnekoの日記: redhat 怪しげ
RedHat7.2 から(?)、ネットワークの設定スクリプトが変更されて、ifconfig 経由ではなく ip コマンドで設定されるようになり、設定ファイルを書き換えて単純に ifup/down しただけではすぐに設定が反映されないようだ。
現象を読んだだけではわからないので、実際に試験してみる。
PCLA/TE を挿してやると NE2000 コンパチで認識する。
netconfig でアドレスを設定して通信が可能であることを確認。
直接、設定ファイルを書き換えて見る。
# vi /etc/sysconfig/network-scripts/ifcfg-eth0
# ifdown eth0
RTNETLINK answers: Cannot assign requested address
# ifconfig
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
UP LOOPBACK RUNNING MTU:16436 Metric:1
RX packets:200 errors:0 dropped:0 overruns:0 frame:0
TX packets:200 errors:0 dropped:0 overruns:0 carrier:0
collisions:0
RX bytes:12449 (12.1 Kb) TX bytes:12449 (12.1 Kb)
# ifup eth0
# ifconfig eth0
eth0 Link encap:Ethernet HWaddr 00:A0:B0:21:65:29
inet addr:192.168.0.221 Bcast:192.168.0.255 Mask:255.255.255.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:13 errors:0 dropped:0 overruns:0 frame:0
TX packets:16 errors:0 dropped:0 overruns:0 carrier:0
collisions:0
RX bytes:1076 (1.0 Kb) TX bytes:1226 (1.1 Kb)
ふむ。確かに前のアドレスを記憶しているのね。
再度落してみる。
# ifdown eth0
# ifup eth0
# ifconfig eth0
eth0 Link encap:Ethernet HWaddr 00:A0:B0:21:65:29
inet addr:192.168.0.221 Bcast:192.168.0.255 Mask:255.255.255.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:15 errors:0 dropped:0 overruns:0 frame:0
TX packets:20 errors:0 dropped:0 overruns:0 carrier:0
collisions:0
RX bytes:1208 (1.1 Kb) TX bytes:1466 (1.4 Kb)
こんどはエラーが出ない。
dmesg にも /var/log/messages にも特にエラーが出ていない。
やっぱ、スクリプトの整合性がとれていないという事なのね。
# ip addr flush dev eth0
# ifconfig eth0
eth0 Link encap:Ethernet HWaddr 00:A0:B0:21:65:29
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:20 errors:0 dropped:0 overruns:0 frame:0
TX packets:20 errors:0 dropped:0 overruns:0 carrier:0
collisions:0
RX bytes:1538 (1.5 Kb) TX bytes:1466 (1.4 Kb)
# ifdown eth0
RTNETLINK answers: Cannot assign requested address
# ifup eth0
# ifconfig eth0
eth0 Link encap:Ethernet HWaddr 00:A0:B0:21:65:29
inet addr:192.168.0.222 Bcast:192.168.0.255 Mask:255.255.255.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:22 errors:0 dropped:0 overruns:0 frame:0
TX packets:24 errors:0 dropped:0 overruns:0 carrier:0
collisions:0
RX bytes:1670 (1.6 Kb) TX bytes:1706 (1.6 Kb)
たしかに ip コマンドで flush すると直るね。
しかし、IP が2つ当たっているという感じはしないな。
ifdown してから設定を書き換えて ifup するという方法のテスト。
# ifdown eth0
# vi /etc/sysconfig/network-scripts/ifcfg-eth0
# ifup eth0
# ifconfig eth0
eth0 Link encap:Ethernet HWaddr 00:A0:B0:21:65:29
inet addr:192.168.0.221 Bcast:192.168.0.255 Mask:255.255.255.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:28 errors:0 dropped:0 overruns:0 frame:0
TX packets:28 errors:0 dropped:0 overruns:0 carrier:0
collisions:0
RX bytes:2066 (2.0 Kb) TX bytes:1946 (1.9 Kb)
これはうまく行くようだ。
こまごまと追わなくても、quick hack で、network 関係のスクリプトに flush を入れてやると解決しそう。
設定を書き換えて # bash -x ifdown eth0 してみると、こんな所があった。
+ ip addr del 192.168.0.222/24 brd 192.168.0.255 dev eth0
RTNETLINK answers: Cannot assign requested address
というわけで、止めるのにも設定を見に行って違うアドレスなので消せないという判断のようだ。
でも 221 をどこで覚えているのだろうか。
ifup でも -x で調べてみたけど、スクリプト中では、222 を認識しているので、どこか違う所で処理されているようだ。
疲れたので、誰か解説してくれぃ。
# gedit から Mozilla にコピペできないってのもショックだ。
redhat 怪しげ More ログイン