En datadiod är en nätverkskomponent vars syfte är att garantera enkelriktad närverkskommunikation. Dioder kan användas för att flytta information mellan nätverk som normalt kräver ”fysisk separation”, eller ”galvaniskt skilda nätverk”.
Vid de tillfällen du funderar över att använda en datadiod rör du dig förmodligen i riktigt känsliga IT-miljöer. Då är det viktigt att komponenter du använder har hög assurans, vilket betyder att du vet varifrån komponenten kommer och vem som har tillverkat den.
Hög assurans gör att datadioder tillverkas i små serier, oftast i mindre företag. Detta gör dem dyra, riktigt dyra. Det är inte ovanligt att betala en miljon kronor.
Men det behöver inte vara så kostsamt, du kan bygga en egen datadiod baserat på enkla standardkomponenter, t ex en billig media-konverterare som konverterar ethernet över koppar till ethernet över Fiber.
Principskiss
Principen för en datadiod är enligt följande:
- En server på ett nätverk ansvarar för att skicka information över diod-förbindelsen. Denna kallas TX-Server (Transmit).
- En annan server på ett annat nätverk anvarar för att ta emot information över diod-förbindelsen, och tillgängliggöra den på det egna nätverket.
En datadiod av Rasperry Pi och Mediakonverterare
Till vänster i bilden finns en Raspberry Pi som agerar TX-server. Den är ansluten till ett nätverk via ett USB-nätverkskort. Till höger i bild är en annan Rasberry Pi som agerar RX-server. Den är ansluten till sitt nätverk via ett WIFI-USB-nätverkskort.
De inbyggda nätverkskorten i Rasberry Pi används till diodförbindelsen. Koppar-anslutningen från TX-servern konverteras till fiber med hjälp av en mediakonverterare, och sedan tillbaka till kopppar igen med en annan mediakonverterare.
Poängen är att det endast är en (1) fiber ansluten mellan mediakonverterarna. Den högra mediakonverteraren har ingen fiber ansluten på sin TX-port, och kan därmed aldrig sända någon information tillbaka till höger i bild.
Att lura en mediakonverterare
Denna lösning är baserat på mediakonverteraren TP-Link MC110CS eftersom det var den billigaste mediakonverteraren som stod att uppbringa när jag byggde denna diod.
Ett problem jag stötte är att denna mediakonverterare har en ”link detection”-funktion, som gör att om den inte får inkommande ljus på RX-porten så kommer den inte att sända något ljus på TX-porten.
Efter lite experimenterande insåg jag att MC110CS kan luras genom att ansluta ytterligare en mediakonverterare vars enda uppgift är att skicka in lite ljus i RX-porten. Tyvärr räckte det inte med en ytterligare mediakonverterare, utan jag behövde TVÅ ytterligare enheter.
På grund av detta så bildar alla mediakoverterare till höger i bild en liten trave, men det viktiga är att den vänstra mediakonverteraren endast har en RX-anslutning och därmed inte kan skicka någon information.
En annan lösning hade varit att skaffa någon mer avancerad media-konverterare där Link-detection-protokollet går att stänga av.
Grundrecept för en datadiod
- ETH0 i både TX-servern och RX-servern är Diod-förbindelsen. Tilldela dessa interface en statisk IP-adress vardera på samma IP-nät.
- ARP kommer inte att fungera över diod-förbindelsen, så på varje Raspberry PI måste du lägga in en statisk ARP-post som pekar ut den andra serverns MAC-adress.
- Om du kommit så här långt testar du att skicka UDP-paket från TX-servern till RX-servern. Det finns lite olika UDP-ping-program där ute, men om du har ambitionen att bygga en datadiod så förutsätter jag att du bygger ett enkelt eget UDP-ping-program.
- Om du nu kan skicka UDP-trafik är över din diod, så är det dags att börja bygga olika slags proxy-funktioner.