Skip to content

schmidtadrian/iodine_rs

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

26 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

iodine_rs

Rust implementation of the iodine client, to tunnel IPv4 through DNS.

Prerequisites

  • Rust
  • C compiler
  • cmake

Quickstart

Start the iodine server similar like:

sudo ./bin/iodined -f -c -P secretpassword 192.168.99.1 <DOMAIN>

Start the rust client (root privileges required):

cargo build
sudo target/debug/iodine_rs

Status

DNS Type TXT is currently hard coded. Currently base32 only, could be easily extended.

  • Handshake
    • Version handshake
    • Login
    • Setup TUN dev
    • Check edns0 support
    • Set upstream encoding (using default)
    • Set downstream encoding
    • Set fragment size
  • Data transfer

Intermediate DNS server

Nearly all DNS server have some kind of mechanism to block spam or dns tunneling. We tested with the following Intermediates:

  • google (works best!)
  • cloudflare (high latency)
  • eduroam (doesn't work)

Further work

  • Support more encodings
  • Async TUN & DNS (may also send & recv)

About

Rust implementation of the iodine client.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages