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

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

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

現象

Azure Linux 仮想マシン (VM) のプライマリ インターフェイスは eth0 です。 eth0 が構成されていない場合、他のツールが VM の起動を示している場合でも、ネットワーク接続を使用して VM にアクセスできない。

問題が発生すると、適切なアクセス許可を持つセキュア シェル (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 など) が見つかった場合は、オペレーティング システムが更新されていないと示されます。

この問題を解決するには、実行中の別の VM に OS ディスクを接続し、[. /etc/udev/rules.d/70-persistent-net.rules

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

sudo apt-get update
sudo apt-get install udev

エラー 2

この問題を解決するには、ファイルを既定にリセットし、Azure DHCP に IP アドレスの取得 /etc/network/interfaces.d/eth0.cfg を要求します。 次に、キャッシュされた 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)