Meaningless Notebook

我輩は雑記帖である。名はまだない。


Squid をインスト-ルする18


in

CentOS 7.3 に Squid をインスト-ルする。

最寄の SUSHI BAR へ行かなくちゃ (使命感)。

手順は下記の通り。

  1. Squid をインスト-ル
  2. Squid をセットアップ

1.Squid をインスト-ル

下記コマンドを実行して、インスト-ル。

yum install squid httpd wget

*

httpd は、『proxy.pac』ファイル公開の為にインスト-ルする。

*

wget は、ブロックリスト作成スクリプトで使用する為にインスト-ルする。

2.Squid をセットアップ

1.ブロックリスト作成スクリプトの作成と、ク-ロン設定

『/usr/local/src/blocklist/make_blocklist.sh』を作成する。

#!/bin/bash

PATH=/usr/local/sbin:/usr/bin:/bin

# ルートディレクトリ
ROOT_DIR="/usr/local/src/blocklist"

# 作業ディレクトリ
WORK_DIR="$ROOT_DIR/work"

# ログファイル名
LOG_FILE="make_blocklist.log"

# 作業ディレクトリ削除
rm -rf "$WORK_DIR" &> "$ROOT_DIR/$LOG_FILE"

# 作業ディレクトリ作成
mkdir "$WORK_DIR" &>> "$ROOT_DIR/$LOG_FILE"

# hosts.txt取得
wget "http://warui.intaa.net/adhosts/hosts.txt" -P "$WORK_DIR" &>> "$ROOT_DIR/$LOG_FILE"

# blocklist作成
sed -e '1d' -e 's/0.0.0.0 //' $WORK_DIR/hosts.txt > "$ROOT_DIR/blocklist" 2>> "$ROOT_DIR/$LOG_FILE"

# Squidサービスリロード
systemctl reload squid.service

広告除去ブロックリスト作成には、『悪いインタ-ネット』さんが提供している HOSTS ファイルを使用させてもらった。

*

そのまま使用すると Amazon が表示できなくなるので注意 (めんどくさいので私は、後述する『proxy.pac』で直接アクセスさせるようにした)。

広告除去ブロックリストを正規表現で指定していた為の模様…。

作成したスクリプトを『/etc/crontab』に設定する。

2.設定ファイル修正。

『/etc/squid/squid.conf』を修正する。

13行目付近

# acl localnet src 10.0.0.0/8       # RFC1918 possible internal network
# acl localnet src 172.16.0.0/12    # RFC1918 possible internal network
# acl localnet src 192.168.0.0/16   # RFC1918 possible internal network
# acl localnet src fc00::/7         # RFC 4193 local private network range
# acl localnet src fe80::/10        # RFC 4291 link-local (directly plugged) machines
acl localnet src ネットワークアドレス/サブネットマスク

27行目付近

acl CONNECT method CONNECT

# for Ad
acl blacklist dstdomain "/usr/local/src/blocklist/blocklist"

40行目付近

http_access deny CONNECT !SSL_ports

# for Ad
http_access deny blocklist

3.『proxy.pac』公開

『ドキュメントル-ト/proxy.pac』を作成する。

function FindProxyForURL(url, host){

    var hostip = dnsResolve(host);

    if(isInNet(hostip, "ネットワ-クアドレス", "サブネットマスク") ||
       shExpMatch(url, "プロキシを経由させず、直接アクセスさせたいURLの部分文字列")){

           return "DIRECT";
    }else{

        return "PROXY プロキシサ-バの IPアドレス 又は ホスト名:プロキシサ-バのポ-ト; DIRECT";
    }
}

クライアントからは、自動構成スクリプトに『proxy.pac』を指定する。

プロキシサ-バを経由させず、直接アクセスさせたい場合は『proxy.pac』で設定する。

4.サ-ビスの起動設定

下記コマンドを実行してサ-ビス起動設定。

systemctl start squid.service
systemctl start httpd.service
systemctl enable squid.service
systemctl enable httpd.service

5.パケットフィルタリング設定

下記コマンドを実行して Firewalld 設定。

firewall-cmd --add-port=3128/tcp --permanent
firewall-cmd --add-service=http --permanent
firewall-cmd --reload

作業してると、プロキシ経由で行ってるのか分からなくなってくる時がある。

その場合は『確認くん』とかで確認する。

結構ぐだったから、どっか誤っているかも。

参考元

  1. 悪いインタ-ネット

Amazon