動的IPアドレスを持つコンピューターのDNSを登録する必要がある場合があります。 これを行う簡単な方法は、最近のトピックで説明した
dyndnsタイプのサービスを使用
することで、ドメインと動的IPを
バインドします 。 このアプローチは非常にうまく機能しない場合があります。
たとえば、私の状況では、プロバイダーがパブリックIPアドレスを変更する
ことがあります。 通常、これは数か月ごとに発生します。 また、自宅のコンピューターが再起動することはほとんどありません。 この間、以前に使用したdyndnsサービスは、「未使用」アカウントを無効にするために、非アクティブな通知を数回送信することができました。 手動で割り当てられたDNSゾーンへの切り替えも失敗します。これは、アドレスが変更される場合があるためです。 また、通常、ここで自宅のコンピューターにアクセスする必要があるときに、そのことを確認します。
説明した方法を実装するには、インターネット上のサーバーにDNSバインドサーバーが必要です。 また、コンピューターに割り当てるサブドメインであるドメインゾーン。 LinuxコンピューターをLinuxサーバーに接続するオプションについて説明します。 他のオペレーティングシステムを使用するには、マニュアルを読み、いくつかの手順を変更する必要があります。
だから:
1. server.orgドメインでbind9サーバーをインストールしました
2.ゾーンclient.server.org.zoneを作成します。
$ORIGIN .
$TTL 10 ; 10 seconds
client.server.net IN SOA ns1.server.net. hostmaster.server.net. (
18 ; serial
10800 ; refresh (3 hours)
3600 ; retry (1 hour)
604800 ; expire (1 week)
10 ; minimum (10 seconds)
)
$TTL 3600 ; 1 hour
NS ns1.server.net.
NS ns2.server.net.
MX 10 client.server.net.
ここで、サーバーns1.server.netおよびns2.server.netはゾーンのDNSサーバーであり、client.server.netはホームコンピューターのアドレスです。
3.クライアントでキーを生成します。
client# cd /etc/namedb/keys
client# dnssec-keygen -b 512 -a HMAC-MD5 -v 2 -n HOST client.server.net.
4.サーバー上にキーを持つファイルを作成します。
server# cd /var/named/chroot/etc
server# vim keys.conf :
key client.server.net. {
algorithm "HMAC-MD5";
secret "omr5O5so/tZB5XeGuBBf42rrRJRQZB8I9f+uIIxxei8qm7AVgNBprxtcU+FQMzBvU/Y+nyM2xbs/C8kF3eJQUA==";
};
この場合、対称キーが使用されますが、これは安全ではありません。誰かがサーバー上のキーを持つファイルにアクセスできる場合、そのキーを使用してゾーン内のデータを変更できます。 この場合、非対称キーを使用できます。
キーを使用してファイルにアクセス許可を設定します。
server# chmod 640 keys.conf
server# chown root:named keys.conf
5.ゾーンをnamed.confに追加します。
include "/etc/keys.conf"
zone "client.server.net" {
type master;
file "zones/client.server.net";
allow-update{
key client.server.net;
};
};
ここでは、ゾーンデータの更新を許可するパラメーターを指定します。 一般に、マニュアルを読んだ後、特定のキーに対してゾーン内の1つのレコードのみを更新できるこのパラメーターのオプションを見つけることができます。 つまり、client1、client2などのサブドメインが登録されたゾーンを持つことができます キーkey1、key2などで認証されます。
6. DNSサーバーを再起動します。
server# /etc/init.d/named reload
7.ゾーンデータを更新するクライアントでスクリプトを作成します。
#!/bin/bash
IFACE="wlan0"
TTL=3600
SERVER=ns1.example.com
HOSTNAME=foo.example.com
ZONE=example.com
KEYFILE=/root/ddns-keys/Kfoo.example.com.+157+12345.private
new_ip_address=`ifconfig $IFACE | grep "inet addr:" | awk '{print $2}' | awk -F ":" '{print $2}'`
new_ip_address=${new_ip_address/ /}
nsupdate -v -k $KEYFILE << EOF
server $SERVER
zone $ZONE
update delete $HOSTNAME A
update add $HOSTNAME $TTL A $new_ip_address
send
EOF
スクリプトの最初に、対応するパラメーター、インターフェース、サーバーおよびゾーン名、キーのあるファイルの場所が記載されています。
8. DNSを変更するときに、アドレスの自動実行/自動変更を構成するためにのみ残ります。
NetworkManagerのスクリプトを使用してこれを行います。
ファイル/etc/NetworkManager/dispatcher.d/20-dyndns.shを作成します。
#!/bin/sh
iface=$1
state=$2
if [ "x$state" == "xup" ] ; then
/etc/namedb/ddns-update
elif [ "x$state" == "xdown" ]; then
true
fi
実行可能にし、rootユーザーが所有します。
実行チェック使用。
Upd:動作しない場合は、ファイルclient.server.org.zoneが存在するフォルダーに書き込むための名前付き権限をサーバーにチェック(インストール)します
namedはclient.server.org.zone.jnlファイルを作成します
次の材料が使用されました。
http://www.freebsdwiki.net/index.php/BIND,_dynamic_DNS
http://blog.jasonantman.com/2010/04/bind9-dynamic-dns/
http://www.oceanwave.com/technical-resources/unix-admin/nsupdate.html
指定されたキーはそこから取得されます。