Bir Linux kutusundan aynı anahtara bağlı NIC'ler nasıl belirlenir?


15

İlk kurulum

Linux yöneticisi olarak, 6 NIC eth0 to eth5 içeren yeni bir Linux kutusu kurdunuz. Eth0 arabirimi doğru yapılandırılmış ve diğer tüm arabirimler şu anda açık ancak IP adresi yok. Ağ adamları bu kutuya dört kablo bağladılar. Kutuyu üretim ağına bağlamak için iki LAN kablosu ve kutuyu özel bir ağa bağlamak için iki LAN kablosu kullanılır. Yalnızca eth0'ın üretim ağına bağlı olduğunu biliyorsunuz. Ancak, farklı sunucu nesilleri ve / veya ağ adamları bağlantıları için yanlış NIC'leri kullandıkları için aynı anahtarla hangi diğer NIC'in bağlı olduğunu bilmiyorsunuz.

Eldeki görev

Bu kurulum altyapınız için tipik olduğundan, bağlantı arayüzlerinin yapılandırmasını otomatikleştirmek istiyorsunuz. Artık hangi NIC'lerin bağlı olmadığını ve hangi NIC'lerin aynı anahtara bağlandığını tespit etmek için göreviniz var, böylece bağlanabilirler. Yalnızca Linux kutularına erişiminiz vardır ve anahtarları sorgulayamazsınız.

fikirler

Bağlantı durumunu tespit etmek kolaydır:

ethtool $device | grep 'Link detected' | cut -d ':' -f 2

Ancak aynı anahtara bağlı cihazlar nasıl eşleştirilir?

HP- UX'te bu amaç için linkloop [1] adı verilen bir araç vardır . Resmi Linux aracı eksik (yine de eski bir SourceForce projesi var).

Zaten aklıma gelen olası çözümler şunlardır:

  1. TCpdump ile tüm arayüzleri dinleyin. ICMP (yayın) paketi oluşturun ve gönderin. Bu paketi gören arabirimlerin aynı anahtara bağlanması gerekir. -> bunun için kullanılabilecek basit araçların önerilerine ihtiyaç duyulur. Komut dosyaları için düz kabuk komutları veya Python kullanmak istiyorum.

  2. Harici bir kutu ile kolay bir protokol (HTTP?) İle konuşmaya çalışın ve bir yanıt olup olmadığını görün. -> Yüzüstü ve harici bir kutuya bağlı hata.

Bu görevi nasıl çözeceğinizle ilgili başka fikirleriniz veya önerileriniz var mı?

Tüm yorumlarınız için şimdiden teşekkür ederiz!

[1] http://linux.die.net/man/1/linkloop


1
Bu gerçekten ödev gibi kokuyor - Bu, üretim ortamında karşılaştığınız gerçek bir sorun mu?
voretaq7

2
Gerçek bir sorun ve can sıkıcı bir sorun da ekleyebilirim. Uzun zamandır okul dışındayım ...
Reiner Rottmann

Tamam - sormamın nedeni, soruyu ifade etmenin yolu, ağ ders kitaplarından birinin stilini hatırlattı :-)
voretaq7

Yanıtlar:


10

Anahtarlar zaten istediğiniz bilgileri gönderiyor olabilir. Cisco anahtarlarıysa, varsayılan olarak, bağlandığı anahtar hakkında bilgi sağlayacak olan CDP (Cisco Keşif Protokolü) adı verilen bir işlem kullanırlar.

Bu bilgileri aşağıdakilerle görüntülemek için tcpdump kullanabilirsiniz (uygun arayüzün yerine):

tcpdump -nn -v -i eth0 -s 1500 -c 1 'ether[20:2] == 0x2000'

CDP'nin standart tabanlı sürümü LLDP'dir (bağlantı katmanı bulma protokolü). Bazı satıcılar bunu varsayılan olarak açık, diğerleri kapalı olarak ayarlayacaktır, bu nedenle kilometreniz değişecektir. Linux için bazı LLDP uygulamaları vardır, ancak yukarıdakine benzer bir şey istiyorsanız bunu kullanabilirsiniz (bir Cisco anahtarında LLDP kurun ve aşağıdakilerle daha tutarlı olan aşağıdakileri test edin):

tcpdump -nn -v -i eth0 -s 1500 -c 1 'ether proto 0x88cc'

Bunu engelleyerek, sağladığınız seçenek 1'de yapılan bir değişikliğin işe yarayabileceğini söyleyebilirim, ancak bir yayın ICMP göndermek yerine normal bir ICMP'yi (ARP tablosunda olmayan bir ana bilgisayara) deneyebilir ve ARP paketlerini yakalayabilirsiniz. ARP isteği eth0 gönderirse ve eth1 ve eth3 üzerinden alırsanız, bunların aynı VLAN'da olduğunu bilirsiniz. Bunun için en basit komut aşağıdaki gibidir:

tcpdump -i eth0 arp

1
Aslında bu çözüm ile gitti ve tcpdumps arka planda iş parçacıkları olarak çalışan küçük bir python komut dosyası yazdım ve sonra arp istekleri göndermek ve hangi arayüz hangi src mac hangi arp paketleri aldığını görmek. Çalışır, ancak tüm zaman aşımları ile biraz zaman alır.
Reiner Rottmann 17:13

Sanırım ping zaman aşımlarından bahsediyorsun? Zaman aşımını bir saniyenin altına düşürmek için seçenek olarak fping veya nmap'i deneyebilirsiniz. Örneğin, "fping -c1 -t200 192.168.0.1" veya "nmap -sP --max-retries = 1 --host-timeout = 200ms 192.168.0.1".
YL

3

Anahtar sizinle LLDP kullanarak iletişim kuracaksa, LLDP'yi çalıştırabilir ve orada daha fazla bilgi bulabilirsiniz.



1

Neden sadece linklooparacı indirip oluşturmuyorsunuz ? O kadar eski değil ...

Aksi takdirde, katman 2 üzerinden yayın yapacak ve tcpdump ile aldığınızdan emin olacak bazı araçlar kullanacağım.

Bir yayın ICMP paketi göndermek kolaydır ping -b 192.168.1.255


Bunu yapmaya çalıştım ve 2016'da Ubuntu 14'te başarısız oldu, bu yüzden YMMV.
Hack Saw
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.