/etc/hosts には、127.0.0.1 localhost とあり、
また、/etc/nsswitch.conf には、hosts: files dns
とあります。
どこがおかしいいのでしょうか??
http://www.linux.or.jp/JM/html/LDP_man-pages/man5/resolv.conf.5....
dig, nslookup は resolv.conf で server に指定してあるサーバーに問い合わせるコマンドです。
localhost という問い合わせにどのように返答するかは指定してあるサーバーしだいです。
ただ、実際にはほとんどのアプリケーションは nsswitch.conf に files が指定してあるので /etc/hosts ファイルを先に見ます。
確認するには以下のコマンド等が分かりやすいでしょう。
http://www.linux.or.jp/JM/html/netkit/man8/ping.8.html
ping -c 10 localhost
このため、DNS が localhost に対して返答しなくてもほとんどの場合困りません。
dig って、名前解決をするツールというよりは DNS の分析ツールなので、/etc/hosts は見てくれないと思います。
/etc/resolv.conf はどうなっていますか。
dig の結果のうち ";; SERVER: " という部分はどうなっていますか。
そこが外部になっているのであれば、その DNS サーバから見た "localhost" の IP アドレスが返るのは仕方ないのでしょう。
どうにかして dig localhost が 127.0.0.1 になるようにしたいのであれば、自前で DNS サーバを立てる (そして resolv.conf に指定する) ことになるのではないかと思います。