Kurz zusammengefasst

Kurz zusammengefasst

Kurz zusammengefasst

Ich möchte, dass der gesamte ausgehende Datenverkehr meines Systems an ein tun0-Gerät weitergeleitet, mit DNS-Paketen verpackt und dann an das Internet gesendet wird, die DNS-Pakete aber auch zurück an das tun0-Gerät weitergeleitet werden.

Hintergrund

Im Rahmen eines Projekts, an dem ich arbeite, muss ich einen DNS-Tunnel auf einem System ohne TCP-Verkehr implementieren (der gesamte TCP-Verkehr wird gelöscht).

Ich habe mich dazu entschlossen, dies in Python zu implementieren und bin beim Verstehen der Verkehrsweiterleitung auf ein Problem gestoßen.

Das Setup würde aus einem Agenten auf dem Clientcomputer bestehen, der kein TCP verwenden kann, und einem Server ohne Netzwerkeinschränkungen.

Ich befasse mich derzeit nur mit dem ausgehenden Datenverkehr vom Client zum Server.

Der aktuelle Ansatz, den ich mit dem Kunden verfolgen wollte, war:

  1. Erstellen einer tun0Schnittstelle auf dem Clientsystem
  2. Leiten Sie den gesamten ausgehenden Datenverkehr über diese Schnittstelle weiter.
  3. Lassen Sie ein Python-Programm auf dieser Schnittstelle lauschen – ausgehende Pakete würden mit einer DNS-Abfrage umschlossen, die über die mit dem Internet verbundene Schnittstelle an das Internet gesendet wird (in meinem Fall ens33).

Zur Erstellung des Tun-Geräts habe ich Folgendes verwendet:

from pytun import TunTapDevice

tun = TunTapDevice(name=”tun0”)
tun.addr = '10.8.0.1'
tun.dstaddr = '10.8.0.2'
tun.netmask = '255.255.255.0'
tun.mtu = 1500

tun.up()

Um den Verkehr auf die tun0-Schnittstelle umzuleiten, habe ich

sudo ip route add default via 10.8.0.1 dev tun0

Das Problem

Der Datenverkehr wird zwar an mein Python-Programm weitergeleitet, und ich kann die Pakete vom Gerät lesen. Nachdem ich jedoch die neuen DNS-Pakete erstellt habe (mit den Originaldaten darin), versuche ich, die Pakete über meine ens33Schnittstelle an das Internet zu senden. Dennoch sehe ich, tcpdumpdass wiresharkdie Anforderung versucht wird, von der tun0-Schnittstelle gesendet zu werden.

Wie kann ich nur Pakete, die nicht von meinem Programm stammen, an tun0 weiterleiten? Das Konzept scheint mir VPN ähnlich zu sein. Wie machen VPN-Programme das?

Vielen Dank für Ihre Hilfe. Bitte kommentieren Sie, wenn eine Klarstellung/Bearbeitung erforderlich ist

verwandte Informationen