XMPPドメインの問題(リズム)

XMPPドメインの問題(リズム)

私は家のLANのRaspberry PiでXMPPサーバーを実行しています。私のルーターの外部IPを指すようにドメインを登録し、ポートが私のルーターに転送されました。ただし、LANに接続すると、外部ドメイン/ IPが利用できなくなり、外出時にのみ使用できます。サーバーがローカル(192.168.xxを指す)であるかリモートであるかを認識するように自宅のコンピュータを構成するより簡単な方法は何ですか?

答え1

Raspberry Piに軽量DNSサーバーを設定し(dnsmasqこの目的のために設定がより簡単なため、「標準」ISC BINDサーバーを使用することをお勧めします)、LANに接続されているすべてのデバイスのプライマリDNSサーバーとして構成します(ほとんどDHCP構成で) 。

DNS 構成では、ドメインをローカル 192.168.xx アドレスとして指定して、LAN 内のインターネットグローバルドメインポインタをオーバーライドします。他のすべてのクエリをLAN外の適切なDNSサーバー(ISP DNSなど)に転送するようにDNSを構成します。

これにより、LANデバイスがドメインを照会するときにローカルサーバーアドレスを取得します。デバイスが移動しているときは、LANの外側のDNSサーバーから「実際の」外部IPを取得します。

答え2

以前の別の答えが示唆したように、raspiの小さなDNSサーバーを使用してこれを行うことができます。望ましくなく、名前解決が/etc/hostsを最初に見つけるように設定されている場合は、次のスクリプトを使用して実行する操作を決定できます。

domain=mydomain.com  # modify as needed
domain_INT_IP=192.168.1.10  #modify as needed
home_netw=192.168 # first two octets, modify as needed but probably not
NIC=eth0  # modify as needed
myIP=$(ifconfig ${NIC}|grep "inet addr"|cut -d: -f2|cut -d" " -f1)
my_netw=$(echo ${myIP}|cut -d. -f1-2)
if [ "${my_netw}" == ${home_netw} ]
then
  echo ${domain_EXT_IP}"  "${domain} >> /etc/hosts
else
  grep "${domain}" /etc/hosts >/dev/null; r=${?}
  if [ ${r} -eq 0 ]
  then
    sed -i -e "/${domain}/d" /etc/hosts
  fi
fi

/etc/hostsコンピュータのIPアドレスがホームネットワーク内にあることを検出すると、デフォルトではローカルIPアドレスがファイルに挿入されます。そして、空白の間にこの行を削除すると、ファイルに設定されているすべてのDNSサーバーを使用できます/etc/resolv.conf

関連情報