夫です。
D945GCLFのNICにはRealtek RTL8101E/RTL8102E が使用されています。
Kernelを2.6.18-128.1.14.el5xenにあげることで、カーネル付属ドライバである、r8169で認識されました。
しかし、xenカーネルで立ち上げ、xendサービスが開始されると、通信できなくなる事象が発生。
よくよくチェックすると、なぜかeth0のMAC addressがFE:FF:FF:FF:FF:FFになり、xend開始のタイミングで、xenbr, virbrのMACアドレスと重複して通信NGとなっていました。
$ /sbin/ifconfig eth0
eth0 Link encap:Ethernet HWaddr FE:FF:FF:FF:FF:FF
inet addr:XX.XX.XX.XX Bcast:XX.XX.XX.XX Mask:XX.XX.XX.XX
inet6 addr: XXXX:XXX:XXX:XXX:fcff:ffff:feff:ffff/64 Scope:Global
inet6 addr: fe80::fcff:ffff:feff:ffff/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:592188 errors:0 dropped:85279190990616 overruns:0 frame:0
TX packets:715234 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:64758444 (61.7 MiB) TX bytes:546716986 (521.3 MiB)
Interrupt:20
本来のMACアドレスをeth0に設定してあげることで、この問題が解決できました。自動的にやるには以下のような形も1つかと思います。
/etc/init.d/network
start処理の最終箇所に ip link setで、HW本来のMACアドレスを設定します。
--- /etc/init.d/network.org 2009-07-01 23:03:20.000000000 +0900
+++ /etc/init.d/network 2009-07-01 23:07:10.000000000 +0900
@@ -167,6 +167,8 @@
touch /var/lock/subsys/network
[ -n "${NETWORKDELAY}" ] && /bin/sleep ${NETWORKDELAY}
+
+ /sbin/ip link set eth0 addr 本来のMACアドレス
;;
stop)
# Don't shut the network down if root is on NFS or a network
いろいろと調べているいると、この問題はRealtekのEtherコントローラが、再起動時にMACアドレスをリセットしないのが原因のようです。(ハードの仕様)
元のMACアドレスがわからない場合には、いったん電源を落とし、電源ケーブルも抜き、マザーボード上の電流か完全に消えるまで、10秒程度待って再度電源を入れなおすと、Etherコントローラがリセットされるとのこと。