ネイティブダイナミックDNS

動的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

指定されたキーはそこから取得されます。



All Articles