У меня 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 / и т. д. / хосты