最新リリースは、Githubからいつでも入手できます
https://github.com/troglobit/inadyn/releases
ヒント: HTML UNIXマニュアルはhttps://man.troglobit.com、例えば、inadyn.conf(5)にあります。
Inadyn、またはIn-a-Dynは、HTTPSサポートを備えた小さくてシンプルな動的DNS、DDNS、クライアントです。多くのGNU/Linuxディストリビューションで一般的に利用できます。これは、シェルフルーターとインターネットゲートウェイで使用され、インターネット名をパブリック¹IPアドレスと同期させるタスクを自動化します。また、インターネットへの冗長(バックアップ)接続を備えたインストールでも使用できます。
ほとんどの人は、同じインターネットサービスプロバイダー(ISP)の他のユーザーとインターネットアドレスのプールを共有していません。 DHCP、PPPOE、PPPOAなどのプロトコルは、アドレスとインターネットに接続する方法を提供するために使用されますが、通常、他の人があなたに接続する方法ではありません。このような接続でインターネットサーバーを実行したい場合は、再接続するたびにIPアドレスを失うリスクがあります。または、リースが再交渉された場合でもDHCPの場合のように。
inadynのようなDDNSクライアントを使用することにより、FreednsのようなDDNSプロバイダーにインターネット名を登録できます。 DDNSクライアントは、DNSレコードを定期的に更新し、IPアドレスが変更されたときにオンデマンドを更新します。 Inadynは、同じIPアドレスで複数のホストレコードを維持したり、スクリプトの組み合わせ、インターネット向けインターフェイスからのアドレスの組み合わせ、またはDDNSプロバイダーのIPアドレス変更検出器を使用してデフォルトで使用できます。
__
¹パブリックIPアドレスはデフォルトで、プライベートアドレスも使用できます。
これらのサービスのいくつかは、非営利的な使用のために無料であり、一部は少額の料金を払うだけでなく、より多くのドメインを選択できるものも提供します。
次のTier-Oneプロバイダーには、多くの人が元のDynDNSプラグインを共有していても、「プラグイン」を専用しています。以下は、それらをサポートするプラグインで注文した既知のDDNSプロバイダーのリストです。
完全なリストについては、Machine Friendly JSON出力については、 inadyn -Lを参照して、 inadyn -L -jを使用してください。
ネイティブにサポートされていないDDNSプロバイダーは、カスタム、または一般的なDDNSプラグインを使用して有効にできます。構成例については、以下を参照してください。
In-A-Dynはhttpsにデフォルトですが、すべてのプロバイダーがこれをサポートできるわけではないため、問題が発生した場合に備えて、 providerセクションの更新( ssl = false )またはcheckip-ssl = false )のSSLを無効にしてみてください。
HTTPSは、クレデンシャルがスヌーピングされないように保護し、誰かがアカウントをハイジャックするリスクを軽減するため、デフォルトで有効になります。
In-A-Dynは、異なるDDNSプロバイダーでもいくつかのアカウント、いくつかのDDNSサーバーの更新をサポートしています。次の/etc/inadyn.confの例は、これがどのように行われるかを示しています。デーモンを起動せずに構成を確認するには、以下を使用してください。
inadyn --check-config
これにより、デフォルトの.confファイルを探します。ファイルを確認するには、以下を使用してください。
inadyn --check-config -f /path/to/file.conf
# In-A-Dyn v2.0 configuration file format
period = 300
user-agent = Mozilla/5.0
# The FreeDNS username must be in lower case
# The password (max 16 chars) is case sensitive
provider freedns {
username = lower-case-username
password = case-sensitive-pwd
hostname = some.example.com
}
# We override checkip server with the In-a-dyn built-in 'default',
# http://ifconfig.me/ip, for details on this, see below.
provider freemyip {
password = YOUR_TOKEN
hostname = YOUR_DOMAIN.freemyip.com
checkip-server = default
}
provider dyn {
ssl = false
username = charlie
password = snoopy
hostname = { peanuts, woodstock }
user-agent = Mozilla/4.0
}
provider duckdns.org {
username = YOUR_TOKEN
password = noPasswordForDuckdns
hostname = YOUR_DOMAIN.duckdns.org
}
# With multiple usernames at the same provider, index with :#
provider no-ip.com:1 {
username = ian
password = secret
hostname = flemming.no-ip.com
user-agent = inadyn/2.2
}
# With multiple usernames at the same provider, index with :#
provider no-ip.com:2 {
username = james
password = bond
hostname = spectre.no-ip.com
checkip-ssl = false
checkip-server = ifconfig.me
checkip-path = /ip
}
# With multiple usernames at the same provider, index with :#
provider no-ip.com:3 {
username = spaceman
password = bowie
hostname = spaceman.no-ip.com
checkip-command = "/sbin/ifconfig eth0 | grep 'inet6 addr'"
}
# Google Domains - notice use of '@' to update root entry
provider domains.google.com:1 {
hostname = @.mydomain.com
username = your_username
password = your_password
}
# Wildcard subdomains - notice the quotes (required!)
provider domains.google.com:2 {
hostname = "*.mydomain.com"
username = your_username
password = your_password
}
# Note: hostname == update-key from Advanced tab in the Web UI
provider tunnelbroker.net {
username = futurekid
password = dreoadsad/+dsad21321 # update-key-in-advanced-tab
hostname = 1234534245321 # tunnel-id
}
# dynv6.com update using a custom checkip-command, which works
# if you have access to an Internet-connected interface. Make
# sure to verify the command works on your system first
allow-ipv6 = true # required option for IPv6 atm.
provider dynv6.com {
username = your_token
password = not_used
hostname = { host1.dynv6.net, host2.dynv6.net }
checkip-command = "/sbin/ip -6 addr | grep inet6 | awk -F '[ t]+|/' '{print $3}' | grep -v ^::1 | grep -v ^fe80"
}
provider cloudxns.net {
username = your_api_key
password = your_secret_key
hostname = yourhost.example.com
}
provider dnspod.cn {
username = your_api_id
password = your_api_token
hostname = yourhost.example.com
}
# Create a unique custom API token with the following permissions:
# -> Zone.Zone - Read, Zone.DNS - Edit.
provider cloudflare.com {
username = zone.name
password = api_token_important_read_comment
hostname = hostname.zone.name
ttl = 1 # optional, value of 1 is 'automatic'.
proxied = false # optional.
}
provider goip.de {
username = user.name
password = user.password
hostname = hostname.zone.name
}
configにNO-IPプロバイダーの3つの異なるユーザーがいる方法に注意してください。これは、プロバイダー名にa :IDを追加することで達成されます。
また、カスタムキャッシュディレクトリを定義します。デフォルトは使用/var/cache使用します。私たちの場合/mnt 、各プロバイダーに報告されているように、IPアドレスをキャッシュするためのシステム固有の永続的なストアです。 Inadynはこれを使用して、過度の更新のためにアカウントからロックアウトされないようにします。これは、Deviceインターネットゲートウェイを実行しているInadynが再起動ループまたは同様のものに詰まっている場合に発生する可能性があります。
ただし、キャッシングメカニズムが100%完全にプルーフするには、システムクロックを正しく設定する必要があります。システムクロックがブートで適切に設定されていない場合、たとえばntpメッセージの受信を保留している場合は、コマンドラインオプション--startup-delay=SECを使用します。 inadyn伝えるには、 SECタイムアウトの前に進んでも構いませんSIGUSR2を使用してください。
定義された最後のシステムは、Hurricane Electricが提供するIPv6 https://tunnelbroker.netサービスです。ここで、 hostnameはトンネルIDに設定されており、パスワードは[Advanced Configuration]タブにある更新キーでなければなりません。
注:上記のDynv6の
checkip-command、それを行う1つの方法にすぎません。これが独自のスクリプトからの別のバリアントです:ip -6 addr list scope global $device | grep -v " fd" | sed -n 's/.*inet6 ([0-9a-f:]+).*/1/p' | head -n 1
DDNSプロバイダーのデフォルトのcheckip-server 、タイムアウトであっても応答が遅くなる場合があります。 In-Dynサポートは、プロバイダーのデフォルトをカスタムのデフォルトまたはカスタムコマンドでオーバーライドします。それを変更する最も簡単な方法は、 checkip-server = default in your Provider Configを設定し、Dynをデフォルトのhttp://ifconfig.me/ip使用するようにトリガーすることです。これは、カスタムDDNS構成のデフォルトでもあります。詳細については、Manページまたは以下のセクションを参照してください。
一部のプロバイダーは、特定のブラウザを使用してアップデートを送信する必要があります。これは、上記のように、 user-agent = STRING Settionを使用して回避できます。グローバルレベルとプロバイダーごとのレベルの両方で利用できます。
注:マルチユーザーサーバーのセットアップでは、DDNSサーバーの資格情報を読んでいる他のユーザーから保護するために、 .conf (you/rootによってのみ読み取りワイト)にchmodを削除してください。
InadynがサポートするデフォルトのDDNSプロバイダーに加えて、カスタムDDNSプロバイダーは構成ファイルで定義できます。上記の例で使用されているprovider {}セクションの代わりにcustom {}を使用します。
In-a-dynは、HTTP Basic Authentication(base64 Encoded)を使用して、ユーザー名とパスワードをサーバーに通知します。ユーザー名やパスワードがない場合は、これらのフィールドを除外できます。基本認証は、サーバーとの通信で引き続き使用されますが、空のユーザー名とパスワードを使用します。
カスタムDDNSプロバイダーは次のようにセットアップできます。
custom example {
username = myuser
password = mypass
checkip-server = checkip.example.com
checkip-path = /
ddns-server = update.example.com
ddns-path = "/update?hostname="
hostname = myhostname.example.net
}
次の変数を構成に置き換えることができます。
%u - username
%p - password, if HTTP basic auth is not used
%h - hostname
%i - IP address
https://www.namecheap.comの場合、次のように見えることがあります。ホスト名の構文が上記とどのように異なるかに注意してください:
custom namecheap {
username = YOURDOMAIN.TLD
password = mypass
ddns-server = dynamicdns.park-your-domain.com
ddns-path = "/update?domain=%u&password=%p&host=%h&ip=%i"
hostname = { "@", "www", "test" }
ddns-response = "<ErrCount>0</ErrCount>"
}
ここでは、3つのホスト名が更新され、1つのHTTPがリストされているすべてのホスト名の更新要求を取得します。 Freednsのような一部のプロバイダーは、更新する必要があるレコードの量を減らすためにCNAMEレコード(エイリアス)のセットアップをサポートしています。 Freednsは、複数のレコードを同じアップデートにリンクするデフォルトでさえデフォルトでさえ、各DNSレコードを一意のIPアドレスから更新したい場合に非常に混乱する場合があります。DDNSプロバイダーで設定を確認してください!
一般的なプラグインは、アップデートリクエストでクライアントの新しいIPアドレスを必要とするプロバイダーでも使用できます。 http://dyn.comがInadynによってサポートされていないふりをした場合、これがどのように行われるかの例を次に示します。 ddns-pathプロバイダー間で異なり、あなたが理解する必要があるものです。サポートページには、これをAPIセクションなどにリストする場合があります。
# This emulates dyndns.org
custom dyn {
username = DYNUSERNAME
password = DYNPASSWORD
ddns-server = members.dyndns.org
ddns-path = "/nic/update?hostname=%h.dyndns.org&myip=%i"
hostname = { YOURHOST, alias }
}
ここでは、フォーマット仕様を備えた完全なカスタムddns-pathが使用されています。これの詳細については、 inadyn.conf(5) Manページを参照してください。
別の例:
# Custom configuration for dnsmadeeasy
custom dyn {
username = DNSMADEEASYUSERNAME
password = DNSMADEEASYPASSWORDFORTHISHOST
ddns-server = cp.dnsmadeeasy.com
ddns-path = "/servlet/updateip?username=%u&password=%p&id=DNSMADEEASYHOSTID&ip=%i"
hostname = HOST
}
一般的なプラグインを使用する場合は、最初にDDNSプロバイダーからの応答を検査する必要があります。デフォルトでは、Inadynは200 HTTP応答OKコードを探し、HTTP応答ボディで"good" 、 "OK" 、 "true" 、 "success" 、または「Success」または"updated"ます。 DDNSプロバイダーが何か他のものを返した場合、可能なddns-response = { Arrr, kilroy }のリストを追加できます。または、単一のddns-response = Coolプロバイダーが応答を提供する場合は、 ddns-response = ""を使用します。
DDNSプロバイダーがcheckip-serverを提供していない場合は、http://ifconfig.me/ipなどの他のサービスを使用できます。これは、カスタムプロバイダーの構成を指定しない場合はデフォルトです。
checkip-server = ifconfig.me
checkip-path = /ip
checkip-ssl = false
または、スクリプトまたはコマンドを使用します。
checkip-command = /sbin/ifconfig eth0 | grep 'inet addr'
これらの2つの設定は、標準provider{}セクションでも使用できます。
注:すべてがddns-pathでエンコードされていても、 hostnameが必要です!指定されたホスト名はappend-myip設定を使用しない限り、アップデートに使用されるddns-pathに追加されます。その場合、IPアドレスは代わりに追加されます。 append-myipを使用する場合、上記の最後の例のように、代わりにddns-pathでDNSホスト名をエンコードする必要があります。
一般的な問題は開始されることです。これは、Dyn In-Dynには多くの混乱するオプションがあるため、理解できます。
/etc/inadyn.confを保存した後、最初に完全なデバッグログで前景で起動してみてください。
inadyn -l debug --foreground --force
誤解やサーバーの応答が不良である場合は、見つけるのがはるかに簡単です。バグレポートを提出したり、フォーラム/IRCで質問したりする場合は、パスワードとドメイン情報からログを検閲することを忘れないでください!
キャッシュをクリアしてみてください:
sudo systemctl stop inadyn.servicesudo rm -rf /var/cache/inadyn/*sudo systemctl restart inadyn.service長い間、プロジェクトは独自の.debパッケージと基本的なAPTインフラストラクチャを維持していました。ただし、Dynの機能のレベルの増加、したがって依存関係の量、およびより多くのアーキテクチャと異なる分布をサポートするための要求は、v2.9.1の時点で事前に構築された.debサポートが中止されています。
Debianプロジェクトには現在、Ubuntuなどの上流であるInadynのアクティブなメンテナーがあります。問題やリクエストをそれぞれの配布に報告してください。
注:プロジェクトのパッケージファイルは、GITリポジトリの別のDebianブランチに移動されました。リリースのために積極的に更新またはサポートされていません。それを使用するには、ブランチをチェックして、
debian/changelogを編集してください)。システム用の新しい.debファイルを作成します。
ここで利用可能な画像を自動的に構築してください:
inadyn建物を簡素化して実行するために、DockerFileが提供されています。
docker build -t inadyn:latest .
docker run --rm -v "$PWD/inadyn.conf:/etc/inadyn.conf" inadyn:latest
バックグラウンドデーモンとしてDynで走りたくない場合は、Cronjobをセットアップできます。
inadyn.confファイルを作成しますcrontab -e内に次の行を追加します * * * * * docker run --rm -v " path/to/inadyn.conf:/etc/inadyn.conf " -v " path/to/cache:/var/cache/inadyn " troglobit/inadyn:latest -1 --cache-dir=/var/cache/inadyn > /dev/null 2>&1MacOSで最新の安定したバージョンを実行するには、タイプします。
brew install inadyn
マスターブランチから最新バージョンを実行するには、代わりにgitタップをインストールします。
brew install --HEAD troglobit/inadyn/inadyn
これらのいずれかがすべての依存関係をインストールします。
MacPortsを使用して、MacOSにIn-Dynをインストールすることもできます。
sudo port install inadyn
詳細については、In-A-Dynのポートページをご覧ください。
最初に、Githubから最新の公式公式リリースをダウンロードしてください。
In-A-Dynは、ビルドするためにいくつかのライブラリを必要とします。ビルドシステムは、 pkg-configツールを使用して、必要なバージョンでそれらを検索します。
これらは、ほとんどのUNIX分布から事前に構築されたパッケージとして利用できます。 Inadynを構築するときは、配布パッケージの-devまたは-develパッケージを必ずインストールしてください。 Debian/ubuntu(デリバティブ)について:
$ sudo apt install gnutls-dev libconfuse-dev
構築するには、Cコンパイラ、 pkg-configツールも必要です。
$ sudo apt install build-essential pkg-config
HTTPS(SSL/TLS)サポートを使用して構築する場合、システムにca-certificatesパッケージもインストールしてください。そうしないと、DDNSプロバイダーのHTTPS証明書を検証できません。
GNUは、デフォルトのインストールプレフィックスとして/usr/local使用して構成およびビルドシステムを使用します。多くの場合、これは便利ですが、これは構成ファイルとキャッシュファイルも同じプレフィックスを使用することを意味します。ほとんどのユーザーは、 /etc/ and /var/run/ and configureにこれらのファイルを期待するようになりました。
$ ./configure --prefix=/usr --sysconfdir=/etc --localstatedir=/var
$ make -j5
$ sudo make install-strip
--prefix=/usrオプションを削除することをお勧めします。
デフォルトでは、InadynはHTTPSサポートのためにGNUTLSで構築しようとします。 Gnutlsは、システムライブラリとしてOpenSSL/Libresslを提供しないUNIX分布で使用する推奨されるSSLライブラリです。ただし、OpenSSLまたはLibresslがシステムライブラリとして利用できる場合、たとえば多くの組み込みシステムで:
./configure --enable-openssl
Inadyn HTTPSサポートを完全に無効にするため(推奨されません!):
./configure --disable-ssl
OpenSSLおよびGNU GPLライセンスの問題の詳細については、次のことを参照してください。
一部の人々は、 autoconf LDFLAGS=使用してこれを行うために静的に構築したいと考えています。また、 LIBS=...を追加する必要がある場合があります。これは、特定のシステムに依存します。
./configure LDFLAGS="-static" ...
一部のシステムでは、デフォルトの構成インストールパス、 /usr/localは無効になり、 ldconfigやpkg-configなどのツールで検索されません。したがって、ConfigureがLibConfuseライブラリまたは.pcファイルを見つけられない場合、このコンテンツでfile /etc/ld.so.conf.d/local.confを作成します。
/usr/local/lib
リンカーキャッシュを更新します:
sudo ldconfig -v |egrep libconfuse
そして、このようなinadyn configureスクリプトを実行します。
PKG_CONFIG_PATH=/usr/local/lib/pkgconfig ./configure
SystemD統合には、 pkg-configをインストールする必要があります。これにより、Inadyn Build SystemがSystemDパスを把握するのに役立ちます。インストールすると、 systemctlを呼び出してinadyn有効にして開始します。
$ sudo systemctl enable inadyn.service
$ sudo systemctl start inadyn.service
システムログを検査することで適切に開始されたことを確認します。
$ sudo systemctl status inadyn.service
サービスを停止するには:
$ sudo systemctl stop inadyn.service
ルーターに組み込まれている場合、一部の機能は通常使用されず、スペースを節約するために無効にすることができます。 Configureオプション--enable-reducedこのような縮小されたバイナリを構築します。現在、これにより、冗長なログメッセージとエラー文字列が無効になり、構成ファイルのチェックと後方互換性が排除されます。
貢献したい場合、または単に最新のが未発表の機能を試してみたい場合は、GNUビルドシステムについていくつかのことを知る必要があります。
configure.acおよびdirectory per-directory Makefile.amはキーファイルですconfigure and Makefile.inはautogen.shから生成されます。Gitに保存されるのではなく、リリースタルボール用に自動的に生成されますMakefile 、 configureスクリプトによって生成されますGitから構築する。リポジトリをクローンし、 autogen.shスクリプトを実行します。これには、GNU Tools automake 、 autoconf 、 libtoolシステムにインストールする必要があります。リリースされたターボールでは、これらのツールは必要ありません。
$ sudo apt install git automake autoconf
次に、リポジトリをクローンして、gitリポジトリの一部ではないconfigureスクリプトを作成できます。
git clone https://github.com/troglobit/inadyn.git
cd inadyn/
./autogen.sh
./configure && make
Gitからの構築には、少なくとも前述のライブラリの依存関係が必要です。 GITソースは移動ターゲットであり、自分が何をしているのかわからない限り、生産システムにはお勧めしません。
これは、Narcis IliseiのオリジナルのInadynの継続です。現在、Joachim Wibergが維持しています。バグレポートを提出するか、GitHubでバグ修正と提案された拡張機能のプルリクエストを送信してください。
個人的なありがとう!ロバート・ヘグバーグに出かけます。ロバート・ヘグバーグは、小さなD-Link dir-645ルーターを後援したので、Interwebsに戻ることができます:-)