Udostępnij za pośrednictwem


Nie można nawiązać połączenia z maszyną wirtualną z systemem Linux platformy Azure za pośrednictwem sieci

Dotyczy: ✔️ maszyny wirtualne z systemem Linux

Oryginalny numer KB: 4010059

Uwaga 16.

CentOS, do których odwołuje się ten artykuł, jest dystrybucją systemu Linux i osiągnie koniec życia (EOL). Rozważ odpowiednie użycie i zaplanuj. Aby uzyskać więcej informacji, zobacz CentOS End Of Life guidance (Wskazówki dotyczące zakończenia życia systemu CentOS).

W tym artykule rozwiązano problem polegający na tym, że błędy sieci uniemożliwiają nawiązywanie połączenia z maszynami wirtualnymi z systemem Linux platformy Azure.

Symptomy

Podstawowy interfejs na maszynie wirtualnej z systemem Linux platformy Azure to eth0. Jeśli et0 nie jest skonfigurowany, maszyna wirtualna nie jest dostępna za pośrednictwem połączenia sieciowego, nawet jeśli inne narzędzia wskazują, że maszyna wirtualna jest uruchomiona.

W przypadku wystąpienia problemu połączenie protokołu Secure Shell (SSH), które ma poprawne uprawnienia, może rozpocząć nawiązywanie połączenia z maszyną wirtualną. Jednak ostatecznie nie może uzyskać dostępu do maszyny wirtualnej z powodu problemu z siecią.

Błędy sieci są zwykle rejestrowane w dzienniku konsoli szeregowej. W szczególności mogą zostać wyświetlone następujące błędy.

Błędy w dzienniku konsoli szeregowej

Błędy dystrybucji systemu CentOS Linux

Błąd 1

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

Błąd 2

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

Błąd 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

Błąd 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

Błędy dystrybucji systemu 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

Błąd 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...

Błąd 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\

Rozwiązanie

Dla systemu CentOS

Usuń dyrektywę HWADDR z pliku ifcfg-eth0 w obszarze /etc/sysconfig/network-script.

W przypadku systemu SUSE Linux

Usuń pliki zawierające wpisy dla eth0 lub eth1 w obszarze /etc/udev/rules.d.

Dla systemu Ubuntu

Błąd 1

Ten błąd wskazuje, że interfejs aneth1 jest skonfigurowany zamiast eth0. Może się tak zdarzyć, jeśli system operacyjny na maszynie wirtualnej nie ma zainstalowanych aktualizacji funkcji udev . W takiej sytuacji ujmowanie niepoprawnie zapisuje poprzedni interfejs sieciowy. Po zmianie lub przeniesieniu maszyny wirtualnej otrzyma inny adres MAC, który zostanie przypisany do eth1.

Uwaga 16.

Możesz sprawdzić wersję obrazu z dzienników seryjnych. Jeśli zostanie znalezione bardzo stare jądro Systemu Ubuntu (na przykład 3.2.0-58.88, wydane w styczniu 2014 r.), oznacza to, że system operacyjny nie został zaktualizowany.

Aby rozwiązać ten problem, dołącz dysk systemu operacyjnego do innej uruchomionej maszyny wirtualnej, a następnie usuń plik reguły udev w obszarze /etc/udev/rules.d/70-persistent-net.rules.

Aby uniknąć tego problemu w przyszłości, zalecamy zaktualizowanie pakietu udev na maszynie wirtualnej. Na przykład uruchom następujące polecenie:

sudo apt-get update
sudo apt-get install udev

Błąd 2

Aby rozwiązać ten problem, zresetuj /etc/network/interfaces.d/eth0.cfg plik do wartości domyślnej i poproś serwer DHCP platformy Azure o uzyskanie adresu IP. Następnie usuń pliki w /var/lib/dhcp folderze zawierającym buforowane ustawienia DHCP. Poniżej przedstawiono przykład domyślnego pliku eth0.cfg:

# The primary network interface
auto eth0
iface eth0 inet dhcp

Rozwiązywanie problemu w dostosowanym systemie operacyjnym Linux

Jeśli maszyna wirtualna, która ma problem z siecią, używa przekazanego dysku VHD, możesz spróbować skonfigurować sieć na podstawie obrazu galerii roboczej. W tym celu dołącz problematyczny dysk jako dysk danych do maszyny wirtualnej galerii, a następnie uruchom następujące polecenia.

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

Skopiuj do bieżących plików folderów z działającej maszyny wirtualnej:

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

Aby uzyskać więcej informacji na temat dołączania dysku danych do maszyny wirtualnej z galerii, zobacz How to attach a data disk to a Windows VM in the Azure Portal (Jak dołączyć dysk danych do maszyny wirtualnej z systemem Windows w witrynie Azure Portal).

Dokumentacja: pliki sieciowe dla systemów operacyjnych

Konfiguracja karty sieciowej

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

Konfiguracja nazwy hosta

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

Pliki konfiguracji DNS

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

Pliki konfiguracji bramy domyślnej

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

Trasy statyczne

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

Reguły zapory

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

Skontaktuj się z nami, aby uzyskać pomoc

Jeśli masz pytania lub potrzebujesz pomocy, utwórz wniosek o pomoc techniczną lub zadaj pytanie w społeczności wsparcia dla platformy Azure. Możesz również przesłać opinię o produkcie do społeczności opinii na temat platformy Azure.