Могу ли я использовать файл /etc/hosts для настройки псевдонима [закрыто]


The /etc/hosts файл может использоваться для переопределения определений dns, т. е. для указания имени хоста на другой ip.

Я хочу использовать /etc/hosts чтобы сделать запись псевдонима, т. е. заставить мой компьютер думать, что www.mysite.com не указывает на" жестко закодированный " ip, но вместо этого является синонимом mychangingip.myip.com.

можно ли это сделать?

9 163

9 ответов:

/etc/hosts не может быть использован (сам по себе) для создания имени хоста "псевдонимы".

файл hosts создает внутренний эквивалент A и PTR записи из DNS, т. е. отображение имени хоста на IP-адрес и наоборот.

хотя вы можете добавить несколько имен к определенному IP, это требует, чтобы вы знали IP заранее. Он не может быть использован для получения того же эффекта, что и CNAME запись, где имя указывает на другое имя, которое в свою очередь разрешает необходимый IP.

Если вы хотите SSH на сервер (с динамически изменяющейся записью DNS), то вы можете эффективно добавить "псевдоним" (в файле ~/.ssh / config) создание записи:

Host myAlias
    HostName mychangingip.myip.com

затем вы можете "ssh myAlias" (есть и другие директивы, которые могут быть полезны, например, пользователь, порт и т. д.).

у меня была такая же точная проблема, и я решил ее, установив и используя nginx на моем mac. Для этого вам не нужен dns-сервер. Вы можете просто воспользоваться преимуществами nginx proxy_pass возможность получить тот же эффект, что и cname.

после установки и настройки nginx, вы можете псевдоним first.com на second.com такой. В вашем/etc / hosts forward first.com трафик на 127.0.0.1.

127.0.0.1 first.com

затем в конфигурации nginx добавьте следующее:

server {
  listen   80;
  server_name  first.com;
  access_log off;
  location / {
      proxy_pass http://second.com;
      proxy_set_header    Host            $host;
      proxy_set_header    X-Real-IP       $remote_addr;
      proxy_set_header    X-Forwarded-for $remote_addr;
      proxy_connect_timeout 300;
  }
}

этот должен эффективно дать вам cname-подобную настройку. Надеюсь, это поможет!

этот сценарий оболочки может сделать трюк для вас, если вам просто нужно иметь актуальный IP-адрес в файле hosts и не нравится накладные расходы на пользовательскую настройку DNS. Например, вы можете регулярно запускать его в процентах.

#!/bin/bash
# Get the dynamic IP (dirty, I know)
IP=`host -t a mychangingip.myip.com | perl -nle '/((?:\d+\.?){4})/ && print ' | head -n1`

# Update the hosts file
if test -n "$IP"; then
    grep -v www.thesite.com /etc/hosts > /tmp/hosts
    echo "$IP www.thesite.com" >> /tmp/hosts
    cp /tmp/hosts /etc/hosts
fi

Я недавно изучал это, я не мог найти реального решения. Однако вы можете получить частично то, что хотите, добавив строку поиска в /etc/resolv.conf например:

search myip.com

тогда он будет искать mychangingip.myip.com при попытке решить mychangingip См. также справочную страницу для resolv.conf

Это можно сделать, запустив локальный DNS-преобразователь (что-то вроде dnsmasq). Проверка https://serverfault.com/questions/22419/set-dns-server-on-os-x-even-when-without-internet-connection

одно замечание предостережения, если у вас есть запись, как это:

 127.0.0.1     dev.example.com

когда вы на самом деле получаете запрос в своем приложении (в моем случае ASP.NET) это будет actaully решили "localhost", так что вы не можете делать такие вещи, как это :

if (Request.Url.Authority == "dev.example.com) {
   // ...
}

псевдоним разрешен в 'localhost'. я думаю, что это поведение работает, как если бы это было CNAME

есть поставщики услуг, которые будут комфортно и надежно делать это за вас. Ярким примером является безопасность.

Я так не думаю, hosts file на самом деле не является альтернативой dns-сервера. Вместо того, чтобы пытаться выяснить, как установить и настроить привязку DNS, Вы, возможно, захотите попробовать записанного в файл изображения SheerDNS. http://threading.2038bug.com/sheerdns/ (лучший легкий dns-сервер, который я нашел через freshmeat).