VirtualBoxでUbuntu11.10を実行していて、仮想ネームサーバーをセットアップしました。
Windows 7からこのサイトにアクセスできますが、Ubuntuからサイトにアクセスできません。
私のHOSTSファイルは/etc/
フォルダーにあり、次のようになります。
127.0.0.1 localhost
127.0.1.1 ubuntu-VirtualBox
192.168.0.97 mysite.com
しかし、サーバーからmysite.comにアクセスしようとすると、このドメインが売りに出されているというサイトにリダイレクトされます。
ホストファイルが機能しない原因は何でしょうか?
更新
これは私の/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
「filesdns」と表示されていることを確認してください。表示されていない場合、DNSを要求する前にhostsファイルを検索しません。
Nsswitchで正しい場合は、非表示の文字が何らかの理由でホストファイルに侵入し、完全に正常に見えますが、非表示の文字が機能しなくなったことを以前に確認しました。
そのため、行を削除してから再度作成してみてください。手動で貼り付けないでください。
次に試すことができるのは、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」にアクセスしようとしているが、Webサーバーがそれを「www.mysite.com」にリダイレクトしている場合、それも失敗します。
カール出力スニペットの最後にある「200OK」に注意してください。たとえば、301を取得している場合は、Webサーバーの構成によって別の場所にリダイレクトされています。
/ etc/hostsにエントリを追加した後、ログアウトして再度ログインする必要がありました
デフォルトでは、ファイル「/ etc/hosts」のファイルパーミッションは600です。次のコマンドを試してください:Sudo chmod 644/etc/hosts
名前付きとおっしゃいましたね。そのDNSサービスを使用する予定の場合は、resolv.conf
ファイルに含める必要があります。