Windows
hosts
squid
proxy
centos7

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

追記 [ 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で正常動作しているのに・・・
調べてはいるのですが、なかなか出てこないです。
(知っている方ご教示ください!)
もしかしたら他に原因があったのかもしれませんが、同じようなことで詰まっている方は参考にしてみては?

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

一言

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