Reihner
Anmeldungsdatum: 14. Juni 2017
Beiträge: 157
Wohnort: Klendathu
|
Hallo ihr (und auch du da), ich wollte mir neulich mal eine eigene Domain zulegen. Bei dem Versuch ist mir jedoch aufgefallen das mein Server nur die interne IPv4 an den Domainabieter übermittelt, statt der öffentlichen. Woran liegt das? Kurz zum Aufbau:
Fritz!Box mit öffentlicher IPv4 und IPv6 Portfreigaben für 80 & 443 zum Server (IPv4 und IPv6) ddclient zur IPübermittlung Server als VM aufm NAS
Wenn ich die IP´s von Hand beim Domainabieter eintrage klappt die Verbindung. Aber da ist ja die Sache mit dem IPreset in unregelmässigen abständen.
|
lubux
Anmeldungsdatum: 21. November 2012
Beiträge: 13893
|
Reihner schrieb: Bei dem Versuch ist mir jedoch aufgefallen das mein Server nur die interne IPv4 an den Domainabieter übermittelt, statt der öffentlichen. Woran liegt das?
Hast Du den ddclient evtl. nicht richtig konfiguriert?
|
JensHol
Anmeldungsdatum: 31. Oktober 2017
Beiträge: 322
|
Wenn du beides (IPv4 und IPv6) auf deinem Server hinter der Fritz hast, hast du folgendes Problem: Die Fritz macht masquerading. Das heißt unter IPv4 muss die Fritz die IPv4 ins Netz übermitteln. Für IPv6 musst du die portfreigabe separat in der Fritz hinterlegen und die IPv6 deiner internen Maschine ins Netz übermitteln. Hast du das berücksichtigt?
|
lubux
Anmeldungsdatum: 21. November 2012
Beiträge: 13893
|
JensHol schrieb: Wenn du beides (IPv4 und IPv6) auf deinem Server hinter der Fritz hast, hast du folgendes Problem: Die Fritz macht masquerading. Das heißt unter IPv4 muss die Fritz die IPv4 ins Netz übermitteln.
Warum soll das ein Problem sein? Ein v4-ddns-Client (zusätzlich oder statt auf der FritzBox) auf dem Server ist auch möglich.
|
JensHol
Anmeldungsdatum: 31. Oktober 2017
Beiträge: 322
|
Ich habe den ddclient nicht so ans laufen bekommen, dass er die externe Adresse der Fritz einträgt, aber vielleicht lag das auch an mir 😉 hab mir nen Skript dafür geschrieben. Ich wollte auch primär nur auf den Unterschied zwischen IPv4 und IPv6 in der Übermittlung der ips verweisen 😉
|
lubux
Anmeldungsdatum: 21. November 2012
Beiträge: 13893
|
JensHol schrieb: Ich habe den ddclient nicht so ans laufen bekommen, dass er die externe Adresse der Fritz einträgt, ...
Evtl. liegt es auch an deinem ddns-Provider. Bei mir funktioniert es mit z. B.:
use=web, web=checkip4.spdyn.de
in der ddclient.conf. Siehe z. B. auch die Ausgabe von:
curl -B4 -A MickeyMouse http://checkip4.spdyn.de
, auf deinem Gerät mit dem ddclient.
|
JensHol
Anmeldungsdatum: 31. Oktober 2017
Beiträge: 322
|
Vielleicht postet Reihner hier mal seine config, dass wir im helfen können. Mein Skript läuft tadellos, startet auch Dienste wie Firewall neu (bin da psychotisch, alles sehr restriktiv) werde bei mir nix ändern. Aber wir wollen ja dem Reihner helfen 😉
|
Reihner
(Themenstarter)
Anmeldungsdatum: 14. Juni 2017
Beiträge: 157
Wohnort: Klendathu
|
lubux Evtl. liegt es auch an deinem ddns-Provider. Bei mir funktioniert es mit z. B.:
use=web, web=checkip4.spdyn.de
in der ddclient.conf.
der Hiweis hat mir schon etwas geholfen. Die IPv6 wird aber weiterhin volkommen ignoriert .. was auch daran liegen kann das goip.de keine IPv6-Anbindung hat Meine ddclient.conf sieht wie folgt aus:
protocol=dyndns2
use=web, web=www.goip.de/myip
ssl=yes
server=www.goip.de
login=blöd!
password='vergessen'
micheipee.goip.de bei curl -B4 -A MickeyMouse http://www.goip.de/myip meldet man mir nur meine öffentliche IPv4 zurück ich hab dann auch noch mal ddclient -daemon=0 -debug -verbose -noquiet ausprobiert === opt ====
opt{cache} : <undefined>
opt{cmd} : <undefined>
opt{cmd-skip} : <undefined>
opt{daemon} : 0
opt{debug} : 1
opt{exec} : <undefined>
opt{facility} : <undefined>
opt{file} : <undefined>
opt{force} : <undefined>
opt{foreground} : <undefined>
opt{fw} : <undefined>
opt{fw-login} : <undefined>
opt{fw-password} : <undefined>
opt{fw-skip} : <undefined>
opt{geturl} : <undefined>
opt{help} : <undefined>
opt{host} : <undefined>
opt{if} : <undefined>
opt{if-skip} : <undefined>
opt{ip} : <undefined>
opt{login} : <undefined>
opt{mail} : <undefined>
opt{mail-failure} : <undefined>
opt{max-interval} : 2592000
opt{min-error-interval} : 300
opt{min-interval} : 30
opt{options} : <undefined>
opt{password} : <undefined>
opt{pid} : <undefined>
opt{postscript} : <undefined>
opt{priority} : <undefined>
opt{protocol} : <undefined>
opt{proxy} : <undefined>
opt{query} : <undefined>
opt{quiet} : 0
opt{retry} : <undefined>
opt{server} : <undefined>
opt{ssl} : <undefined>
opt{syslog} : <undefined>
opt{test} : <undefined>
opt{timeout} : <undefined>
opt{use} : <undefined>
opt{usev6} : <undefined>
opt{verbose} : 1
opt{web} : <undefined>
opt{web-skip} : <undefined>
=== globals ====
globals{daemon} : 60
globals{debug} : 1
globals{login} : blöd!
globals{password} : vergessen
globals{protocol} : dyndns2
globals{quiet} : 0
globals{server} : www.goip.de
globals{ssl} : 1
globals{use} : web
globals{verbose} : 1
globals{web} : www.goip.de/myip
=== config ====
config{da-heme.goip.de}{atime} : 0
config{da-heme.goip.de}{backupmx} : 0
config{da-heme.goip.de}{cacheable} : ARRAY(0x559e4cecede0)
config{da-heme.goip.de}{cmd} : <undefined>
config{da-heme.goip.de}{cmd-skip} :
config{da-heme.goip.de}{custom} : 0
config{da-heme.goip.de}{fw} :
config{da-heme.goip.de}{fw-login} : <undefined>
config{da-heme.goip.de}{fw-password} :
config{da-heme.goip.de}{fw-skip} :
config{da-heme.goip.de}{host} : micheipee.goip.de
config{da-heme.goip.de}{if} : ppp0
config{da-heme.goip.de}{if-skip} :
config{da-heme.goip.de}{ip} : <undefined>
config{da-heme.goip.de}{login} : blöd!
config{da-heme.goip.de}{max-interval} : 2592000
config{da-heme.goip.de}{min-error-interval} : 300
config{da-heme.goip.de}{min-interval} : 30
config{da-heme.goip.de}{mtime} : 0
config{da-heme.goip.de}{mx} :
config{da-heme.goip.de}{password} : vergessen
config{da-heme.goip.de}{protocol} : dyndns2
config{da-heme.goip.de}{script} : /nic/update
config{da-heme.goip.de}{server} : www.goip.de
config{da-heme.goip.de}{static} : 0
config{da-heme.goip.de}{status} :
config{da-heme.goip.de}{use} : web
config{da-heme.goip.de}{usev6} : <undefined>
config{da-heme.goip.de}{warned-min-error-interval} : 0
config{da-heme.goip.de}{warned-min-interval} : 0
config{da-heme.goip.de}{web} : www.goip.de/myip
config{da-heme.goip.de}{web-skip} :
config{da-heme.goip.de}{wildcard} : 0
config{da-heme.goip.de}{wtime} : 30
=== cache ====
cache{da-heme.goip.de}{atime} : 0
cache{da-heme.goip.de}{backupmx} : 0
cache{da-heme.goip.de}{custom} : 0
cache{da-heme.goip.de}{host} : micheipee.goip.de
cache{da-heme.goip.de}{ip} : 0.0.0.0
cache{da-heme.goip.de}{mtime} : 1540649730
cache{da-heme.goip.de}{mx} :
cache{da-heme.goip.de}{script} : /nic/update
cache{da-heme.goip.de}{static} : 0
cache{da-heme.goip.de}{status} : good
cache{da-heme.goip.de}{warned-min-error-interval} : 0
cache{da-heme.goip.de}{warned-min-interval} : 0
cache{da-heme.goip.de}{wildcard} : 0
cache{da-heme.goip.de}{wtime} : 30
DEBUG: proxy =
DEBUG: url = www.goip.de/myip
DEBUG: server = www.goip.de
CONNECT: www.goip.de
CONNECTED: using HTTP
SENDING: GET /myip HTTP/1.0
SENDING: Host: www.goip.de
SENDING: User-Agent: ddclient/3.8.3
SENDING: Connection: close
SENDING:
RECEIVE: HTTP/1.1 200 OK
RECEIVE: Date: Sat, 27 Oct 2018 14:28:00 GMT
RECEIVE: Server: Apache/2.4.25 (Debian)
RECEIVE: Set-Cookie: JSESSIONID=20DF45326DE233474A9FC5837EDFC573; Path=/; HttpOnly
RECEIVE: Vary: Accept-Encoding
RECEIVE: Connection: close
RECEIVE: Content-Type: text/html;charset=utf-8
RECEIVE:
RECEIVE: 87.140.58.11
DEBUG: get_ip: using web, www.goip.de/myip reports 0.0.0.0
SUCCESS: da-heme.goip.de: skipped: IP address was already set to 0.0.0.0. allerdings hilft mir das nicht weiter
|
JensHol
Anmeldungsdatum: 31. Oktober 2017
Beiträge: 322
|
Die Herausforderung ist, dass du deine IPv4 und IPv6 in der Regel mit dem gleichen request eintragen musst, so zumindest bei dyndns, da er sonst immer mir entweder die IPv4 oder die IPv6 eingetragen hat. Wenn also ddclient nicht beides unterstützt (und dein DNS Provider), bleibt Dir vermutlich nur, ein Script zu schreiben. 😉
|
Reihner
(Themenstarter)
Anmeldungsdatum: 14. Juni 2017
Beiträge: 157
Wohnort: Klendathu
|
JensHol schrieb: Die Herausforderung ist, dass du deine IPv4 und IPv6 in der Regel mit dem gleichen request eintragen musst, so zumindest bei dyndns, da er sonst immer mir entweder die IPv4 oder die IPv6 eingetragen hat. Wenn also ddclient nicht beides unterstützt (und dein DNS Provider), bleibt Dir vermutlich nur, ein Script zu schreiben. 😉
JensHol schrieb: Ich habe den ddclient nicht so ans laufen bekommen, dass er die externe Adresse der Fritz einträgt, aber vielleicht lag das auch an mir 😉 hab mir nen Skript dafür geschrieben.
zeig mal dein script
|
JensHol
Anmeldungsdatum: 31. Oktober 2017
Beiträge: 322
|
Hm, das ist Bestandteil meiner eigenen Firewall-Scripts, aber ich probier dir mal hier die wesentlichen Teile zusammenzustellen: #!/bin/bash
lastpre_file=/PFAD/own-nftables.lastglobal
pref_change_log="/DEIN-PFAD-ZUM-LoG/Prefix-change.log"
last_prefix_ex=""
last_prefix_in=""
last_ip4=""
last_ip6=""
change=0
debug=0
# Hole die zuletzt gespeicherten Werte für IPs, etc.
source $lastpre_file
# Hole aktuelle Werte für IPs, Prefix usw.
# Externe IPv6-Adresse als Prefix um Neustart von Radvd und Firewall bei Veränderung zu starten
ip6_ex_ULA_2=`ip -6 address show $if_ex | grep "global dynamic mngtmpaddr" | grep -v " fd00:" -m 1 | cut -d6 -f2- | cut -d " " -f2 | cut -d: -f1-4`
ip6_ex_ULA_2+="::/64"
# Externe IPv4 Adresse des Anschlusses (w/NAT aus dem Web, Adresse der Fritzbox) und der externen IPv6-Adresse des Servers
ip4_dyn=`curl http://checkip.dyn.com -m 20 | cut -d: -f2 | cut -d"<" -f1 | cut -d" " -f2`
if (($debug)); then echo "$(date +'%Y-%m-%d %H:%M:%S') - INFO DEBUG 0 ip4_dyn is [$ip4_dyn]" | tee -a $pref_change_log;fi
if [ -z $ip4_dyn ]; then echo "$(date +'%Y-%m-%d %H:%M:%S') - INFO WARNING: Could not get ip4_dyn, ABORTING SCRIPT" | tee -a $pref_change_log; exit; fi
# Version 18.04 global dynamic mngtmpaddr STATT dynamic mngtmpaddr dynamic
ip6_dyn=`ip -6 address show $if_ex | grep "global dynamic mngtmpaddr" | grep -v " fd00:" -m 1 | cut -d6 -f2- | cut -d " " -f2 | cut -d: -f1-8 | cut -d/ -f1`
# INTERNE IPv6-Adresse als Prefix um Neustart von Radvd und Firewall bei Veränderung zu starten
ip6_in_ULA_2=`ip -6 address show $if_in | grep "global" | grep -v "inet6 fd" -m 1 | cut -d6 -f2- | cut -d " " -f2 | cut -d: -f1-4`
ip6_in_ULA_2+="::/64"
# Check auf notwendigen Neustart von RADVD und Firewall Script
if [ "$ip6_ex_ULA_2" != "$last_prefix_ex" ] && [ "$ip6_ex_ULA_2" != "::/64" ]; then let change=change+2; fi
if [ "$ip6_in_ULA_2" != "$last_prefix_in" ] && [ "$ip6_in_ULA_2" != "::/64" ]; then let change=change+1; fi
# Check auf notwendiges DYN-DNS-Update
if (($debug)); then echo "$(date +'%Y-%m-%d %H:%M:%S') - INFO DEBUG 1 last_ipv4 is [$last_ip4]" | tee -a $pref_change_log;fi
if ( [ "$ip4_dyn" != "$last_ip4" ] || [ "$ip6_dyn" != "$last_ip6" ] ) && ( [ ! -z "$ip4_dyn" ] )
then
if (($debug)); then echo "$(date +'%Y-%m-%d %H:%M:%S') - INFO DEBUG 2 last_ipv4 is [$last_ip4]" | tee -a $pref_change_log;fi
echo "$(date +'%Y-%m-%d %H:%M:%S') - INFO: IPv4 [OLD $last_ip4 NOW $ip4_dyn]" | tee -a $pref_change_log
echo "$(date +'%Y-%m-%d %H:%M:%S') - INFO: IPv6 [OLD $last_ip6 NOW $ip6_dyn]" | tee -a $pref_change_log
if (($debug)); then echo 'dynanswer=`curl -A "Bashscript - V0.70" "https://USER:PASSKEY@members.dyndns.org/v3/update?hostname=DOMAIN.dnyndns.org&myip=$ip6_dyn,$ip4_dyn"`' | tee -a $pref_change_log;fi
dynanswer=`curl -A "Bashscript - V0.70" "https://USER:PASSKEY@members.dyndns.org/v3/update?hostname=DOMAIN.dyndns.org&myip=$ip6_dyn,$ip4_dyn"`
echo "$(date +'%Y-%m-%d %H:%M:%S') - INFO: DYNDNS-Update: Answer[$dynanswer]" | tee -a $pref_change_log
fi
# Speichere geprüfte Adressen in Datei
echo "last_prefix_ex=$ip6_ex_ULA_2" > $lastpre_file
echo "last_prefix_in=$ip6_in_ULA_2" >> $lastpre_file
echo "last_ip4=$ip4_dyn" >> $lastpre_file
echo "last_ip6=$ip6_dyn" >> $lastpre_file
# Log Einträge bei Prefix Change
if [[ $((change&2)) != 0 ]]; then echo "$(date +'%Y-%m-%d %H:%M:%S') - INFO: External prefix $if_ex changed: [OLD $last_prefix_ex NOW $ip6_ex_ULA_2]" | tee -a $pref_change_log; fi
if [[ $((change&1)) != 0 ]]; then echo "$(date +'%Y-%m-%d %H:%M:%S') - INFO: Internal prefix $if_in changed: [OLD $last_prefix_in NOW $ip6_in_ULA_2]" | tee -a $pref_change_log; fi
# Neustart der Dienste wenn notwendig
if [[ $change -gt 0 ]]; then
echo "$(date +'%Y-%m-%d %H:%M:%S') - INFO: Force restarting Firewall and radvd" | tee -a $pref_change_log
systemctl restart own-nftables.service radvd.service
fi
Gerade die Teile, die die IP-Adressen ermitteln hängen von Spracheinstellungen, etc. ab und musst du bestimmt anpassen Ist bestimmt an vielen Stellen ziemlich stümperhaftes BASHING, über das einige hier lachen, aber es funktioniert.
|
JensHol
Anmeldungsdatum: 31. Oktober 2017
Beiträge: 322
|
Kurze Ergänzung / Erläuterung noch dazu: Ich habe intern sowohl statische IPv6 Adressen aus dem Non-Routing-Bereich (fd:☺ als auch eine unterverteilung der zugewiesenen IPv6-Adressen aus dem Global-Bereich des Providers (Provider weisst /62 zu, Fritz verteilt ein 64er Subnet weiter (/64) und das inclusive privacy Temp-Adressen. Das macht es noch etwas komplexer. Das Script läuft glaube in nem minütlichen oder 5-minütlichen Cron-Job, überträgt neue Adressen aber nur bei Veränderung. (Jedes mal Update wird von den dyndns-Diensten in der Regel als DDOS abgewiesen)
|
lubux
Anmeldungsdatum: 21. November 2012
Beiträge: 13893
|
Reihner schrieb: ... Die IPv6 wird aber weiterhin volkommen ignoriert ..
Naja, in deinem 1. Beitrag ging es ja auch nur um die IPv4-Adresse, oder? EDIT: ddclient ist auch für IPv6 geeignet: usev6=web, web=checkip6.spdyn.de
|