Вот информация о машине, к которой я хочу получить доступ, используя ее имя хоста:
$ hostname
hostname
$ cat /etc/hosts
127.0.0.1 localhost
127.0.1.1 hostname.company.local hostname
Это стандартная установка Debian 6 (Squeeze), поэтому я пока ничего не возился.
Вот что я получаю от машины (на которой работает нестабильная версия Debian), пытающейся получить доступ к этой машине:
$ ping hostname
ping: unknown host hostname
$ ping hostname.company.local
ping: unknown host hostname.company.local
$ cat /etc/resolv.conf
nameserver 192.168.2.21
nameserver 192.168.2.51
search company.local
networking
tshepang
источник
источник
ping
) или на машине, с которой консультируется клиент. Какая ОС на клиенте? Какова его конфигурация DNS?ping
и ,/etc/hosts
но не о DNS в любом случае?Ответы:
В Интернете, включая локальные сети, машины звонят друг другу по IP-адресам . Чтобы получить доступ к машине B с машины A, используя имя машины B, у машины A должен быть какой-то способ сопоставить имя B с его IP-адресом. Есть три способа объявить имена машин на A:
unix.stackexchange.com
.Есть много способов, которыми они могут работать на практике; невозможно охватить их всех. В этом ответе я опишу несколько распространенных ситуаций.
Файл хостов
Преимущество метода файла hosts заключается в том, что он не требует специального метода. Это может быть затруднительно, если у вас несколько машин, потому что вам нужно обновлять каждую машину, когда меняется имя одной машины. Это не подходит, если IP-адрес B назначается динамически (так что вы получаете другой адрес каждый раз, когда вы подключаетесь к сети).
Файл hosts - это простой список строк, сопоставляющий имена с IP-адресами. Это выглядит так:
В системах Unix файл hosts имеет вид
/etc/hosts
. На Windows этоc:\windows\system32\drivers\etc\hosts
. Почти каждая операционная система, которую вы можете подключить к Интернету, имеет похожий файл; В Википедии есть список .Чтобы добавить запись для B в файл hosts A:
Определите IP-адрес B. На B выполните команду
ifconfig
(если команда не найдена, попробуйте/sbin/ifconfig
). Вывод будет содержать такие строки:В этом примере IP-адрес B - 10.3.1.42. Если имеется несколько
inet addr:
линий, выберите ту, которая соответствует вашей сетевой карте, а неlo
запись, туннель или виртуальную запись./etc/hosts
как суперпользователь; см. Как запустить команду от имени системного администратора (root) .DHCP + DNS в домашних или небольших офисных сетях
Этот метод, безусловно, самый простой, если у вас есть необходимое оборудование. Вам нужно настроить только одно устройство, и все ваши компьютеры будут знать имена друг друга. Этот метод предполагает, что ваши компьютеры получают свои IP-адреса через DHCP , что является способом, позволяющим компьютерам автоматически получать IP-адреса при подключении к сети. Если вы не знаете, что такое DHCP, они, вероятно, знают.
Если в вашей сети есть домашний маршрутизатор , это лучшее место для настройки имен компьютеров, подключенных к этому маршрутизатору. Во-первых, вам нужно выяснить MAC-адрес B. Каждое сетевое устройство имеет уникальный MAC-адрес. На B выполните команду
ifconfig -a
(если команда не найдена, попробуйте/sbin/ifconfig -a
). Вывод будет содержать такие строки:В этом примере MAC-адрес есть
01:23:45:67:89:ab
. Вы должны выбрать линию HWaddr, которая соответствует сетевому порту, который подключен к маршрутизатору через кабель (или карту Wi-Fi, если вы подключены через Wi-Fi). Если у вас есть несколько записей, и вы не знаете, какой именно, подключите кабель и посмотрите, какое сетевое устройство получает IP-адрес (inet addr
строка чуть ниже).Теперь в веб-интерфейсе вашего маршрутизатора найдите параметр, например «DHCP». Название и расположение параметра полностью зависит от модели маршрутизатора, но большинство из них имеют аналогичный набор основных настроек. Вот как это выглядит на прошивке Tomato :
Введите MAC-адрес, IP-адрес и желаемое имя. Вы можете выбрать любой IP-адрес в диапазоне адресов вашей локальной сети. Большинство домашних маршрутизаторов предварительно настроены для диапазона адресов в форме 192.168. х . у или 10. х . у . г . Например, на маршрутизаторе Tomato, показанном выше, на вкладке «Сеть» есть настройка «IP-адрес маршрутизатора» со значением 10.3.0.1 и настройка «маска подсети» со значением 255.255.255.0, что означает, что компьютеры включены локальная сеть должна иметь адрес вида 10.3.0. г . Существует также диапазон адресов для автоматически назначаемых адресов DHCP (10.3.0.129–10.3.0.254); для вашего назначенного вручную адреса DHCP выберите тот, который не находится в этом диапазоне.
Теперь подключите B к сети, и он должен получить IP-адрес, который вы указали, и он будет доступен по указанному имени с любого компьютера в сети.
Создайте свой собственный DNS-сервер с помощью Dnsmasq
Если у вас нет подходящего домашнего маршрутизатора, вы можете настроить такую же функциональность на любом компьютере с Linux. Я объясню, как использовать Dnsmasq для настройки DNS . Есть много других подобных программ; Я выбрал Dnsmasq, потому что он прост в настройке и легок (например, для этого используется маршрутизатор Tomato, показанный выше). Dnsmasq доступен в большинстве дистрибутивов Linux и BSD для ПК, серверов и сетевого оборудования.
Выберите компьютер, который всегда включен, имеет статический IP-адрес и работает под управлением какого-либо Linux или BSD; давайте назовем это S (для сервера). На S установите
dnsmasq
пакет (если его там еще нет). Ниже я буду считать , что конфигурационный файл/etc/dnsmasq.conf
; расположение может отличаться в зависимости от распределения. Теперь вам нужно сделать несколько вещей./etc/hosts
(смотрите раздел «Хосты файл» выше), и убедитесь , что/etc/dnsmasq.conf
не имеетno-hosts
директивы раскомментированы. (Строки, начинающиеся с a#
, закомментированы.) Вы можете поместить имена в другой файл; если вы делаете, положите линиюaddn-hosts=/path/to/hosts/file
в/etc/dnsmasq.conf
.Расскажите Dnsmasq, как получить IP-адреса для имен машин в интернете.
resolvconf
пакет. В большинстве случаев все будет работать из коробки.Если ваш сетевой администратор или провайдер предоставил вам адреса DNS-серверов, введите их
/etc/dnsmasq.conf
, например:Если вы не знаете, какие у вас текущие настройки DNS, посмотрите в файле
/etc/resolv.conf
. Если вы видите строку, какnameserver 8.8.8.8
, введите строкуserver=8.8.8.8
в/etc/dnsmasq.conf
. После изменения/etc/dnsmasq.conf
перезапустите Dnsmasq. Команда для этого зависит от распределения; Типичные возможности включаютrestart dnsmasq
или/etc/init.d/dnsmasq restart
./etc/resolv.conf
(как root), удалите каждуюnameserver
строку и вставьтеnameserver 127.0.0.1
вместо нее./etc/resolv.conf
может быть неоптимальным, если вы установилиresolvconf
пакет с работающей сетью. Убедитесь , что файлыbase
,head
иtail
в/etc/resolvconf/resolv.conf.d/
каталоге не содержат каких - либоnameserver
записей, а затем запуститьresolvconf -u
(как корень)./etc/resolv.conf
и замените всеnameserver
строки однойnameserver 10.3.0.2
строкой, где 10.3.0.2 - это IP-адрес S (см. Выше, как узнать IP-адрес S).Вы также можете использовать Dnsmasq в качестве сервера DHCP , чтобы машины могли автоматически получать адрес, соответствующий их имени. Это выходит за рамки этого ответа; обратитесь к документации Dnsmasq (это не сложно). Обратите внимание, что в данной локальной сети может быть только один DHCP-сервер (точное определение локальной сети выходит за рамки этого ответа).
Имена в глобальном интернете
Пока что я предположил локальную сеть. Что если вы хотите дать имя машине, которая находится в другом уголке мира? Вы по-прежнему можете использовать любой из описанных выше методов, за исключением того, что части, включающие DHCP, применимы только в локальной сети. Кроме того, если ваши машины имеют общедоступные IP-адреса, вы можете зарегистрировать собственное общедоступное имя для них. (Вы также можете назначить частный IP-адрес общедоступному имени; он менее распространен и менее полезен, но не представляет технических трудностей.)
Получение собственного доменного имени
Вы можете получить собственное доменное имя и назначить IP-адреса именам хостов в этом домене. Вам необходимо зарегистрировать доменное имя у провайдера доменных имен; обычно это стоит 10–15 долларов в год (для самых дешевых доменов). Используйте веб-интерфейс вашего провайдера доменных имен для назначения адресов именам хостов.
Динамический DNS
Если ваши машины имеют динамический IP-адрес, вы можете использовать динамический DNS- протокол для обновления IP-адреса, связанного с именем машины, при изменении адреса. Не все провайдеры доменных имен поддерживают динамический DNS, поэтому покупайте перед покупкой. Для личного использования No-IP предоставляет бесплатный динамический DNS-сервис, если вы используете свои собственные домены (например
example.ddns.net
).источник
Использовать многоадресный DNS (mDNS). Это протокол с нулевой конфигурацией, который работает в подсетях локальной сети. Сервер не требуется. Использует
.local
TLD (то, что вы уже используете).Потому что вы спрашиваете, все остальное кажется излишним. Если бы не было, то вы, вероятно, не спросили бы.
источник
avahi
пакет (ы). Вы можете запросить свою сеть через,avahi-browse -alr
например.а также
источник
service restart dhcpd
). Вторая часть будет выполнена на клиенте, а на большинстве дистрибутивов теперь должна быть запущена какservice networking restart
.Компьютеры не просто волшебным образом знают, какие имена хостов принадлежат каким IP-адресатам. Даже на localhost, есть какой-то поиск.
Вам нужно будет настроить другие системы для использования какой-либо службы поиска имен. Это может быть
/etc/hosts
клиент, ldap, nsswitch или обычный DNS-сервер. Я используюbind
и ввожу все локальные машины в локальный домен, а затем использую DNS для этого сайта.источник