Pengaturan awal
Sebagai administrator Linux, Anda telah menginstal kotak Linux baru dengan 6 NIC eth0 ke eth5. Antarmuka eth0 dikonfigurasikan dengan benar dan semua antarmuka lainnya saat ini berjalan tetapi tanpa alamat IP. Orang-orang jaringan hanya memasang empat kabel ke kotak ini. Dua kabel LAN digunakan untuk menghubungkan kotak ke jaringan produksi dan dua digunakan untuk menghubungkan kotak ke jaringan pribadi. Anda hanya tahu bahwa eth0 terhubung ke jaring produksi. Tapi Anda tidak tahu NIC lain yang terhubung ke switch yang sama karena ada generasi server yang berbeda dan / atau orang-orang jaringan menggunakan NIC yang salah untuk koneksi mereka.
Tugas di tangan
Karena pengaturan ini tipikal untuk infrastruktur Anda, Anda ingin mengotomatiskan konfigurasi antarmuka ikatan. Sekarang Anda memiliki tugas untuk mendeteksi NIC mana yang tidak terhubung sama sekali dan NIC mana yang terhubung ke sakelar yang sama sehingga mereka dapat terikat. Anda hanya memiliki akses ke kotak Linux dan tidak dapat meminta switch.
Ide ide
Mendeteksi status tautan itu mudah:
ethtool $device | grep 'Link detected' | cut -d ':' -f 2
Tetapi bagaimana cara mencocokkan perangkat yang terhubung ke saklar yang sama?
Di HP-UX ada alat untuk tujuan itu yang disebut linkloop [1]. Alat Linux resmi hilang (ada proyek SourceForce lama, meskipun).
Solusi yang mungkin telah terlintas di pikiran saya adalah:
Dengarkan di semua antarmuka dengan tcpdump. Membuat dan mengirim paket ICMP (broadcast). Antarmuka yang melihat paket itu perlu dihubungkan ke sakelar yang sama. -> butuh saran alat sederhana yang dapat digunakan untuk itu. Saya ingin menggunakan perintah shell biasa atau Python untuk scripting.
Cobalah berbicara dengan kotak eksternal melalui protokol mudah (HTTP?) Dan lihat apakah ada respons. -> Kesalahan cenderung dan tergantung pada kotak eksternal.
Apakah Anda memiliki ide atau saran lebih lanjut bagaimana menyelesaikan tugas ini?
Terima kasih sebelumnya atas semua komentar!
Jawaban:
Sakelar mungkin sudah mengirimi Anda informasi yang Anda inginkan. Jika mereka adalah switch Cisco, secara default mereka akan menggunakan proses yang disebut CDP (Cisco Discovery Protocol) yang akan memberi Anda informasi tentang switch di mana ia terhubung.
Anda dapat menggunakan tcpdump untuk melihat informasi ini dengan yang berikut (mengganti antarmuka yang sesuai):
Versi standar berbasis CDP adalah LLDP (protokol penemuan lapisan tautan). Beberapa vendor akan mengaktifkan ini secara default dan yang lainnya mati, sehingga jarak tempuh Anda akan bervariasi. Ada beberapa implementasi LLDP untuk Linux, tetapi jika Anda menginginkan sesuatu yang mirip dengan di atas, Anda dapat menggunakan ini (mengatur LLDP pada switch Cisco dan menguji di bawah ini, yang lebih konsisten dengan di atas):
Kecuali itu, saya akan mengatakan bahwa modifikasi opsi 1 yang Anda berikan mungkin bekerja, namun, alih-alih mengirimkan ICMP siaran, Anda dapat mencoba ICMP normal (ke host yang tidak ada dalam tabel ARP) dan menangkap paket ARP. Jika permintaan ARP dikirim eth0 dan Anda menerimanya di eth1 dan eth3, maka Anda tahu itu ada di VLAN yang sama. Perintah paling sederhana untuk itu adalah sebagai berikut:
sumber
Jika saklar akan berkomunikasi dengan Anda menggunakan LLDP, Anda mungkin dapat menjalankan LLDP dan menemukan informasi lebih lanjut di sana.
sumber
Jika switch adalah perangkat cisco Anda mungkin bisa mendapatkan info CDP, asalkan mereka mengumumkan / menyiarkan info cdp
misal alat cdp atau cdpr
sumber
Mengapa tidak mengunduh dan membuat
linkloop
alat saja? Tidak setua itu ...Kalau tidak, saya hanya akan menggunakan beberapa alat yang akan disiarkan di layer 2 dan memverifikasi bahwa Anda menerimanya melalui tcpdump.
Mengirim paket ICMP siaran mudah
ping -b 192.168.1.255
sumber