SSH経由でアクセスできる動的IPアドレスを持つサーバーがあります。サーバーでは、スクリプトはアドレスが変更されるたびにサーバーのパブリックIPアドレスを含むテキストファイルをWeb場所にアップロードします。
他のクライアントからサーバーにどのように接続しますか?これはDynDNSに似ていますが、ネットワークを使用してIPアドレスを取得します。
答え1
DynDNSサービスにアクセスできない、または使用していない場合は、エイリアスを作成し、~/.ssh/config
IPアドレスが変更されたら編集します。次の2行を入力します(オプションで、そのホストエイリアスのその他の設定が続く可能性があります)~/.ssh/config
。
Host nickname
HostName 1.2.3.4
CheckHostIP no
HostKeyAlias nickname
このスクリプトは、アドレスが変更されるたびに実行されます。
#!/bin/sh
url='http://example.com/my-server-ip.txt'
ip_address=$(wget -q "$url")
case $ip_address in
'') :;; # empty file or connection error
*[!.:0-9A-Fa-f]*) # bad character
echo 1>&2 "The content at $url doesn't look like an IP address!"; exit 1;;
*) # this looks like an IP address
ed -s ~/.ssh/config <<EOF
/^ *Host *nickname
/^ *HostName
s/e .*/e $ip_address/
w
q
EOF
esac
答え2
このnsupdate
コマンドを使用して、リモートサーバーで動的DNS更新を実行できます。私はあなたがDynDNSが提供する(無料)商用サービスを「他のサービス」と比較していると仮定します(しかし知りません)。 「動的DNS」は、実際にはレコード更新のための標準化されたプロトコルであることがわかりました。レコードを含む.txtファイルを移動する必要はありません(これはうまくいきます)。代わりに、nsupdate
アクティブ領域で更新エントリを使用できます。
答え3
単にそのIPでDNSエントリを更新したらどうでしょうか?
私はこれを使ってこれをやっていますSSH-dyndns。よりマイブログエントリの説明。