DNS Tünelleme – Docker

Dns tünellemenin mantığını anlatan bir çok yazı bulunmakta fakat pratik bir şekilde kurulumunu anlatan güncel bir yazı mevcut değil bu sebeple kısa yoldan nasıl dns tünelleme yapabiliriz bu yazıda kısaca onu anlatacağım.

Öncelikle bir adet subdomain oluşturuyoruz ve subdomain için bir A kaydı oluşturuyoruz ben bu örnekte tunnel subdomainini örnek olarak kullanacağım.DNS ayarlarının yapılandırılması her firmada fakrlılık göstermekte ve bence DNS tünelleme işleminin en zor noktası. DNS kayıtlarının güncellendiğine https://dnschecker.org/ ile yada ping atarak emin olduktan sonra docker yüklü sunucumuzda şu imajı çalıştırıyoruz. Burada –net=host parametresi ssh bağlantısının kurulabilmesi için önemli.

docker pull wingrunr21/iodine-docker
docker run -d --privileged --net=host -p 53:53/udp -e IODINE_HOST=<tunnel.example.com> -e IODINE_PASSWORD=<password> wingrunr21/iodine-docker

Bu noktada 53 portunun kullanımda olduğu ile ilgili bir hata ile karşılaşabiliriz. DNS Resolver’i bu durumda devre dışı bırakmamız gerekecektir. Aşağıdaki kodlarla servisi durduruyoruz ve açılışta başlamamasını sağlıyoruz. Bu işlem sunucuda DNS çözümlemesini durduracağından aktif sunucuda yapılması risklidir.
İşlem geri alınmak istenirse enable ve start komutları yazılarak eski haline geri getirilebilir.

systemctl stop systemd-resolved.service
systemctl disable systemd-resolved.service

Ayaların düzgün olarak yapılandırırılıp yapılandırılmadığını test etmek için https://code.kryo.se/iodine/check-it/ adresini kullanabilirsiniz.

Server tarafındaki iş bitti şimdi Client tarafına geçiyoruz.

Şu komutla bağlantıyı başlatıyoruz:
iodine -fP sifreniz 116.203.124.222 test.domaininiz.com

Connection Setup Complete, transmitting data yazısını gördüğümüzde tünel bağlantısını kurmuş olduk.

Tünel ip adresi Server Tunnel IP is 10.0.0.x şeklinde yazmaktadır.
Bağlantıyı test etmek için 10.0.0.x e ping atabilir sunucuda docker container içinde tcpdump ile paketleri izleyebiliriz.

Bağlantı kurulduğundan emin olduktan sonra ssh bağlantısı ile bir socket açıyoruz.
ssh -D 8080 -N 10.0.0.1
Daha sonra sistem ayarlarından proxy olarak 127.0.0.1:8080 ayarlıyoruz.

Şimdi ip adresimizi kontrol ediyoruz https://myip.is/
İşte bu kadar DNS tünelleme işlemini tamamladık.

DNS tünellemenin en büyük dezavantajı hızın 110 KB saniye ile kısıtlı olması fakat hiç internete erişilemediği düşünüldüğünde WEB’de gezmek için yeterlidir.