Назад | Перейти на главную страницу

Не могу заставить файл hosts работать на моем сервере Linux

У меня Ubuntu 11.10 работает на VirtualBox, и я настроил виртуальный именованный сервер.
Я могу получить доступ к этому сайту из Windows 7, но я не могу получить доступ к сайту из Ubuntu.

Мой файл HOSTS находится в /etc/ папка и выглядит так:

127.0.0.1       localhost
127.0.1.1       ubuntu-VirtualBox
192.168.0.97     mysite.com

Но всякий раз, когда я пытаюсь получить доступ к mysite.com с сервера, меня перенаправляют на сайт с сообщением, что этот домен продается.

В чем может быть причина того, что файл hosts не работает?

Обновить

Это мое /etc/nsswitch.conf

# /etc/nsswitch.conf
#
# Example configuration of GNU Name Service Switch functionality.
# If you have the `glibc-doc-reference' and `info' packages installed, try:
# `info libc "Name Service Switch"' for information about this file.

passwd:         compat
group:          compat
shadow:         compat

#hosts:          files mdns4_minimal [NOTFOUND=return] dns mdns4
hosts:          files dns
networks:       files

protocols:      db files
services:       db files
ethers:         db files
rpc:            db files

netgroup:       nis

Сначала проверьте правильность nsswitch.conf:

$ grep hosts /etc/nsswitch.conf
hosts:          files dns

Убедитесь, что написано «files dns», иначе он не будет искать в вашем файле hosts перед запросом DNS.

Если это правильно в nsswitch, я раньше видел, что невидимый символ каким-то образом попал в мой файл hosts, из-за чего он выглядел совершенно нормально, но невидимый символ не работал.
Так что попробуйте удалить линию, а затем создать ее снова - вручную, не вставляйте.

Следующее, что вы можете попробовать, это проверить, что он ищет, выполнив ping:

$ ping mysite.com
PING mysite.com (192.168.0.97) 56(84) bytes of data.

Если вы видите правильный IP-адрес, он разрешается правильно, и проблема возникает из-за вашего браузера. Не используйте host, dig или nslookup, они игнорируют / etc / hosts! Используйте команду ping, чтобы разрешить IP-адрес так, как его увидит большинство приложений.

Бегать curl -Iv http://mysite.com

У вас должно получиться что-то вроде (плюс еще несколько строк):

* About to connect() to mysite.com port 80
*   Trying 192.168.0.97... connected
* Connected to mysite.com (192.168.0.97) port 80
> HEAD / HTTP/1.1
> User-Agent: curl/7.15.5 (i686-redhat-linux-gnu) libcurl/7.15.5 OpenSSL/0.9.8b zlib/1.2.3 libidn/0.6.5
> Host: mysite.com
> Accept: */*
>
< HTTP/1.1 200 OK

Собственно, вот мысль: вы попадаете на «mysite.com» или «www.mysite.com»? Если это второе, у вас нет такой записи в вашем файле hosts, и она завершится ошибкой. Если вы собираетесь на «mysite.com», но ваш веб-сервер перенаправляет его на «www.mysite.com», это тоже не сработает.

Обратите внимание на «200 OK» в конце моего выходного фрагмента curl. Если вы получаете, скажем, 301, вы будете перенаправлены в другое место конфигурацией вашего веб-сервера.

Мне пришлось выйти и снова войти после того, как я добавил записи в / etc / hosts

Вы упомянули по имени. Если вы планируете использовать эту службу DNS, это должно быть в вашем resolv.conf файл.

По умолчанию ваши права доступа к файлу "/ etc / hosts" равны 600. Попробуйте эту команду: sudo chmod 644 / и т. д. / хосты