LoginSignup
22
23

More than 5 years have passed since last update.

Centos7でsquidを立てる

Posted at

外部サーバにプロキシを立てる必要に迫られたのでメモ。

まとめ

  • squidでプロキシサーバを立ち上げ、そこ経由でWebにアクセスできる
    • 内部ネットではなく、外部ネットから見たときの挙動確認とかに便利
  • yumで5~10分程度で構築できる
  • Cenos7だとiptablesではなくfirewalldを使うのが主流(?)

インストール

yumで入ります。
yum -y install squid

設定変更

適度に自分の環境に合わせて設定します。
emacs /etc/squid/squid.conf

# デフォルトはほとんどいじらないので省略

# アクセスを許可したいアドレス
# デフォルトでプライベートアドレスはA~Cまで許可済み
# 今回は外部のサーバにWebプロキシを立てるので書く
acl allowadress src x.x.x.x/255.255.255.255
http_access allow allowadress
http_access deny all

# 匿名性をあげる設定
forwarded_for off
request_header_access X-Forwarded-For deny all
request_header_access Via deny all
request_header_access Cache-Control deny all

# Refererを切ると一部のサイトではおかしくなったりするので、
# 匿名プロキシじゃないと困る場合以外は設定しない方が良い
# request_header_access Referer deny all

# サーバのホストネームを入れる
visible_hostname example.com

# ポートを変更(デフォルトは3128)
http_port 12345

# キャッシュさせたくないのでOFF
no_cache deny all

squid起動

service squid start

firewall-cmdの設定

このままだと外部からアクセスできないので、アクセスできるように設定します。
また、Squidが動いていることを知らせない方がより安全なので、指定したアドレスからのみアクセスできるようにします。

firewall-cmd --permanent --zone=public --add-rich-rule="rule family="ipv4" source address="x.x.x.x" port protocol="tcp" port="12345" accept"
firewall-cmd --reload

その他

以上の手順により、プロキシを使ってアクセスできると思いますが、
うまくいかない場合は以下のように調べると良いと思います。

  • サーバ上でSquidのポートにcurlでアクセス
    • アクセスできなければSquidが動いてない
  • アクセスできたら手元でSquidサーバのポートにcurlでアクセス
    • アクセスできなければポートが開放されていない
  • アクセスできているなら手元のマシンのプロキシ設定がおかしい

また、Webは見られるがたまに特定サイトでSquidのエラー画面が出てくる場合、上記のvisible_hostnameの設定を正しくすることで解決しましたが、確定ではないです。

22
23
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
22
23