web-dev-qa-db-ja.com

ドメイン名を登録しました— DynDNSホストを指すにはどうすればよいですか?

自宅のマシンからWebサイトをホストするにはどうすればよいですか? DynDNSアドレスを持っているので、外部IPが変わってもマシンにアクセスできます。

たとえば、example.dyndns-home.comでマシンにアクセスできるとしましょう(これはDynDNSの無料サービスです)。 GoDaddyからWebサイトのドメイン名を登録しました。ドメイン名がexample.comだとしましょう

現在、ポート80を転送したので、どこからでもexample.dyndns-home.comを入力でき、ホームボックスでホストしたものをすべて見ることができます。

www.example.comを入力したときに同じものが表示されるようにするにはどうすればよいですか? example.comを介して、自宅のマシンでホストしているものをインターネット上で見たい。

7
hari

www.example.comからexample.dyndns-home.comを指すcnameレコードをドメインのDNSレコードに追加します。私は1つのドメインレジストラー(Godaddyではない)を使用したことがありますが、DNSレコードを更新できるきちんとしたWebインターフェイスがあります。

生の例:

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

実際の例が提供されています 、少なくともGoogleのネームサーバーを使用しています。

編集(2回):

http://example.comも機能させたい場合は、example.comからexample.dyndns-home.comに2番目のエントリを追加する必要があります。これは@.example.comを転送することで実現できますが、それが標準かどうかはわかりません。

11
Eroen

最後に、問題は何ですか?私にとっては、ISPがポート80と8080をブロックするため、別のポートで動作するようにWebサイトを構成します。

http://exapmle.dyndnsorg:5060

1- Dyn Standard Dnsで14日間の試用期間に登録します

2- dyndnsからのDNSを使用してドメインを構成します

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

3-たとえば、ドメインをDynDnsドメインに転送するために、新しいWebHopを作成します

Host-name  : example.com    

Service    : WebHop 

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

Linuxを実行しているサーバーがあり、GoDaddyによってホストされているDNS上のホームサーバーのIPでDNS Aレコードを更新する場合、ホームサーバーで次の操作を実行できます。 EULAに違反することに注意してください。必ずルールに従ってください!

  1. Python2.7をインストールします(おそらく既にインストールされています)。

  2. 次のファイルを/config/scripts/godaddy_ddns.pyに配置します。 pygodaddyライブラリを使用してgodaddyを更新する実際の作業を行う部分です。 godaddyアカウントに関連付けられているすべてのドメインが更新されます。 「@」サブドメインワイルドカードのAレコードを設定します。代替サブドメインを指定する場合は、これを編集できます。また、「@USERNAME@」をgodaddyユーザー名に、「@PASSWORD@」を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. Sudo chown root /config/scripts/godaddy_ddns.pyを実行します

  4. Sudo chmod u+x /config/scripts/godaddy_ddns.pyを実行します
  5. 次のファイルを/config/scripts/godaddy_ddns.shに配置します。これは、pythonスクリプトで使用されるライブラリを分離するためにvirtualenvをセットアップするラッパースクリプトです。次に、上記のpythonスクリプトを呼び出します。

    #!/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. Sudo chown root /config/scripts/godaddy_ddns.shを実行します

  7. Sudo chmod u+x /config/scripts/godaddy_ddns.shを実行します
  8. 次のファイルを/etc/cron.hourly/run_godaddy_ddns(ファイル拡張子なし)に配置します。これにより、godaddy_ddns.shスクリプトが1時間ごとに呼び出されます。

    #!/bin/sh
    
    WORKING_DIR=/var/local/godaddy_ddns
    exec /config/scripts/godaddy_ddns.sh $WORKING_DIR     
    exit 0                                                
    
  9. Sudo chown root /etc/cron.hourly/run_godaddy_ddnsを実行します

  10. Sudo chmod u+x /etc/cron.hourly/run_godaddy_ddnsを実行します
  11. ログはgodaddy.logディレクトリの/var/local/godaddy_ddnsに書き込まれます。このディレクトリは、run_godaddy_ddnsスクリプトを編集して変更できます。
  12. 次のファイルを/etc/logrotate.d/godaddy_ddns(ファイル拡張子なし)に配置します。これにより、ログファイルをローテーションすることにより、ログファイルがディスクをいっぱいにしないようにします。ロギングの場所を変更した場合は、ログファイルの場所を編集する必要があります。

    /var/local/godaddy_ddns/godaddy.log {
        weekly
        missingok
        rotate 12
        compress
        delaycompress
        notifempty
        copytruncate 
        maxage 365                                                       
    }                                                                    
    
  13. また、GoDaddyドメインマネージャーにCNAMEレコードを追加して、「www」を「@」にポイントする必要があります。

セキュリティに関する注意:スクリプトがより制限された権限で実行されるように、おそらくルート以外のユーザーに対してrun_godaddy_ddnsスクリプトとsuを編集する必要があります。

1
jsears

ダイナミックDNS機能をサポートするレジストラにドメインを登録/移動します。 Namecheap.com はそのようなレジストラの1つです。手順は ナレッジベース内 です。タイプ「A +ダイナミックDNS」のサブドメインエントリを作成することにより、サブドメインのダイナミックDNSを有効にできることに注意してください。

ddclientパッケージのデフォルトの構成(少なくともArch Linuxの場合)には、このレジストラのプロトコルの設定が含まれています。

##
## 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