Вопросы домена XMPP (просодии)

Я запускаю сервер XMPP на малине pi на своем домашнем компьютере. У меня есть домен, зарегистрированный для указания внешнего IP-адреса моего маршрутизатора, и порты перенаправляются на моем маршрутизаторе. Тем не менее, я не могу использовать внешний домен / ip при подключении к моей локальной сети, только когда и когда. Каков простой способ настроить мои компьютеры дома, чтобы узнать, является ли сервер локальным (и указывать на 192.168.xx) или удаленным?

    2 Solutions collect form web for “Вопросы домена XMPP (просодии)”

    Настройте легкий сервер DNS на малине (я рекомендую dnsmasq над «стандартным» ISC BIND-сервером, потому что его проще настроить для этой цели) и настроить его как DNS-сервер по умолчанию для любого устройства, подключенного к вашей локальной сети (скорее всего, в конфигурации DHCP).

    В конфигурации DNS укажите свой домен на локальный адрес 192.168.xx, тем самым переопределив глобальный указатель домена в локальной сети. Настройте DNS для пересылки всех других запросов на соответствующий DNS-сервер за пределами вашей локальной сети (например, DNS вашего интернет-провайдера).

    Это приведет к тому, что устройство LAN получит локальный адрес сервера, когда он запрашивает ваш домен. Когда это устройство находится в дороге, он получит «реальный» внешний IP-адрес с DNS-сервера за пределами вашей локальной сети.

    Как уже сообщал предыдущий ответ, вы можете использовать небольшой DNS-сервер на своем raspi и сделать это именно так. Если вы этого не хотите, и если ваше разрешение имени установлено на поиск / 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 

    он в основном вставляет локальный IP-адрес в файл /etc/hosts при обнаружении IP-адреса вашего компьютера внутри вашей домашней сети. И удаляет эту строку, когда вы отсутствуете, и позволяете вам использовать любой DNS-сервер в вашем файле /etc/resolv.conf .

    Linux и Unix - лучшая ОС в мире.