
ローカル ネットワークで SSH サーバーを実行しており、ルーターのポート転送を介してパブリック インターネットに公開されています。また、マシン上でローカルに ( 経由)、リモートで (ダイナミック DNS 経由) ホストの名前を設定しました。etc/hosts
次のようにします。
ip name
locally 192.168.0.5 myhost
remotely 11.22.33.44 myhost.example.com
ssh 192.168.0.5
ローカル ネットワーク内からは/経由でサーバーにアクセスできssh myhost
、ネットワーク外からはssh 11.22.33.44
/経由でサーバーにアクセスできますssh myhost.example.com
。
ここまでは、すべて問題なく動作します。ただし、同じサーバーに2つの異なるホスト名を使用するのは少々面倒です。統一された方法つまり、ローカルとリモートの両方で機能する単一の IP / ホスト名のみを使用します。
この問題の簡単な解決策はありますか? 問題なければ、私は macOS を使用しています。
ところで、パブリック IP を使用してローカル ネットワークからルーターにアクセスすることはできません。
答え1
ダイナミック DNS が設定されているため、/etc/hosts ファイルに変更を加える必要はありません。
外部アクセスの場合、ホストから IP への解決に DNS を使用し、ローカル ネットワークでも同じことを行う必要があります。
ほとんどのルーターは DNS インジェクションをサポートしています。ルーターの設定を確認し、外部ネットワークからの場合と同じダイナミック DNS ホスト名に対応するように 192.168.0.5 IP アドレスを割り当てる必要があります。その後、内部ネットワークでルーターを DNS サーバーとして使用すると、ルーターは myhost.example.com をローカル アドレスに解決します。そして、外に出て外部アクセスを試みると、ダイナミック DNS が順番に外部 IP に解決します。
ルーターの設定に問題がある場合は、メーカーとモデルを投稿してください。必要な設定がサポートされているかどうかを確認できます。
答え2
DNS を設定する能力がない場合は、ボックスの SSH 構成を使用して同様のことを行うゲームをいくつかプレイできます。まず、自分が「自宅」にいるかどうかを検出する方法が必要です。どこに行くか、どのように接続するかによって異なりますが、これは Wi-Fi SSID をポーリングすることで最も簡単に実行できますが、BSSID またはネットワーク構成の方が堅牢/実行可能である可能性があります。次に例を示します。
MY_SSID="local ssid name"
ssid=`/System/Library/PrivateFrameworks/Apple80211.framework/Resources/airport -I | grep " SSID" | cut -d " " -f 2-`
if [ "$ssid" == "$MY_SSID" ]
then
exit 0
else
exit 1
fi
これを「at_home」と呼び、パスに配置します。次に、myserver
通常、外部アドレスに解決されると仮定して、config
次のようなスタンザを ssh ファイルに追加し、内部アドレスを上書きします。
Match host myserver exec at_home
Hostname myserver.localname # or "local IP"