おそらくこれを行うのは私が最初ではありませんが、外出中に LAN 上のリソースにアクセスできるようにデバイスやコンピューターを簡単に構成できるように、NO-IP のダイナミック DNS サービスを使用する必要がありました。 NO-IP に詳しくない人のために説明すると、これは無料のダイナミック DNS サービスです。ほとんどの家庭および小規模オフィスのインターネット接続には動的 IP が使用されます。つまり、ルーターからの接続が確立されるたびに、IP アドレスがほとんど変化します。通常、ドメイン名が機能するには静的 IP アドレスが必要です。ダイナミック DNS では、IP アドレスが変更されたときに NO-IP を新しい IP アドレスで更新することで、ドメイン名 (つまり、subdomain.example.com) でダイナミック IP を使用できるようになります。 NO-IP は、その IP をドメイン名に関連付けるので、変更される IP ではなくドメインに対してサービスをセットアップできるようになります。これにより、設定が簡単になります。
多くのルーターには NO-IP クライアントが組み込まれていますが、私のルーターは NO-IP をサポートしておらず、何らかの理由で、NO-IP が Linux ホストに推奨するクライアントを動作させることができませんでした。ソースをダウンロードして指示に従ってコンパイルすると、実行されているように見えましたが、IP アドレスは更新されませんでした。私が見つけた問題を診断するためのコンソールやログ ファイルへの出力はなかったので、自分で問題を作成することにしました。実際には、bash スクリプトといくつかの単純なユーティリティを使用するのはそれほど難しくありませんでした。私のLinuxボックス上で。これを設定するためのハウツーガイドとドキュメントは次のとおりです。私は Ubuntu サーバーを実行しているので、apt と nano を使用していますが、これは Mac OS X、BSD、Linux のあらゆる種類、Raspberry Pi など、POSIX ベースのあらゆるもので動作するはずです。
このスクリプトは、コマンド ライン パラメーターを使用した単一インスタンスとして、デーモンとして、crontab (スケジュールに従ってプログラムを実行するためのユーティリティ) を使用して、または Linux サービスとして実行できます。
このスクリプトには、wget という 1 つの依存関係があります。これは通常、ほとんどの Linux および BSD ディストリビューションにデフォルトでインストールされますが、インストールされていない場合は、パッケージ マネージャーを使用してインストールします。
sudo apt-get install wget
-または-
sudo yum install wget
no-ip.sh -u=username -p=password -h=host.sample.com -d=true -l=/path/to/logfile.log
パラメータ:
-u, --username
no-ip.com にログオンするためのユーザー名。
-p, --password
no-ip.com にログオンするためのパスワード。
-h, --hostname
更新するドメイン名。
-d, --detectip
外部 IP アドレスを検出するようにスクリプトに指示します。これは -i よりも優先されます。
-i, --ip
更新する IP アドレスを手動で設定します。 -d も -i も指定されていない場合、no-ip は検出した IP アドレスを使用します。
-n, --interval
スクリプトをデーモン/サービスとして実行すると (「インストール」を参照)、n 分ごとに no-ip が更新されます。
-l, --logfile
ログファイルへのパスを設定します。このファイルは書き込み可能である必要があります。
-c, --config
構成ファイルへのパスを設定します。このファイルは読み取り可能である必要があります。構成ファイルのパラメーターは、コマンド ライン パラメーターよりも優先されます。
no-ip.sh
デフォルトの場所 /etc/no-ip/no-ip.conf にある構成ファイルの設定を使用してスクリプトを実行します。
no-ip.sh -u=username -p=password -h=host.sample.com -d=true -l=/path/to/logfile.log
1 回限りの更新を実行し、UP を検出して結果をログに記録します。
no-ip.sh -c=/home/username/no-ip.conf
構成ファイル内の設定を使用してスクリプトを実行します。
no-ip.sh /dev/null 2>&1 &
デフォルトの場所 /etc/no-ip/no-ip.conf にある構成ファイルの設定を使用して、スクリプトをデーモンとして実行します。
構成ファイルは、単純な構文を使用してパラメータを定義します。任意のコマンド ライン パラメーター (--config を除く) を構成ファイルで指定することもできます。同じルールが、caomand 行パラメータとして構成ファイルのパラメータに適用されます (つまり、両方が指定されている場合は、「detectip」が「ip」をオーバーライドします)。
例:
user=username
password=password
hostname=hostname.example.com
logfile=/var/log/no-ip.log
interval=10
detectip=true
スクリプトをインストールする前に、ファイルをローカル マシンにダウンロードして抽出します。この手順では、no-ip-master フォルダーにいることを前提としています。
cd ~
wget https://github.com/theonemule/no-ip/archive/master.zip
unzip master.zip
cd no-ip-master
方法 1: crontab
Crontab を使用すると、スクリプトを実行するスケジュールを指定でき、crontab が構成されているユーザーとしてスクリプトも実行されます。ユーザーがスクリプトの実行権限、構成ファイルの読み取り権限、およびログ ファイルへの書き込み権限を持っていることを確認してください。 Crontabs はスケジュールに基づいてスクリプトを実行するため、間隔を指定する必要はありません。
root としてスクリプトを実行する方法は次のとおりです。
1.) などにフォルダーを作成します。
sudo mkdir /etc/no-ip
2.) 構成ファイルを作成します。
sudo touch /etc/no-ip/no-ip.conf
3.) お気に入りのエディターでパラメーターを設定します。ナノを使ってます。詳細については、上記の「設定ファイル」セクションを参照してください。
sudo nano /etc/no-ip/no-ip.conf
user=username
password=password
hostname=hostname.example.com
logfile=/var/log/no-ip.log
detectip=true
4.) no-ip.sh を /usr/sbin にコピーします。
sudo cp no-ip.sh /usr/sbin/no-ip.sh
5.) スクリプトを実行可能にする
sudo chmod +x /usr/sbin/no-ip.sh
6.) root としてログオンします
sudo -i
7.) ルートの crontab を編集します
crontab -e
8.) エントリを一番下に追加します。 */10 は、現在時刻が 10 で割り切れるたび、または 10 分ごとにスクリプトを実行し、crontab を保存するように crontab に指示します。
*/10 * * * * /usr/sbin/no-ip.sh
方法 2: Linux サービス (Debian ベースのディストリビューション用に書かれています。これは他のディストリビューションでは異なります)
root にスクリプトの実行権限、構成ファイルの読み取り権限、およびログ ファイルへの書き込み権限があることを確認してください。
1.) /etc にフォルダーを作成します。
sudo mkdir /etc/no-ip
2.) 構成ファイルを作成します。
sudo touch /etc/no-ip/no-ip.conf
3.) お気に入りのエディターでパラメーターを設定します。ナノを使ってます。詳細については、上記の「設定ファイル」セクションを参照してください。
sudo nano /etc/no-ip/no-ip.conf
user=username
password=password
hostname=hostname.example.com
logfile=/var/log/no-ip.log
interval=10
detectip=true
4.) no-ip.sh を /usr/sbin にコピーします。
sudo cp no-ip.sh /usr/sbin/no-ip.sh
5.) スクリプトを実行可能にする
sudo chmod +x /usr/sbin/no-ip.sh
6.) no-ip-service を init.d にコピーします。
sudo cp no-ip-service /etc/init.d/no-ip-service
7.) no-ip-service を実行可能にする
sudo chmod +x /etc/init.d/no-ip-service
8.) サービスを開始します
sudo service no-ip-service start
9.) 起動時に開始するサービスを追加します。
update-rc.d no-ip-service defaults