Edited at

hostsとタブの落とし穴![Squid]

More than 1 year has passed since last update.


追記 [ 2018-09-13 ]


結論

squid使用時にhostsの行頭にブランク入れるな

(@n-soda さん調べ)


一応念のためと思って squid のソースを読んでみたら、

なんと squid は libc を使わず独自に /etc/hosts を parse していて、

そこでは行頭にスペースやタブがあると、アドレスが書いてないものとみなされてしまうコードになっていました。

この辺です:

https://github.com/squid-cache/squid/blob/d429cbd0e4d86d4af54ed50e499da14039ff7429/src/tools.cc#L954

これはビックリ。

というわけで、行頭のスペースないしTABが squid 限定で犯人でした。



環境


追加調査


  • スペース・タブ -> NG

  • 改行コードCRLF -> OK


hostsファイル設定していたら詰まった話

 この前かかわった案件で、大量のhostsを設定する必要があってhostsファイルの内容を修正してローカル環境にアクセスしていた時に起きました。


落とし穴「その①」Windowsのhostsファイルはこう書きました。


hosts

    127.0.0.1  example.com

127.0.0.1 hoge.example.com

上記で当然動きますよね。

よっしゃ、じゃあWindowsにプロキシ立ててローカル環境にアクセスしたろ!

ってことでCentOS7にてプロキシサーバーを設定。接続してみると・・・つながらない!!


落とし穴「その②」CentOS7のhostsファイルもこう書きました。


hosts

    127.0.0.1  example.com

127.0.0.1 hoge.example.com

iPadで何度もローカル環境に接続してもつながらない!!

なんで!?こんな簡単な構築なのに!!ってパニックに陥ってました。

色々調べてもプロキシサーバーの設定に間違いはない(完全にここばかり調べていました。)

ログやらなんやら見ていると・・・名前解決できていないのかとなりまして、hostsか!!

とりあえずいろいろな書き方を試していたら解決しました。


正解


hosts

127.0.0.1  example.com

127.0.0.1 hoge.example.com

タブだめなのか

Windowsのhostsファイルをコピペで流用していたものですから名前解決できずにずっと怒られていました。


結局

ぶっちゃけタブの何がダメなのかわからない。

Linuxの設定は左詰めが基本的なことは設定ファイルを見まくった結果雰囲気でわかりましたが、そういう規約でもあるのですかね?

Windowsで正常動作しているのに・・・

調べてはいるのですが、なかなか出てこないです。

(知っている方ご教示ください!)

もしかしたら他に原因があったのかもしれませんが、同じようなことで詰まっている方は参考にしてみては?

コピペマン、ダメ。絶対。


一言

完全にプロキシサーバーに注目しすぎて名前解決に注目できなかったところに猛省。

そもそもエラーに書いてあったし・・・