web-dev-qa-db-fra.com

J'ai enregistré un nom de domaine. Comment puis-je le diriger vers mon hôte DynDNS?

Comment puis-je héberger un site Web à partir de mon ordinateur personnel? J'ai une adresse DynDNS de sorte que même si mon adresse IP externe change, la machine est accessible.

Disons, par exemple, que la machine est accessible à example.dyndns-home.com (service gratuit de DynDNS). J'ai enregistré un nom de domaine pour mon site Web auprès de GoDaddy. Disons que le nom de domaine est example.com

Pour le moment, j'ai transféré le port 80 afin que je puisse entrer example.dyndns-home.com de n'importe où et que je puisse voir tout ce que j'ai hébergé sur ma homebox.

Comment puis-je faire en sorte que, quand j'entre www.example.com, je vois la même chose? Je veux voir ce que je héberge sur ma machine personnelle sur Internet via example.com.

7
hari

Ajoutez un enregistrement cname à l'enregistrement DNS de votre domaine, en allant de www.example.com à example.dyndns-home.com. Je n'ai jamais utilisé qu'un seul registraire de domaine (pas Godaddy), mais ils ont une interface Web soignée où vous pouvez mettre à jour l'enregistrement DNS.

Exemple brut:

www.example.com.
43200
IN
CNAME
example.dyndns-home.com.

Exemple de travail fourni , utilisant au moins les serveurs de noms de Google.

Modifier (deux fois):

Si vous voulez que http://example.com fonctionne aussi, vous devez ajouter une deuxième entrée de example.com à example.dyndns-home.com. Cela peut être fait en transmettant @.example.com, je ne sais pas si c'est standard ou non.

11
Eroen

Enfin je sais quel est le problème? Pour moi, les ports 80 et 8080 de mon bloc ISP. Je configure donc Mon site Web pour qu’il fonctionne avec un autre port. Par exemple:

http://exapmle.dyndnsorg:5060

1- Je m'inscris pour 14 jours d'essai dans Dyn Standard Dns

2- Je configure mon domaine avec le DNS de dyndns

xxxx.dns.dyn.com
xxxx.dns.dyn.com
xxxx.dns.dyn.com
xxxx.dns.dyn.com

3- Je crée un nouveau WebHop pour transférer mon domaine vers mon domaine DynDns, par exemple

Host-name  : example.com    

Service    : WebHop 

Details    : http://example.dyndns.org:5060 
1
AbouHaRga

En supposant que vous avez un serveur exécutant Linux et que vous souhaitez mettre à jour un enregistrement DNS A avec l’adresse IP de votre serveur domestique sur DNS hébergé par GoDaddy, vous pouvez procéder comme suit sur le serveur domestique. Notez que cela peut violer votre CLUF. Assurez-vous de suivre les règles!

  1. Installez Python2.7 (il est probablement déjà installé).

  2. Placez le fichier suivant à /config/scripts/godaddy_ddns.py. C'est la partie qui effectue le travail de mise à jour de godaddy à l'aide de la bibliothèque pygodaddy. Il mettra à jour tous les domaines associés à votre compte godaddy. Il établira un enregistrement A pour le caractère générique de sous-domaine '@'. Vous pouvez l'éditer si vous souhaitez spécifier d'autres sous-domaines. Vous devez également remplacer "@USERNAME@" par votre nom d'utilisateur GoDaddy et "@PASSWORD@" par votre mot de passe GoDaddy.

    #!/usr/bin/env python
    
    import logging
    import pif
    import pygodaddy
    
    # Original Source:
    # https://saschpe.wordpress.com/2013/11/12/godaddy-dyndns-for-the-poor/
    # https://github.com/observerss/pygodaddy
    # 
    # Modified by Jeremy Sears (https://stackoverflow.com/users/1240482/jsears)
    
    
    logging.basicConfig(filename='godaddy.log', format='%(asctime)s %(message)s', level=logging.INFO)
    # the "requests" library logs noisily, so turn that off                                                       
    logging.getLogger("requests").setLevel(logging.WARNING)
    
    logging.debug("DEBUG:   Running godaddy_ddns.py");
    
    U="@USERNAME@"                        
    P="@PASSWORD@"                    
    client = pygodaddy.GoDaddyClient()                       
    success = client.login(U,P)                              
    if success:                                                                                      
            logging.debug("DEBUG:   Successfully logged in.")                                        
    else:                                                                                            
            logging.error("ERROR:   Failed to log in to godaddy.com with username: '{0}'.".format(U))
    
    for domain in client.find_domains():                                            
            logging.debug("DEBUG:   Looking up DNS Records for {0}.".format(domain))           
            dns_records = client.find_dns_records(domain)                                      
            public_ip = pif.get_public_ip()                                                    
            logging.debug("DEBUG:   Domain '{0}' DNS records: {1}".format(domain, dns_records))
            logging.debug("DEBUG:   Current Public IP '{0}'.".format(public_ip))
            if len(dns_records) == 0:                                                                  
                    logging.debug("DEBUG:   No existing DNS records found.")                           
            else:                                                                                      
                    logging.debug("DEBUG:   Existing IP in DNS is '{0}'.".format(dns_records[0].value))
    
            if len(dns_records) == 0 or public_ip != dns_records[0].value:                      
                    logging.debug("DEBUG:   Updating A record for domain '{0}'.".format(domain))                                  
                    success = client.update_dns_record("@."+domain, public_ip)                                                    
                    if success:                                                                                                   
                            logging.info("INFO:     Domain '{0}': Successfully set public IP to '{1}'.".format(domain, public_ip))
                    else:                                                                                                                                  
                            logging.error("ERROR:   Domain '{0}': Unable to update public IP to '{1}'.".format(domain, public_ip))                         
            else:                                                                                                                                          
                    logging.info("INFO:     Public IP A record DNS record for domain '{0}' is up to date, and does not need to be updated.".format(domain))
    
  3. Exécuter Sudo chown root /config/scripts/godaddy_ddns.py

  4. Exécuter Sudo chmod u+x /config/scripts/godaddy_ddns.py
  5. Placez le fichier suivant à /config/scripts/godaddy_ddns.sh. Il s'agit d'un script d'encapsulation qui configure un virtualenv pour isoler les bibliothèques utilisées par le script python. Il appelle ensuite le script python ci-dessus.

    #!/bin/sh
    
    # Original Source:
    # https://saschpe.wordpress.com/2013/11/12/godaddy-dyndns-for-the-poor/
    # https://github.com/observerss/pygodaddy
    # 
    # Modified by Jeremy Sears (https://stackoverflow.com/users/1240482/jsears)
    
    OLD_PWD=$PWD
    ROOT_DIR=$(dirname $0)
    if [ -n "$1" ] ; then
        WORKING_DIR=$1
    else
        WORKING_DIR=$ROOT_DIR
    fi
    mkdir -p $WORKING_DIR
    cd $WORKING_DIR
    if [ ! -d .venv27 ] ; then
        curl -O https://pypi.python.org/packages/source/v/virtualenv/virtualenv-1.9.tar.gz
        tar xvfz virtualenv-1.9.tar.gz
        python virtualenv-1.9/virtualenv.py .venv27
    fi
    source .venv27/bin/activate
    pip install -q --upgrade pif pygodaddy
    $ROOT_DIR/godaddy_ddns.py
    deactivate
    cd $OLD_PWD
    
  6. Exécuter Sudo chown root /config/scripts/godaddy_ddns.sh

  7. Exécuter Sudo chmod u+x /config/scripts/godaddy_ddns.sh
  8. Placez le fichier suivant dans /etc/cron.hourly/run_godaddy_ddns (sans extension de fichier). Cela appellera le script godaddy_ddns.sh toutes les heures.

    #!/bin/sh
    
    WORKING_DIR=/var/local/godaddy_ddns
    exec /config/scripts/godaddy_ddns.sh $WORKING_DIR     
    exit 0                                                
    
  9. Exécuter Sudo chown root /etc/cron.hourly/run_godaddy_ddns

  10. Exécuter Sudo chmod u+x /etc/cron.hourly/run_godaddy_ddns
  11. Les journaux seront écrits sur godaddy.log dans le répertoire /var/local/godaddy_ddns. Ce répertoire peut être modifié en modifiant le script run_godaddy_ddns.
  12. Placez le fichier suivant dans /etc/logrotate.d/godaddy_ddns (sans extension de fichier). Cela garantira que votre fichier journal ne remplit pas votre disque en faisant pivoter le fichier journal. Si vous avez modifié l'emplacement de journalisation, vous devrez modifier l'emplacement du fichier journal.

    /var/local/godaddy_ddns/godaddy.log {
        weekly
        missingok
        rotate 12
        compress
        delaycompress
        notifempty
        copytruncate 
        maxage 365                                                       
    }                                                                    
    
  13. Vous devrez également ajouter un enregistrement CNAME dans le gestionnaire de domaine GoDaddy pour faire pointer 'www' sur '@'.

Note de sécurité: vous devriez probablement éditer le script run_godaddy_ddns et su en un utilisateur autre que root, afin que le script soit exécuté avec des autorisations plus limitées.

1
jsears

Enregistrez/déplacez votre domaine vers un registraire prenant en charge la fonctionnalité DNS dynamique. Namecheap.com est l'un de ces registraires. Les instructions sont dans leur base de connaissances . Notez que vous pouvez activer le DNS dynamique pour un sous-domaine en créant une entrée de sous-domaine de type "A + DNS dynamique".

La configuration par défaut du paquet ddclient (sous Arch Linux, du moins) inclut les paramètres du protocole de ce registraire:

##
## NameCheap (namecheap.com)
##
protocol=namecheap,                     \
server=dynamicdns.park-your-domain.com, \
login=YOUR-TOP-LEVEL-DOMAIN,            \
password=HEX-PASSWORD-FROM-DASHBOARD    \
YOUR-DYNAMIC-SUBDOMAIN.YOUR-TOP-LEVEL-DOMAIN
1
alexei