Private IP auf domain umleiten.

jenswmeyer

Mitglied
Mitglied seit
18 Jul 2005
Beiträge
228
Punkte für Reaktionen
0
Punkte
16
Mit welchen Freetz Paket ist es mögliche eine private IP z.b 192.168.178.110 auf eine Domain umzuleiten
 
Kannst du das mal genauer erklären?
Willst du dass ein Zugriff aus dem LAN auf diese IP auf eine andere (öffentliche) IP umgeleitet wird? Dazu müsste die Box per Proxy-ARP für diese IP antworten und dann per iptables eine NAT machen.
Oder möchtest du für diese IP eine andere Namensauflösung erreichen?
 
Also ich möchte anstatt einer dyndns Adresse eine private IP nutzen. Beispiel:
Eingabe 192.168.2.110:81 ----> dyndns.andere.Fritz:81 FREETZ
Eingabe 192.168.2.110:21 ----> dyndns.andere.Fritz:21 FTP
usw.

Hintergrund ich nutze ein Python Tool welches keine Namensauflösung Unterstützt,.
 
Hintergrund ich nutze ein Python Tool welches keine Namensauflösung Unterstützt,.
Du könntest dir ein kleines binary kompilieren, das die Namensauflösung für das Python Tool macht:
Code:
#include <stdio.h>
#include <stdlib.h>
#include <netdb.h>
#include <arpa/inet.h>

int main(int argc, char* argv[])
{
  struct hostent *hptr;
  struct in_addr addr;
  char *dnsname = NULL; 
  dnsname = argv[1];
  
 if (dnsname == NULL) {
    fprintf (stdout, "%s: hostname is missing!\n", argv[0]);
    exit (1);
  }
  
  hptr = gethostbyname (dnsname);
      
  if (hptr) {
    addr.s_addr = *((long*)hptr->h_addr_list[0]);
    printf ("%s\n", inet_ntoa(addr));
  }
  else if (!hptr) {
    fprintf (stdout, "%s: unknown hostname: %s\n", argv[0], argv[1]);
    exit (1);
  }
  
  return 0;
}
 
Ja das eine Lösung, aber doch recht schwierig. Müsste das dann crosscomplieren für sh4, und Pyhton ist neuland. Und so fit bin ich da nicht. Hatte auf eine einfache Lösung gehofft. Eine einfache Route. Überlege grade ob ich das ganze dann vieleicht über VPN mache.
 
Achso ich kann das binary für die Freetz bauen? Also wäre das dann so etwas wie virtuelle ip?
 
Ich vermute, dafür gibt es nichts (fertiges). Jede NAT wird auf ein statisches Ziel zeigen. Du könntest höchstens eine "dynamische NAT" nachbauen, indem du alle x Minuten die IP für dyndns.andere.Fritz ermittelst und bei einer Änderung die NAT ebenfalls änderst.

So in etwa
Code:
# Wie lange schlafen in sek.
SLEEPTIME=300
# Welche externe IP 
EXTDEST=dyndns.andere.Fritz
# Welche interne IP
INTDEST=192.168.10.11

OLD=$(ping -c 1 $EXTDEST | grep -m 1 -o '[0-9]*\.[0-9]*\.[0-9]*\.[0-9]*')
iptables -t nat -A PREROUTING -d $INTDEST -j DNAT --to $OLD

while true; do
	NEW=$(ping -c 1 $EXTDEST | grep -m 1 -o '[0-9]*\.[0-9]*\.[0-9]*\.[0-9]*')
	if ( "$OLD" != "$NEW"); then
		iptables -t nat -D PREROUTING -d $INTDEST -j DNAT --to $OLD
		iptables -t nat -A PREROUTING -d $INTDEST -j DNAT --to $NEW
	fi
	OLD=$NEW
	sleep $SLEEPTIME
done
Nicht getestet, nur so in der Art. Allerdings macht iptables ja auf einigen Boxen Probleme.

Vermutlich wäre es einfacher, das Programm schon mit der "richtigen" IP zu füttern?!?


EDIT Oops, da ist ja einiges passiert, während ich geschrieben und getestet habe ;-)
 
Du kannst das binary für die FB (mit Freetz) kompilieren. Evtl. mit iptables und DNAT eine Umleitung machen. Aber ich weiss nicht ob man mit iptables von einer privaten IP-Adresse auf eine externe IP-Adresse umleiten kann. Du kannst das binary in einem iptables-Script benutzen, um eine externe IP-Adresse in eine iptables-Regel einzutragen. Das iptables-Script muss nach jedem update des dyndns-Hostnamen, von onlinechanged ausgeführt werden.

EDIT:


Code:
iptables -t nat -A PREROUTING -p tcp -d 192.168.178.110 -j DNAT --to-destination "$(binary <dyndns.xxx>)"
 
Zuletzt bearbeitet:
Vermutlich wäre es einfacher, das Programm schon mit der "richtigen" IP zu füttern?!?


EDIT Oops, da ist ja einiges passiert, während ich geschrieben und getestet habe ;-)

Ja die Ip ändert sich ja jeden Tag. Müsste dann jeden Tag die neue IP in die Config eintragen.
.
Ich möchte mich schonmal recht herzlich bedanken für die guten Ansätze. werde dann jetzt mal ein wenig probieren.
 
Ich weiß ja nicht, wie das aufgerufen/konfiguriert wird, aber so in der Art, wie das oben das Skript macht, kannst du das auch auf der Büchse machen, wo das Programm läuft, so nach dem Motto:

IP=$(ping -c 1 $EXTDEST | grep -m 1 -o '[0-9]*\.[0-9]*\.[0-9]*\.[0-9]*')
# oder, mit dem Progrämmchen:
# IP=$(binary <dyndns.xxx>)
<meinpytonprogramm> $IP


@sf3978:
du müsstest wohl auch die "alten" Regeln löschen (oder flushen)
 
Mh oder du nimmst einen anderen ansatz. Ich weiß ja nicht was du genau vorhast aber du könntest zwischen den 2 boxen ja auch ein VPN einrichten, dann hättest du die andere Box im lokalen netz und die box hätte eine feste ip, das würde das problem ja auch lösen.
 
@sf3978:
du müsstest wohl auch die "alten" Regeln löschen (oder flushen)
Na klar, so habe ich das schon immer in meinem Script;):
Code:
root@fritz:/var/mod/root# cat /tmp/iptables.rules1
#!/bin/sh
#
BLACKLIST=/var/tmp/blacklist
ipt=/usr/sbin/iptables
#
[COLOR=red]$ipt -F
$ipt -t nat -F
$ipt -t mangle -F
$ipt -X
$ipt -t nat -X
$ipt -t mangle -X
$ipt -P FORWARD .....
$ipt -P INPUT .....[/COLOR]
#
...
...
 
Mit welchen Freetz Paket ist es mögliche eine private IP z.b 192.168.178.110 auf eine Domain umzuleiten
Und es gibt doch ein Paket für Freetz, mit dem man auf der FB, eine private IP in eine Domain umleiten kann (ohne iptables!). Das ist das binary dnsspoof aus dem Paket dsniff:
Code:
root@fritz:/var/mod/root# [B]dnsspoof -i lan -f /var/media/ftp/uStor01/archiv/hostsfile port 53[/B]
dnsspoof: listening on lan [port 53]
192.168.138.185.37606 > 192.168.138.1.53:  16230+ A? [B][COLOR=red]fritzy.box[/COLOR][/B]
192.168.138.1.53 > 192.168.138.185.37606:  16230+ A? [COLOR=red][B]fritzy.box[/B][/COLOR]
Beispiel-Script zum erzeugen der hostsfile-Datei (bei jedem onlinechanged):
Code:
#!/bin/sh
echo [COLOR=red]"$(/var/media/ftp/uStor01/external/hci www.heise.de)      fritzy.box"[/COLOR] > /var/media/ftp/uStor01/archiv/hostsfile
Eintrag in der hostsfile (durch das Script):
Code:
root@fritz:/var/mod/root# cat /var/media/ftp/uStor01/archiv/hostsfile
193.99.144.85      fritzy.box
Eintrag in der /etc/hosts auf der FB:
Code:
root@fritz:/var/mod/root# cat /etc/hosts
127.0.0.1       localhost
192.168.138.1   fritz.box       fritz.nas       fritz.fonwlan.box
192.168.138.222 [COLOR=red]fritzy.box[/COLOR]
Wenn ich im Browser fritzy.box eingebe, wird www.heise.de geöffnet.
 
wird denn auch heise über 192.168.138.222 geöffnet?
 
Nein, denn dnsspoof kann mit 192.168.138.222 nichts anfangen. Deshalb der Weg über die /etc/hosts, wo 192.168.138.222 == fritzy.box.
 
Nein, denn dnsspoof kann mit 192.168.138.222 nichts anfangen. Deshalb der Weg über die /etc/hosts, wo 192.168.138.222 == fritzy.box.

ja dann habe ich ja wieder eine Namensauflösung. Ich kann aber nur über IP numerisch gehen
 
... z.B. DNS in Python via pydns??
 
@jenswmeyer:
Du kannst ja aus fritzy.box, entweder mit dem ping von Jörg oder mit
Code:
root@fritz:/var/mod/root# [B]nslookup[/B] [COLOR=red]fritzy.box[/COLOR] | sed -e "/Address 1: /!d" | sed -e "s/Address 1: \([0-9.]*\).*/\1/" | sed -e "\$!d"
[COLOR=red]192.168.138.222[/COLOR]
die private IP-Adresse rauslesen und übergeben.
 

Zurzeit aktive Besucher

Neueste Beiträge

Statistik des Forums

Themen
246,274
Beiträge
2,249,293
Mitglieder
373,863
Neuestes Mitglied
RuthBeatty
Holen Sie sich 3CX - völlig kostenlos!
Verbinden Sie Ihr Team und Ihre Kunden Telefonie Livechat Videokonferenzen

Gehostet oder selbst-verwaltet. Für bis zu 10 Nutzer dauerhaft kostenlos. Keine Kreditkartendetails erforderlich. Ohne Risiko testen.

3CX
Für diese E-Mail-Adresse besteht bereits ein 3CX-Konto. Sie werden zum Kundenportal weitergeleitet, wo Sie sich anmelden oder Ihr Passwort zurücksetzen können, falls Sie dieses vergessen haben.