Permalänk
Medlem

iodine: ip-över-dns-tunnel

Det har säkert hänt er med. Man sitter på ett ställe med betal-wlan som är dyrt, och vill surfa. Man märker att innan man betalar så får man slå upp domännamn via deras dns. Man tycker att detta borde man kunna dra nytta av..

Jag och en kompis har slängt ihop programmet iodine som fixar just detta, tunnlar IPv4 över DNS. Det funkar både via en relayande DNS och direkt point-to-point. Vi har fått det att funka i Linux, FreeBSD och OpenBSD, det borde funka på OS X med om man har TUN/TAP.

http://code.kryo.se/iodine/

Koden är BSD-licensierad, bara att hacka på!

Visa signatur

4 datorer: 9 cpuer (plats för 4 till), 10scsi+1satadisk, 7.75gb ram, bara Linux
http://isitfika.net http://code.kryo.se

Permalänk
Medlem

Hur får ni "tunnel IPv4 data through a DNS server" att fungera?

En DNS server svara på ju bara på DNS frågor, den routar inte ip-trafik.

Eller menar du att du har en "tunnel server" hemma som lyssnar på DNS porten som ni kopplar up er mot?

Beskriv gärna tekniken!

Visa signatur

Kriga mot min brute: http://gunnard.se.mybrute.com om du vågar :D

Permalänk
Medlem

Ok, här kommer en förklaring. Man äger en domän, och delegerar dns-ansvaret för en subdomän till ett publikt ip. Då kommer den tillåtna dns-servern fråga den servern man angett. Sen så skickar man konstiga requests dit som svaras på och forwardas tillbaka av dns-servern i mitten. Man ser till att skicka en tom fråga varje sekund för att hämta data som går nedströms i tunneln. Det beskrivs mer ordentligt i readmen.

Edit: Lösningen är alltså tvådelad, både klient och server krävs.

Visa signatur

4 datorer: 9 cpuer (plats för 4 till), 10scsi+1satadisk, 7.75gb ram, bara Linux
http://isitfika.net http://code.kryo.se

Permalänk
Medlem

Det som inte förklaras är hur ni hanterar DNS cacharna.

Som exempel jag efterfrågar tunnel1.mytunnel.com då kommer min ISP's DNS server försöka slå upp den och när den får ett svar så cachar den svaret och nästa fråga hämtas från cachen, vilket innebär att efterföljande frågor aldrig når tunnel1host.mytunnel.com så länge svaret ligger i cachen.

Vore det inte bättre att köra openvpn över DNS porten? Eller är den denna funktionen ni har byggt?

Visa signatur

Kriga mot min brute: http://gunnard.se.mybrute.com om du vågar :D

Permalänk
Medlem
Citat:

Ursprungligen inskrivet av GunnarD
Det som inte förklaras är hur ni hanterar DNS cacharna.

Som exempel jag efterfrågar tunnel1.mytunnel.com då kommer min ISP's DNS server försöka slå upp den och när den får ett svar så cachar den svaret och nästa fråga hämtas från cachen, vilket innebär att efterföljande frågor aldrig når tunnel1host.mytunnel.com så länge svaret ligger i cachen.

Vore det inte bättre att köra openvpn över DNS porten? Eller är den denna funktionen ni har byggt?

Chansen att man får prata med vilken DNS-server som helst är väl nästan obefintlig?

Och TTL:en kan man ju sätta till vad man vill, så cachen borde inte behöva vara ett problem...

(Dessutom behöver man väl inte fråga om samma namn hela tiden.)

Edit: Vad gäller att köra OpenVPN över port 53 (udp) så går det säkert utmärkt att confa det så utan några som helst ändringar, dock fungerar det ju inte i scenariot som iodine är tänkt att användas.

Visa signatur

Desktop spel m.m.: Ryzen 9800X3D || MSI X870 Tomahawk Wifi || MSI Ventus 3x 5080 || Gskill FlareX 6000 64GB || Kingston KC3000 2TB || Samsung 970 EVO Plus 2TB || Samsung 960 Pro 1TB || Fractal Torrent || Asus PG42UQ 4K OLED
Arbetsstation: Ryzen 7945HX || Minisforum BD790i || Asus Proart 4070 Ti Super || Kingston Fury Impact 5600 65 GB || WD SN850 2TB || Samsung 990 Pro 2TB || Fractal Ridge
Proxmox server: Ryzen 5900X || Asrock Rack X570D4I-2T || Kingston 64GB ECC || WD Red SN700 1TB || Blandning av WD Red / Seagate Ironwolf för lagring || Fractal Node 304

Permalänk
Medlem

Det är inte själva tunnel1mytunnel.com som slås upp, utan subdomänder till dessa. Pollningsqueryn är tex P0001.tunnel1.mytunnel.com där siffran är en unsigned short som räknas upp och skrivs i hex.

Ett exempel på subdomän som kan slås upp är 178DA6360E06070656008616070607060BC91B8468E950D885939183E277D63. 6160EC5B3CD7E5DD6A4E060E4E2E6E1E5E3E7E014121611151317109492969. 1959397905452565155535750D4D2D6D1D5D3D7D034323631353337300EA34.0FF9

med mellanslag instoppade efter punkterna för att inte sabba html-tabellen

Visa signatur

4 datorer: 9 cpuer (plats för 4 till), 10scsi+1satadisk, 7.75gb ram, bara Linux
http://isitfika.net http://code.kryo.se

Permalänk
Medlem

En fråga... Finns det inte redan ett gäng sånna här DNS-tunnelsystem tillgängliga?

Jag vet att det har varit en allmänt känd metod att utnyttja i just de scenarion du beskriver i många år, och det känns osannolikt att alla skulle ha hållt sina implementationer för sig själva hittills...?
Tillför ni något nytt i er implementation?

Visa signatur

Desktop spel m.m.: Ryzen 9800X3D || MSI X870 Tomahawk Wifi || MSI Ventus 3x 5080 || Gskill FlareX 6000 64GB || Kingston KC3000 2TB || Samsung 970 EVO Plus 2TB || Samsung 960 Pro 1TB || Fractal Torrent || Asus PG42UQ 4K OLED
Arbetsstation: Ryzen 7945HX || Minisforum BD790i || Asus Proart 4070 Ti Super || Kingston Fury Impact 5600 65 GB || WD SN850 2TB || Samsung 990 Pro 2TB || Fractal Ridge
Proxmox server: Ryzen 5900X || Asrock Rack X570D4I-2T || Kingston 64GB ECC || WD Red SN700 1TB || Blandning av WD Red / Seagate Ironwolf för lagring || Fractal Node 304

Permalänk
Medlem

Vi hade problem att köra de befintliga på olika BSD-varianter, vilket denna klarar fint. Sen så hade vi inte byggt något med tun innan, och det var på tiden..

Edit: Vi är även nöjda med bandbredden vi fick ut. Eftersom vi använder NULL som typ och EDNS extensions så kan vi skicka nedströms-paketen utan fragmentering. Under tester så låg vi stabilt på 1 Mbit/s från sunet via en relayande dns.

Visa signatur

4 datorer: 9 cpuer (plats för 4 till), 10scsi+1satadisk, 7.75gb ram, bara Linux
http://isitfika.net http://code.kryo.se

Permalänk
Medlem

Om ISPn får för sig att begränsa DNS anropen till ett visst antal varje minut så borde detta stoppas ganska ordentligt ?

Blir inte antalet request väldans högt ?

Visa signatur

En del av mina bildlänkar hostas på egen maskin, är bildlänkarna trasiga, ha tålamod.

Permalänk
Medlem

Jo, det är inte så svårt att hindra denna typen av tunnlar. Om tex typen NULL droppas så får vi experimentera med andra typer som ser mer ut som vanlig trafik. Vid 1 Mbit/s blir det ca 80-120 frågor per sekund beroende på mtu. Eftersom vi har enkeltrådade program och fyrdubbla udp-sändningar per roundtrip så blir antalet frågor inte speciellt högt.

Visa signatur

4 datorer: 9 cpuer (plats för 4 till), 10scsi+1satadisk, 7.75gb ram, bara Linux
http://isitfika.net http://code.kryo.se