View Categories

NIC Algılama

4 dakika okuma

Bu sayfada Ağ Arayüz Kartı tespiti hakkında bilgi bulunmaktadır.

Genel Bakış #


Bilgisayarlar, Swarm’ın otomatik olarak algıladığı IPv4 ve IPv6 adreslerine sahip ağ arayüz kartlarıyla (NIC) donatılmıştır. Ancak, bazen bu adresler algılanamayabilir.

Tespit Sorunları #


Algılama hatası, sistem hatası veya DHCP bağlantı sorunu nedeniyle oluşabilir; bu durumda makine DHCP sunucusundan IP adresi alamamıştır.

DHCP bağlantı sorununu nasıl çözersiniz:

Bakım – Ağı, DHCP’yi ve IP bağlantısını kontrol edin ve her şeyin düzgün çalıştığından emin olun.
Manuel IP adresi atama – Bilgisayara manuel bir IP adresi atayın. Bu IP adresi mevcut ağ içinde benzersiz olmalıdır (yerel ise, yerel ağ içinde benzersiz olmalıdır).

Swarm hâlâ herhangi bir ağ kartı bulamazsa, http://localhost:1113 Yönetici panelinde aşağıdaki mesajı görüntüler.

Swarm günlüklerinde ise şu bilgiler görüntülenir:

[BİLGİ – uygulama] Swarm v2.0.15 7849af98 çalıştırılıyor
[UYARI – uygulama] Yedekleme modunda çalıştırılıyor [NIC YOK]
. . . . . . .

Bu durumda, NIC’leri swarm.yaml ayar dosyası üzerinden manuel olarak ayarlayın. Swarm şu anda yalnızca IPv4’ü desteklemektedir.

 manualNics:
  – ip: 1.1.1.2
    name: mynic

Tam bir özellik belirtimi de desteklenmektedir (MAC + IPv4 + IPv6 + ad). Ancak, kısa bir özellik belirtimi (IP + ad) yeterlidir: 

 manualNics:
  – mac: 11:12:13:14:15:16
    ip4: 1.1.1.44
    ip6: 2001:0000:130F:0000:0000:09C0:876A:130B
    name: mynic

NIC adları benzersiz olmalıdır!


Algılanan ve manuel olarak eklenen ağ kartları, günlük dosyasında şu şekilde raporlanır:

[BİLGİ – uygulama] Algılanan ağ arayüzleri:
  Adı: docker0
  IPv4: 172.17.0.1
  IPv6: 0:0:0:0:0:0:0:0
  MAC: 02:42:b8:e9:48:de


  Ad*: my_fake_nic_name
  IPv4: 1.1.1.44
  IPv6: 2001:0:130f:0:0:9c0:876a:130b
  MAC: 11:12:13:14:15:16


  İsim*: mynic
  IPv4: 1.1.1.2


  Ad : tun0
  IPv4 : 10.1.0.253
  IPv6 : fe80:0:0:0:c760:5177:eed0:9a6d
  MAC : 00:00:00:00:00:00


  Ad : wlp0s20f3
  IPv4 : 192.168.100.3
  IPv6 : fe80:0:0:0:ca5a:fc1d:acb8:fe53
  MAC : 74:13:ea:b8:ce:af

Manuel olarak eklenen ağ kartlarının adlarının sonunda günlük dosyasında * işareti bulunur.

Teknik Detaylar #


Ağ arayüz kartları (NIC’ler) programatik olarak ve işletim sistemi komutları çağrılarak tespit edilir Linux’ta ip, ifconfig , MacOS’ta ifconfig ve Windows’ta ipconfig . İki yöntemin sonuçları birleştirilir ve belirlenen/tespit edilen NIC’ler ve IP adresleri kümesi olarak kullanılır. Sonuç, Swarm günlüğüne ayrıntılı olarak kaydedilir.

 Örnek :

[BİLGİ – uygulama] Algılanan ağ arayüzleri:
  Adı: wlp0s20f3
  IPv4: 192.168.100.3
  IPv6: fe80:0:0:0:ca5a:fc1d:acb8:fe53
  MAC: 74:13:ea:b8:ce:af


  Adı: docker0
  IPv4: 172.17.0.1
  IPv6: 0:0:0:0:0:0:0:0
  MAC: 02:42:fb:c1:5a:2b


  Ad : tun0
  IPv4 : 10.1.1.149
  IPv6 : fe80:0:0:0:13de:872d:f3ee:6d4a
  MAC : 00:00:00:00:00:00


  İsim*: fake1
  IPv4: 1.1.1.3


  İsim*: mynic
  IPv4: 1.1.1.2


  Ad*: fake0
  IPv4: 1.1.1.44
  IPv6: 2001:0:130f:0:0:9c0:876a:130b
  MAC: 11:12:13:14:15:16
[DEBUG – app] Kütüphane 6 NIC algıladı (wlp0s20f3; docker0; tun0; fake1; mynic; fake0).
Bazıları reddedildi:
*** 1 NIC REDDEDİLDİ: geri döngü nedeniyle reddedildi. İşletim
sistemi komutları 3 NIC algıladı (docker0; tun0; wlp0s20f3).
*** “ifconfig” NIC’leri algılayamadı:
DecodeCOE “(stderr) /bin/sh: 1: ifconfig: bulunamadı”


“/usr/sbin/ifconfig” NIC algılama görülen günlük:
  Bazı NIC’ler (0:”docker0: bayraklar=4099<UP,BROADCA…”):
  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  (NIC:”docker0″,Bayraklar:[“UP”,”BROADCAST”,”MULTICAST”])
    Bazı IPv4:
    ~~~~~~~~~
    IP:”172.17.0.1″
. . . . . . . .

Otomatik olarak algılanan ağ kartlarını reddet #


Bazı ağ arayüz kartları (NIC’ler) reddedilebilir, bu nedenle Swarm bunları yok sayar. Swarm, TCP üzerinden iletişim kurarken belirli bir ağ arayüz kartına bağlanmaz. Varsayılan olarak, Swarm, geri döngü arayüzünü/ağ arayüz kartını reddeder. Ayrıca, swarm.yaml ayar dosyasında şu ayarı kullanarak kendi reddetme kurallarınızı ekleyebilirsiniz:

rejectNics: [<BAZI-KRİTERLER>]

Desteklenen kriterler (örnekler): loopback, nocarrier, p2p, noarp, vm, vpn, tunnel, nogateway, nomac, nomulticast, name:eth12, ipv4:10.0.0.99. Parantez içindeki listedeki öğeleri virgülle ayırın. Daha fazla bilgi için bu makaleye bakın.

Bazı kısa notlar: noarp – ARP ayarlanmamış, vm – NIC sanal makineye ait gibi görünüyor, nomac – MAC adresi ayarlanmamış, vb. Örneğin, name:eth12 bu ada sahip NIC’leri reddeder ve ipv4:10.0.0.99 bu IP adresine sahip NIC’leri (bunlardan birini) reddeder.

Elle eklenen ağ kartlarına ret kriterleri uygulanmaz.

Ağ Arayüzüne Göre Birden Çok IP Adresi #


Bazı ağ kartlarının birden fazla IP adresi vardır. Swarm, ağ kartı başına yalnızca 1 IP adresi tanır, bu nedenle yalnızca bir IP adresi seçen bir algoritması vardır. Varsayılan olarak, Swarm  Windows’ta Tercih Edilen olarak işaretlenmiş IP adresini tercih eder . Swarm, en uzun tercih edilen kullanım ömrüne sahip IP adresini (mevcut olduğunda) seçer ve başka hiçbir kriter mevcut olmadığında ilk IP adresini tercih eder.
Buna müdahale edebilirsiniz: swarm.yaml ayar dosyasına eklenebilecek özel bir ayar vardır: nicIpPrio. Bu, önceliklerin veya sıralama taktiklerinin bir listesinin haritasıdır (anahtar, ağ kartının adıdır):

index – İşletim sistemi komutları raporunun çıktısında dizine göre sıralama yapar.
preferred_lft – IP adresinin “tercih edilen kullanım ömrüne” göre sıralama yapar.
unlikely <IPv4> – Düşük öncelikli IP adresini işaretler. Birden fazla IP adresi olması durumunda seçilmez. Birden fazla unlikely önceliğe izin verilir. 
likely <IPv4> – Birden fazla IP adresi olması durumunda, bu IP adresini belirli NIC için yüksek öncelikli olarak işaretler. 

`nicIpPrio` ayarının anahtarı, ağ arayüz kartının (NIC) adını içeren bir dize veya bu önceliklerin tüm/herhangi bir NIC’e uygulanması gerekiyorsa `*` işaretidir. İki iyi deneysel kural:

  • Karmaşık öncelikli kompozisyonlar önerilmez.

  • Tekrarlanan önceliklerin hiçbir etkisi olmaz.

Sorun giderme #


  • Şu anda işletim sisteminin çıktı komut dili İngilizce’dir. Yerel diller Windows ipconfig’de gösterilebilir Ancak, bunlar yalnızca alan değerlerinde izin verildiğinden, ayrıştırmayı muhtemelen bozmayacaktır.

Geçici çözüm: Şu komutu çalıştıran bir BAT dosyası oluşturun:

chcp 850
ipconfig /all

chcp 437 veya chcp 850 gibi komutlar kullanılarak kod sayfası ayarlanır – daha fazla bilgi için buraya bakın .

  • Olası bir diğer sorun ise, ağ arayüz kartlarını (NIC) ve IP adreslerini belirlemek için kullanılan işletim sistemi komutlarının makinede bulunamamasıdır. Herhangi bir hata yoksa, bunlar programatik olarak başarıyla tespit edilmiştir. İşletim sistemi komutlarının tam yolunu swarm.yaml ayar dosyasında aşağıdaki gibi belirtebilirsiniz:

Linux

Windows

MacOS

ifconfigCmdPath

ipCmdPath

ipconfigCmdPath

ifconfigCmdPath

Bu ayarların değeri aynı türdedir: ifconfig (Linux ve MacOS için), ipconfig (Windows için) ve ip (Linux için) olarak kullanılan yürütülebilir komutun tam yoludur  .

Bu işletim sistemi komutları, orijinal bilinen komutların beklenen komut satırı sözdizimine ve beklenen çıktısına sahip olmalıdır, hatta başka bir şeyle değiştirilmiş olsalar bile: bir sistem yöneticisi, komut satırı sözdizimlerini ve çıktılarını orijinal komutlardaki gibi koruyarak bunları bir Shell betiği/BAT dosyasına sarabilir. Linux için bir örnek, sadece bir fikir olarak – dikkat edin ki, bu sarmalayıcı betiğin çıktısı, orijinal/sarmalanmış komutun çıktısı gibi olmalıdır (ek komutlardan gelen çıktıyı bastırmak için):

#!/bin/sh
# Bazı çok önemli komutlar… 2>&1 >/dev/null
/secret/path/to/ip $*
# ve diğer önemli komutlar… 2>&1 >/dev/null

  • Bir diğer seçenek ise sistem/genel PATH ortam değişkenini değiştirmektir.

Swarm varsayılan olarak bunları şu sözdizimiyle çağırmaya çalışır:

Linux

Windows

MacOS

ip -ja

/usr/bin/ip -ja

ifconfig -a

/usr/sbin/ifconfig -a

ipconfig /all

ifconfig -a

/sbin/ifconfig -a

Tarafından desteklenmektedir BetterDocs

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir