Narzędzie do tunelowania pakietów warstwy sieci w pakietach DNS.

Interfejs TUN/TAP

Stworzenie tunelu jest możliwe dzięki sterownikowi wirtualnych kart sieciowych TUN/TAP. W systemie tworzony jest interfejs wirtualny (np. tun0), który po stronie programu widoczny jest jako deskryptor pliku. Takie rozwiązanie pozwala na łatwe (przy użyciu funkcji systemowych) odczytywanie, czy zapisywanie pakietów do interfejsu.

Ruch w tunelu

Po odczytaniu danych z interfejsu typu TUN są one kapsułkowane do pakietów DNS, które są następnie wysyłane do klienta/serwera. Druga strona kompletuje wszystkie przesłane pakiety DNS, po czym wydobywa z nich dane i przekazuje na interfejs.

Pobieranie

Kod źródłowy dostępny jest w repozytorium git w serwisie GitHub. Polecenie do sklonowania repozytorium:

git clone https://github.com/chyla/SimpleDNSTunnel

README

Introduction
============

Create DNS tunnel between two hosts.

Git repository: https://github.com/chyla/SimpleDNSTunnel


Building and installing
=======================

./configure --prefix=/usr/local
make
make install


Example configuration
======================

IMPORTANT NOTE
--------------
Client should first send packet to the server.
Server will then know client ip.

Server IP: 192.168.122.73


Server
------

# run server
bin/sdnst --mode server --address 192.168.122.73

# assing ip address to interface tunX (see log file for interface number)
ifconfig tun0 10.0.0.2

# add route to second host
route add -host 10.0.0.1 tun0


Client
------

bin/sdnst --mode client --address 192.168.122.73
ifconfig tun0 10.0.0.1
route add  -host 10.0.0.2 tun0