Rust implementation of the iodine client, to tunnel IPv4 through DNS.
- Rust
- C compiler
- cmake
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
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
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)
- Support more encodings
- Async TUN & DNS (may also send & recv)