- 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
Du könntest dir ein kleines binary kompilieren, das die Namensauflösung für das Python Tool macht:Hintergrund ich nutze ein Python Tool welches keine Namensauflösung Unterstützt,.
#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;
}
Warum hast Du nach einem Freetz-Paket gefragt?... crosscomplieren für sh4, und Pyhton ist neuland.,,.
# 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
iptables -t nat -A PREROUTING -p tcp -d 192.168.178.110 -j DNAT --to-destination "$(binary <dyndns.xxx>)"
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 ;-)
Na klar, so habe ich das schon immer in meinem Script:@sf3978:
du müsstest wohl auch die "alten" Regeln löschen (oder flushen)
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]
#
...
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:Mit welchen Freetz Paket ist es mögliche eine private IP z.b 192.168.178.110 auf eine Domain umzuleiten
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]
#!/bin/sh
echo [COLOR=red]"$(/var/media/ftp/uStor01/external/hci www.heise.de) fritzy.box"[/COLOR] > /var/media/ftp/uStor01/archiv/hostsfile
root@fritz:/var/mod/root# cat /var/media/ftp/uStor01/archiv/hostsfile
193.99.144.85 fritzy.box
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]
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.
OK. Kannst Du das etwas genauer beschreiben. Evtl. finden wir eine Möglichkeit.... Ich kann aber nur über IP numerisch gehen
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]