Switch/crosslink detektálás

Sziasztok!

Hogyan tudom két linuxos gép közötti kapcsolatról eldönteni, hogy közvetlenül crosslink kábellel vannak-e összekötve vagy közöttük switch? A gépek messze vannak, ezért nem tudom őket megnézni, de root jogok vannak mindkét gépen.

Hozzászólások

szvsz max ugy, hogy figyeled, vannak-e idegen broadcast csomagok is

Milyen messze vannak? Ha cat5 a kabel, es a tavolsag tobb mint 100 m, akkor nem crosslink :D

Ha a fizikai kapcsolatra gondolsz, akkor hirtelen csak a nagyon egyszerű módszer jut az eszembe.
Megnézed, hogy hogyan vannak bekötve a patch kábel erei.
Ha mindkét esetben ugyanaz a színsor, akkor van közöttük egy switch.
Ha más a színsor, akkor direkt, cross kábel.
1,2
3,6
az aktív érpár

sose próbáltam informácót kibányászni belőle, de a NIC driverek logolják a fizikai csatlakozást, nem?
Bár, a X-linket nem mondja meg, de ha egyenes kábel van köztük direktben és az egyik kártya magát tette X-be, az talán dmesg-ből kiszedhető (az egyenes kábelek + switch, illetve a X-link kábel IMHO ugyanúgy látszik a kártya számára)
De egy broadcast - akár arp-n - valóban segíthet.

A broadcast ping akkor is megy, ha pl. vlan-ok vannak konfigolva a switchen? Szvsz nem, bar nem ez a szakteruletem :)

Egy egzotikus megoldas :
Nezd meg mindket oldalon ethtool-lal, hogy milyen speed-re negotialt.
Ha nem ugyanaz, akkor nyertel -> switch
Ha ugyanaz, akkor allitsd at a link speedet az egyik oldalon, es nezd, hogy a masik oldalon valtozik-e. Ha igen, akkor crosslink kabel, ha nem, akkor switch van koztuk.

Vedd le/tedd vissza 10/100/1000Mbps-re a kapcsolatot a egyik oldalon (amit elbír ezek közül).
Ha a másik oldal is levált, akkor valószínű a direkt(ebb) kapcsolat (kábel, repeater, esetleg hub).
Ha nem vált, akkor switch.
állítás: ifconfig XXX media YYY
túloldalon nézés: mii-tools XXX

Az 'A' gépen tcpdump-al lehetne figyelni az ARP kéréseket. Ha a 'B' gépen kitörlöd az ARP cache-ből az 'A' címét, akkor egy 'ping A-ip-címe' parancsra a 'B' gép ARP kérést küld, amit vagy a switch válaszol meg, vagy az 'A' gép, ha nincs közöttük switch.

De a sebesség átállítás egyszerűbbnek néz ki.

Azért hangzik jól, mert a switch-ek megjegyzik a hálózati címeket, és válaszolnak az ARP kérésekre. A tcpdump-ból meg eldönthető, hogy az 'A' gép válaszolt-e a 'B' géptől származó ARP kérésre, vagy valaki más. Az a "valaki" meg csak egy switch lehet, az 'A' és a 'B' gép között.

ethtool szerintem kiírja az infóban.
________________
Intel(R) Core(TM)2 Quad CPU Q6600 @ 2.40GHz, 4 Gb ram, x86_64 2.6.29-gentoo-r5

Kihuzod/ledown-olod az egyiket, es megnezed, hogy a masik interface-e is down-ba megy-e.

--
Fontos feladatot soha ne bizz olyan gepre, amit egyedul is fel tudsz emelni!

Nos, igy nez ki, ha a ket gep *sima* kabellel van osszekotve, mindkettoben 10/100-as kartyaval:


$ sudo ethtool eth1
Settings for eth1:
Supported ports: [ TP MII ]
Supported link modes: 10baseT/Half 10baseT/Full
100baseT/Half 100baseT/Full
Supports auto-negotiation: Yes
Advertised link modes: 10baseT/Half 10baseT/Full
100baseT/Half 100baseT/Full
Advertised auto-negotiation: Yes
Speed: 100Mb/s
Duplex: Full
Port: MII
PHYAD: 1
Transceiver: internal
Auto-negotiation: on
Supports Wake-on: g
Wake-on: g
Current message level: 0x00000007 (7)
Link detected: yes

switchel (patch kábel):

$ sudo ethtool eth0
Settings for eth0:
Supported ports: [ TP MII ]
Supported link modes: 10baseT/Half 10baseT/Full
100baseT/Half 100baseT/Full
1000baseT/Half 1000baseT/Full
Supports auto-negotiation: Yes
Advertised link modes: 10baseT/Half 10baseT/Full
100baseT/Half 100baseT/Full
1000baseT/Half 1000baseT/Full
Advertised auto-negotiation: Yes
Speed: 100Mb/s
Duplex: Full
Port: MII
PHYAD: 0
Transceiver: internal
Auto-negotiation: on
Supports Wake-on: pumbg
Wake-on: g
Current message level: 0x00000033 (51)
Link detected: yes

Ha ez biztonsági kérdés, akkor nem igazán tudsz védekezni ez ellen, max ha végpontokat összekötöd valami titkosított csatornán (vtun/openvpn). Ha nem biztonsági, akkor közelítő módszer van csak, leírták a hallgatózást, ha nem az egyikről éred el a másikat, az autonegotiaton állítgatása is lehet megoldás (kikapcsolod, beállítod fixre, ha a kapcsolat tovább működik, de csak az egyik gépen változik a sebesség, akkor van közben valami).