ネットワーク経由で Azure Linux VM に接続できない

注:

この記事で参照されている CentOS は Linux ディストリビューションであり、End Of Life (EOL) に到達します。 使用を検討し、それに応じて計画します。 詳細については、「 CentOS End Of Life ガイダンス」を参照してください。

この記事では、ネットワーク エラーによって Azure Linux 仮想マシンに接続できなくなる問題を修正します。

元の製品バージョン: Linux を実行している仮想マシン
元の KB 番号: 4010059

現象

Azure Linux 仮想マシン (VM) 上のプライマリ インターフェイスは eth0 です。 eth0 が構成されていない場合、他のツールが VM が稼働中であることを示している場合でも、VM にはネットワーク接続経由でアクセスできません。

問題が発生すると、適切なアクセス許可を持つ Secure Shell (SSH) 接続が VM への接続を開始する可能性があります。 ただし、最終的にはネットワークの問題のために VM にアクセスできません。

通常、ネットワーク エラーはシリアル コンソール ログに記録されます。 具体的には、次のエラーが表示される場合があります。

シリアル コンソール ログのエラー

CentOS Linux ディストリビューション エラー

エラー 1

Bringing up interface eth0:
Device eth0 does not seem to be present, delaying initialization.
[FAILED]

エラー 2

Bringing up loopback interface: [ OK ]
Bringing up interface eth0: Device eth0 has different MAC address than expected, ignoring.
[FAILED]

エラー 3

YYYY/MM/DD HH:MM:SS Discovered Windows Azure endpoint: ###.##.###.##
/usr/sbin/waagent:2275: DeprecationWarning: BaseException.message has been deprecated as of Python 2.6
Error('socket IOError ' + e.message + ' args: ' + repr(e.args))
YYYY/MM/DD HH:MM:SS ERROR:socket IOError args: (113, 'No route to host')

YYYY/MM/DD HH:MM:SS ERROR:socket IOError args: (113, 'No route to host')
Failed services in runlevel 3:network

エラー 4

login: YYYY/MM/DD HH:MM:SS ERROR:timed out

YYYY/MM/DD HH:MM:SS ERROR:Traceback (most recent call last):
YYYY/MM/DD HH:MM:SS ERROR: File "/usr/sbin/waagent", line 3395, in DoDhcpWork
YYYY/MM/DD HH:MM:SS ERROR: receiveBuffer = sock.recv(1024)
YYYY/MM/DD HH:MM:SS ERROR:timeout: timed out
YYYY/MM/DD HH:MM:SS ERROR:
YYYY/MM/DD HH:MM:SS DoDhcpWork: Setting socket.timeout=10, entering recv
YYYY/MM/DD HH:MM:SS ERROR:timed out
YYYY/MM/DD HH:MM:SS ERROR:Traceback (most recent call last):
YYYY/MM/DD HH:MM:SS ERROR: File "/usr/sbin/waagent", line 3395, in DoDhcpWork
YYYY/MM/DD HH:MM:SS ERROR: receiveBuffer = sock.recv(1024)
YYYY/MM/DD HH:MM:SS ERROR:timeout: timed out

Customer changed the IP from DHCP to FIXED

SUSE Linux ディストリビューション エラー

Setting up (localfs) network interfaces:
 lo 
 lo IP address: 127.0.0.1/8 
 IP address: 127.0.0.2/8 
done eth4 
 No configuration found for eth4
unused Waiting for mandatory devices: eth0 
29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 

eth0 No interface found

Ubuntu

エラー 1

cloud-init-nonet waiting 120 seconds for a network device.
cloud-init-nonet gave up waiting for a network device.
ci-info: lo : 1 127.0.0.1 255.0.0.0 .
ci-info: eth1 : 0 . . 00:0d:3a:10:6a:53
route_info failed
Waiting for network configuration...
Waiting up to 60 more seconds for network configuration...
Booting system without full network configuration...

エラー 2

ci-info: | eth0 | False | . | . | 00:0d:3a:21:f9:ad |
ci-info: +--------+-------+-----------+-----------+-------------------+
ci-info: !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!Route info failed!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+ i=eth0
+ x=0
+ ifdown eth0
ifdown: interface eth0 not configured
+ ifup eth0
Missing required variable: address
Missing required configuration variables for interface eth0/inet.
Failed to bring up eth0.
+ exit 0x\

解決方法

CentOS の場合

下にある ifcfg-eth0 ファイルから HWADDR ディレクティブを削除します/etc/sysconfig/network-script

SUSE Linux の場合

の下の eth0 または eth1 のエントリを含むファイルを /etc/udev/rules.d削除します。

Ubuntu の場合

エラー 1

このエラーは、aneth1 インターフェイスが eth0 ではなく構成されていることを示します。 これは、VM 上のオペレーティング システムに udev の更新プログラムがインストールされていない場合に発生する可能性があります。 この状況では、 udev は 以前のネットワーク インターフェイスを誤って保存します。 VM のサイズが変更または移動されると、別の MAC アドレスが受信され、eth1 に割り当てられます。

注:

シリアル ログからイメージのバージョンを確認できます。 非常に古い Ubuntu カーネル (2014 年 1 月にリリースされた 3.2.0-58.88 など) が見つかった場合は、オペレーティング システムが更新されていないことを示します。

この問題を解決するには、OS ディスクを別の実行中の VM に接続し、 の下 /etc/udev/rules.d/70-persistent-net.rulesにある udev ルール ファイルを削除します。

今後この問題を回避するには、VM 上の udev パッケージを更新することをお勧めします。 たとえば、次のコマンドを実行します。

sudo apt-get update
sudo apt-get install udev

エラー 2

この問題を解決するには、ファイルを /etc/network/interfaces.d/eth0.cfg 既定値にリセットし、AZURE DHCP に IP アドレスの取得を要求します。 次に、キャッシュされた DHCP 設定を /var/lib/dhcp 含むフォルダー内のファイルを削除します。 既定の eth0.cfg ファイルの例を次に示します。

# The primary network interface
auto eth0
iface eth0 inet dhcp

カスタマイズされた Linux オペレーティング システムの問題を解決する

ネットワークの問題がある VM でアップロードされた VHD が使用されている場合は、作業ギャラリー イメージに基づいてネットワークを構成できます。 これを行うには、問題のあるディスクをデータ ディスクとしてギャラリー VM に接続し、次のコマンドを実行します。

fdisk -l
df -h
mount /dev/sdc1 /temporary
df -h
cd /temporary/etc/udev/rules.d
ls -ltr
mv 70-persistent-net.rules /temporary/root/
cd ../../network

ls
mv interfaces interfaces.org
ls -ltr

作業 VM から現在のフォルダー ファイルにコピーします。

cp /etc/network/interfaces . 
cp -R /etc/network/interfaces
cp -R /etc/network/interfaces.d .
cp -R /etc/network/interfaces.dynamic.d .
ls -ltr
cd ..
cd
umount /mnt

ギャラリー VM にデータ ディスクをアタッチする方法の詳細については、「データ ディスクをAzure portalの Windows VM にアタッチする方法」を参照してください。

リファレンス: オペレーティング システムのネットワーク ファイル

ネットワーク カード構成

/etc/sysconfig/network-scripts/ifcfg-eth0 ..ifcfg-eth0:1 (Centos, Oracle)
/etc/sysconfig/network/ifcfg-eth0 (SuSE)
/etc/network/interfaces (Ubuntu)  

ホスト名の構成

/etc/sysconfig/network (Centos , Oracle)
/etc/HOSTNAME (SuSE)
/etc/hostname (Ubuntu)  

DNS 構成ファイル

/etc/resolv.conf
/etc/nsswitch.conf  

既定のゲートウェイの構成ファイル

set in ifcfg-ethn or /etc/sysconfig/network
/etc/sysconfig/network/route (SuSE)
/etc/network/interfaces (Ubuntu)  

静的ルート

/etc/sysconfig/network-scripts/route-ethX (Centos, Oracle)
/etc/sysconfig/network/routes (SuSE)
/etc/network/interfaces (Ubuntu)  

ファイアウォール規則

/etc/sysconfig/iptables (centos, Oracle)
/etc/sysconfig/SuSEfirewall2.d/services (SuSE)
/etc/ufw/ufw.conf (Ubuntu)

お問い合わせはこちらから

質問がある場合やヘルプが必要な場合は、サポート要求を作成するか、Azure コミュニティ サポートにお問い合わせください。 Azure フィードバック コミュニティに製品フィードバックを送信することもできます。