LINUX.ORG.RU
решено ФорумAdmin

nslookup не работает внутри виртуальной машины

 ,


0

1

Запускаю nslookup, чтобы узнать имена машин в виртуальной локальной сети (NAT). Получаю:

$ nslookup 192.168.56.131
Server:         192.168.56.2
Address:        192.168.56.2#53

** server can't find 131.56.168.192.in-addr.arpa: NXDOMAIN
192.168.56.2 указан в качестве гейта в настройках сети. 192.168.56.1 — хост. 192.168.56.131 — одна из виртуальных машин.

Чего не хватает в настройках VMware, чтобы nslookup видело имена?

Ответ: VMware этого не умеет. Необходимо или поставить на одну из машин сервер, раздающий имена, или просто прописать имена в /etc/hosts на каждой машине:

192.168.56.131 ngserver.domain.ru ngserver
В последнем случае nslookup может не видеть эти имена, но другие программы, возможно, смогут ими пользоваться.

★★

А причем здесь vmware ? У вас кто-то держит реверсную зону для 192.168.56.0 ? думаю что нет.

anc ★★★★★ ()
Ответ на: комментарий от anc

А причем здесь vmware ? У вас кто-то держит реверсную зону для 192.168.56.0 ? думаю что нет.

VMware своими средствами так не умеет делать?

olegd ★★ ()

Т.е. Dhcp и nat обеспечивается виртуалкой? Тогда смотри документацию к ней. Но не думаю что там dns способен держать зону. Тогда надо сконфигурировать сеть в другом режиме, и аналог настроить вне виртуалки уже с зоной .

boowai ★★★★ ()
Ответ на: комментарий от boowai

Т.е. Dhcp и nat обеспечивается виртуалкой?

Да, именно так. DHCP раздаёт IP, про имена не в курсе.

Тогда смотри документацию к ней.

Какие искать слова?

Но не думаю что там dns способен держать зону. Тогда надо сконфигурировать сеть в другом режиме, и аналог настроить вне виртуалки уже с зоной .

Можно поконкретнее? Устроить это на одной из виртуальных машин нельзя? А на хосте можно? Достаточно ли будет на время работы виртуалок запустить на хосте какую-то программу из пакета BIND9? Если да, то какую? host? Как это сделать, чтобы не создавать помех остальным реальным машинам?

olegd ★★ ()
Последнее исправление: olegd (всего исправлений: 1)
Ответ на: комментарий от olegd

Если получится выключить dhcp в виртуалке, то можно внутри запустить dnsmasq, он на себя возьмёт dhcp и dns. Иначе придётся отказаться от nat на виртуалке, и настраивать его и dnsmasq на самом хосте. Не обязательно dnsmasq, но остальное сложней.

boowai ★★★★ ()
Ответ на: комментарий от boowai

Ставлю.

можно внутри запустить dnsmasq, он на себя возьмёт dhcp и dns

А можно только DNS?

Если нет, то может ли он привязать IP к MAC-адресам?

Будут ли раздаваемые им имена видны с хоста?

olegd ★★ ()
Последнее исправление: olegd (всего исправлений: 1)
Ответ на: комментарий от olegd

VMware своими средствами так не умеет делать?

Да вроде раньше не умела, простой проброс к существующему ns (но может и научилась уже, не знаю, давно не пользовал). Но вопрос скорее в этом: Вам вообще зачем такое надо? Варя со своего dhcp раздает адреса виртуалкам за nat, может если есть необходимость как-то бриджем решить?

anc ★★★★★ ()
Ответ на: комментарий от anc

Вам вообще зачем такое надо?

В одной из виртуалок стоит кривая и глючная программа, которая не может использовать IP-адреса. Только имена.

olegd ★★ ()
Ответ на: комментарий от olegd

Можно только DNS, но регистрироваться клиенты должны тогда сами, и они даже не будут знать о его существовании, т.к. dhcp на него не укажет.

Привязку к MAC почти любой DHCP сервер умеет.

С той стороны NAT внутрь запросы не пройдут.

boowai ★★★★ ()
Ответ на: комментарий от boowai

Есть ещё ненавистный zeroconf.

Если тебе имена не важны, то можно их сгенерировать и засунуть в hosts. Или скормить любому DNS-серверу и настроить DHCP виртуалки на него, или скормить внешнему DNS-серверу и настроить DNS-прокси виртуалки на него.

boowai ★★★★ ()
Ответ на: комментарий от olegd

Кажется не совсем правильно понял

В одной из виртуалок стоит кривая и глючная программа, которая не может использовать IP-адреса. Только имена.
nslookup 192.168.56.131

Не сходиться.

Ей PTR клиента что ли нужно? Или только имя сервера типа hostname.lan?
чуть больше золота плиз

anc ★★★★★ ()
Последнее исправление: anc (всего исправлений: 1)
Ответ на: комментарий от anc

Ей PTR клиента что ли нужно? Или только имя сервера типа hostname.lan?
чуть больше золота плиз

Не совсем понимаю, что такое PTR. Голое имя хоста без домена? Тогда нет. Имена годятся в виде hostname.domain.ru:port и не работают в виде hostname:port .

olegd ★★ ()
Последнее исправление: olegd (всего исправлений: 1)
Ответ на: комментарий от olegd

Не совсем понимаю, что такое PTR

Получение по IP имени. Чаще используется в почтовых системах.

Прямая A наоборот, по имени получить IP. В целом это «два разных человека».

Например прямая:

$ host google.com
google.com has address 173.194.122.135
google.com has address 173.194.122.128
google.com has address 173.194.122.130
google.com has address 173.194.122.136
google.com has address 173.194.122.133
google.com has address 173.194.122.137
google.com has address 173.194.122.131
google.com has address 173.194.122.134
google.com has address 173.194.122.129
google.com has address 173.194.122.142
google.com has address 173.194.122.132
google.com has IPv6 address 2a00:1450:4011:809::1001
google.com mail is handled by 30 alt2.aspmx.l.google.com.
google.com mail is handled by 40 alt3.aspmx.l.google.com.
google.com mail is handled by 50 alt4.aspmx.l.google.com.
google.com mail is handled by 10 aspmx.l.google.com.
google.com mail is handled by 20 alt1.aspmx.l.google.com.

и для примера берем первый IP 173.194.122.135 для получения обратной PTR
$ host 173.194.122.135
Host 135.122.194.173.in-addr.arpa. not found: 3(NXDOMAIN)

Как видим, прямая запись есть а обратной нет. Но гугля же не упала :)

anc ★★★★★ ()
Ответ на: комментарий от olegd

Имена годятся в виде hostname.domain.ru:port и не работают в виде hostname:port

По существу. Как понял я, у вас на хосте работает vmware и в ней в занатной сети 192.168.56.0 (/24 ?) много виртуальных машин, среди которых есть сервер 192.168.56.131 и к нему остальным клиентам из этой сети (192.168.56.0) надо обращаться по hostname а не по ip. Все верно?

anc ★★★★★ ()
Ответ на: комментарий от olegd

Имена годятся в виде hostname.domain.ru:port и не работают в виде hostname:port

Потому и прописывайте в hosts:

1.2.3.4    host.domain host
Именно в такой последовательности.

vodz ★★★★★ ()
Ответ на: комментарий от anc

По существу. Как понял я, у вас на хосте работает vmware и в ней в занатной сети 192.168.56.0 (/24 ?) много виртуальных машин, среди которых есть сервер 192.168.56.131 и к нему остальным клиентам из этой сети (192.168.56.0) надо обращаться по hostname а не по ip. Все верно?

Почти. Часть из этих машин — под Windows. И для них прописать в etc/hosts не помогло.

olegd ★★ ()
Ответ на: комментарий от vodz

Потому и прописывайте в hosts:

1.2.3.4 host.domain host
Именно в такой последовательности.

Спасибо, на линуксовом сервере сработало. Остаётся актуальным вопрос, как раздавать это имя виндовым машинам.

zeroconf и nslookup смогу попробовать только завтра.

olegd ★★ ()
Последнее исправление: olegd (всего исправлений: 1)
Ответ на: комментарий от olegd

Часть из этих машин — под Windows. И для них прописать в etc/hosts не помогло.

Ну на винде это где-то глубоко зарыто, а не /etc/hosts причем емнип там проблема с правами, не дает поменять просто так.

anc ★★★★★ ()
Ответ на: комментарий от anc

Повторюсь. Еще вариант. Варя вроде берет dns от хоста, т.е. на хосте поднять нужную зону и т.д. т.п. Но это пальцем в небо. Саму варю давно не видел. Да и говорят она под онтопиком совсем никакая давно стала. Может конечно и врут.

anc ★★★★★ ()
Ответ на: комментарий от anonymous

доо %SystemRoot%\system32\drivers\etc\hosts так сложно изменить ппц (нет)

Вы зачем мне этот вопрос задали? Нет у меня офтопика что бы проверить.

anc ★★★★★ ()
Последнее исправление: anc (всего исправлений: 1)
Ответ на: комментарий от anc

Да и говорят она под онтопиком совсем никакая давно стала. Может конечно и врут.

Бесплатный плеер урезан по сравнению с оффтопичным. Платные программы на одном уровне, что пробовал.

olegd ★★ ()
Ответ на: комментарий от olegd

В смысле прописали все тоже самое как и на онтопике и прога не работает ? (не забудьте в конце ставить перевод строки)

anc ★★★★★ ()
Ответ на: комментарий от olegd

А точно точно прописали как в настройках проги ? Типа в ней
host.domain.tld
в hosts
192.168.56.131 host.domain.tld
А то похоже на мистику. И еще нюанс так прога кроссплатформенная получаеться?

anc ★★★★★ ()
Ответ на: комментарий от anc

А точно точно прописали как в настройках проги ? Типа в ней host.domain.tld
в hosts
192.168.56.131 host.domain.tld

Пробовал и «192.168.56.131 host.domain.tld», и «192.168.56.131 host.domain.tld host», и «192.168.56.131 host». Проблема в том, что под Windows нужное имя не видел даже nslookup. Перезагрузка не помогала :)

И еще нюанс так прога кроссплатформенная получаеться?

Там несколько программ, включая ngnix и PostgreSQL. Та, которой требовалось имя — виндовая. Я её планировал запускать на виндовой виртуальной машине, чтобы Вайн не добавлял глюков. Но до этого дело не дошло, так как система не проходила проверку nslookup-ом.

До установки серверов dnsmasq, zeroconf и т.п. руки не дошли, так как мне выделили реальные машины с именами.

olegd ★★ ()
Ответ на: комментарий от olegd

нужное имя не видел даже nslookup

И не «увидит» он запрашивает ns сервер, hosts тут не причем. Попробуйте например ping host.domain.tld

Но до этого дело не дошло, так как система не проходила проверку nslookup-ом.

В этом ваша ошибка, см. выше.

anc ★★★★★ ()
Ответ на: комментарий от anc

Спасибо.

ping 192.168.56.131, ping ngserver.domain.ru, и ping ngserver работают. То же с curl. Проблемная программа нормально отработала с 192.168.56.131 и с ngserver, но отказалась работать с ngserver.domain.ru, хотя согласно её документации всё должно быть строго наоборот.

olegd ★★ ()
Последнее исправление: olegd (всего исправлений: 1)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.