Raspberry PiでSquid SSL Bump
初めに
Aimingが気に入らない記事は消されるらしいっすよ.
ライジングとエイティングが好きです, エイエムアイはもっと好きです.
いろいろ試行錯誤した結果をノートするだけです. 忘備録, 及び防備録警察でもあります.
私の環境ではWebアクセス, ブラウジングが遅すぎてどうにかできないかなと試した記録です.
キャッシュサーバが間にあれば, ましになるんじゃね? という発想です.
ハードウェア
ROC-RK3328-CCを使います. Raspberry Pi 3B+で試作したのですがROC-RK3328-CCの方で苦労しました.
タイトル?? 詐欺よ, 引っかかっただろ? ムカついた人はそっ閉じしたらいいよ.
Raspberry Pi 3B+はギガビット詐欺なので, 試作してみていけそうなので, ちゃんとギガビットなつよつよハードウェアを用意してみました.
Squidのビルド
aptのソースリポジトリ
レポジトリの方が元の発音に近いって? だったら全てアメリカ語で会話してください.
次のファイルにソースリポジトリを追加, raspbianでもarmbianでも同じと思われる.
/etc/apt/sources.list
依存ライブラリ
情報元を失念.
$sudo apt install devscripts build-essential fakeroot libssl-dev
$sudo apt install libldap2-dev libpam0g-dev libdb-dev cdbs libsasl2-dev
$sudo apt install debhelper libcppunit-dev libkrb5-dev comerr-dev
$sudo apt install libcap-dev libecap3-dev libexpat1-dev libxml2-dev
$sudo apt install libnetfilter-conntrack-dev nettle-dev libgnutls28-dev libltdl-dev ed
ビルド
$sudo apt source squid3
DEB_CONFIGURE_EXTRA_FLAGSにビルドオプションを追加する.
$vim debian/rules
DEB_CONFIGURE_EXTRA_FLAGS
…
--with-large-files \
--with-openssl \
--enable-ssl \
--enable-ssl-crtd \
--with-default-user=proxy
ビルドする.
$./configure
$sudo debuild -us -uc -b
おそらく, パッケージ足りないとエラーが出るので, 都度対応する.
インストール
親ディレクトリに作成された, *.debファイルをインストールする.
$sudo dpkg -i squid*.deb
依存パッケージがない場合はエラーになるため, 解決する.
$sudo apt --fix-broken install
$sudo dpkg -i squid*.deb
動作テスト
とりあえず動かしてみましょう. raspbian, armbianともにsystemdでしょうから,
$systemctl start squid
$systemctl status squid
SSL証明書
raspbianやarmbianのopenssl.cnfは素のままらしく, 詳しく理解していないとうまく作成できない.
てきとうにCentOSなどでオレオレ証明書を作成する.
証明書の保存ディレクトリは特別なコマンドで作成するらしい.
sudo /usr/lib/squid/security_file_certgen -c -s /var/spool/squid/ssl_db -M 4MB
オレオレ証明書と秘密鍵はsquidのディレクトリに入れよう.
/etc/squid/squidCA.crt
/etc/squid/squidCA.key
オレオレ証明書はアクセスしたいコンピュータやブラウザにいれようね.
キャッシュ用SSD
キャッシュ&ロギング用のストレージを用意する. フラッシュディスクはすぐに壊れるからね, しかたないね.
てきとうにUSB3.0対応のモバイルSSDを購入, これが仇となる.
パーティションとフォーマット
fdiskとmkfsでext4の領域を作成したけれど, squidの起動で"xhci_hcd"がエラーをはいている.
partedとxfsとか試したりいろいろしたけれど, "xhci_hcd"がエラーでだめらしい.
ROC-RK3328-CCパイセンのUSB3.0は諦めて, USB2.0にディスクつなぐ.
あっさりうまくいく, なんでや!!
Squidの設定
正直, ぜんぜん理解していない. /etc/squid/squid.confである.
SSL Bumpが必要ない方(Gなんとかパイセンのおかげで許されないんだ)は, ssl-bumpの設定を削除するといい.
ディスクキャッシュはある程度余裕を持った方がいいらしい, 500GiBのSSDを用意したので300GiB程度割り当てました.
acl localnet src 0.0.0.1-0.255.255.255 # RFC 1122 "this" network (LAN)
acl localnet src 10.0.0.0/8 # RFC 1918 local private network (LAN)
acl localnet src 100.64.0.0/10 # RFC 6598 shared address space (CGN)
acl localnet src 169.254.0.0/16 # RFC 3927 link-local (directly plugged) machines
acl localnet src 172.16.0.0/12 # RFC 1918 local private network (LAN)
acl localnet src 192.168.0.0/16 # RFC 1918 local private network (LAN)
acl localnet src fc00::/7 # RFC 4193 local private network range
acl localnet src fe80::/10 # RFC 4291 link-local (directly plugged) machines
acl SSL_ports port 443
acl Safe_ports port 80 # http
acl Safe_ports port 21 # ftp
acl Safe_ports port 443 # https
acl Safe_ports port 70 # gopher
acl Safe_ports port 210 # wais
acl Safe_ports port 1025-65535 # unregistered ports
acl Safe_ports port 280 # http-mgmt
acl Safe_ports port 488 # gss-http
acl Safe_ports port 591 # filemaker
acl Safe_ports port 777 # multiling http
acl CONNECT method CONNECT
http_access deny !Safe_ports
http_access deny CONNECT !SSL_ports
http_access allow localhost manager
http_access deny manager
http_access allow localnet
http_access allow localhost
http_access deny all
http_port 3128 ssl-bump \
tls-cert=/etc/squid/squidCA.crt \
tls-key=/etc/squid/squidCA.key \
generate-host-certificates=on dynamic_cert_mem_cache_size=4MB
acl step1 at_step SslBump1
ssl_bump peek step1
ssl_bump bump all
cache_dir ufs /mnt/hdd1/spool/squid/ 307200 16 256
coredump_dir /mnt/hdd1/spool/squid
cache_mem 256 MB
cache_swap_low 90
cache_swap_high 95
maximum_object_size 4 GB
minimum_object_size 0 KB
maximum_object_size_in_memory 128 MB
ipcache_size 2048
ipcache_low 90
ipcache_high 95
refresh_pattern ^ftp: 1440 80% 43200
refresh_pattern ^gopher: 1440 0% 1440
refresh_pattern -i (/cgi-bin/|\?) 0 0% 0
refresh_pattern -i play.google.com/.* 1440 90% 259200
refresh_pattern -i \.(html|htm|css|js)$ 1440 40% 43200
refresh_pattern -i \.(jpeg|jpg|png|gif|bmp|tiff)$ 1440 90% 43200
refresh_pattern -i \.(mp4|mpeg|wmv|webm|avi|mkv|mpg)$ 1440 90% 259200
refresh_pattern -i \.(mp3|wmv|aac|m4a)$ 1440 90% 259200
refresh_pattern -i \.(iso|zip|lzh|exe|tar|gz|rar|7z|pdf|ppt|doc|rpm|deb)$ 1440 90% 259200
refresh_pattern . 0 40% 4320
request_header_access X-Forwarded-For deny all
request_header_access Via deny all
request_header_access Cache-Control deny all
reply_header_access X-Forwarded-For deny all
reply_header_access Via deny all
reply_header_access Cache-Control deny all
forwarded_for off
httpd_suppress_version_string on
logfile_rotate 10
logformat custom %{%Y/%m/%d %H:%M:%S}tl %6tr %Ss%03>Hs %<st %rm %ru %[un %Sh/%<a %mt
access_log /mnt/hdd1/log/squid/access.log custom
cache_log /mnt/hdd1/log/squid/cache.log
cache_store_log /mnt/hdd1/log/squid/store.log
coredump_dir /mnt/hdd1/log/squid/core
特定ドメインをスルーしたい場合.
acl BrokenButTrustedServers dstdomain example.com
sslproxy_cert_error allow BrokenButTrustedServers
sslproxy_cert_error deny all
結果
体感では爆速になったのですが, access.logを監視した感じだと大してキャッシュヒットしていない気がします. 名前解決の必要がなくなるから? それにしても体感は速くなった. これならQiitaの閲覧エロサイトの閲覧が捗りますね.
趣味なので, しっかりと計測する気がないです. う↑え↑はaccess.log, し↓た↓はhtopです.
まとめ
いかがだったでしょうか? は大嫌い.
私は独り身ですが, ご家庭にキャッシュサーバは必須なのでは? と思いました. これはもうギガの節約になりますね.
USB3.0のドライバが安定しないとは言いませんが, ドライバ関連の相性問題はあるなと痛感しました.
コア単位で制御していると思っていましたが, CPU単位なのですね, 興味深いです.
追記
2019/12/06
Windows Updateができないという嬉しい誤算があったのですが, Windowsのプロキシ設定でプロキシ経由から外せばいけました.
*.download.windowsupdate.com;*.download.windowsupdate.com;*.download.microsoft.com;*.update.microsoft.com;*.windowsupdate.com;*.windowsupdate.microsoft.com;*.ntservicepack.microsoft.com;*.wustat.windows.com;*.download.windowsupdate.com;*.au.windowsupdate.com;*.tlu.dl.delivery.mp.microsoft.com
本当は, Squidの設定でなんとかしたかったのですが上手くいかなかったのです.
2019/12/07
Steamも追加しておく.
*.steampowered.com;*.steamcommunity.com;*.steamgames.com;*.steamusercontent.com;*.steamcontent.com;*.steamstatic.com;*.akamaihd.net
2020/05/31
Raspberry Pi 4に更新, 特に問題ないかな.
SDメモリーカードの寿命を延ばすためにいろいろ考えました.
- スワップは削除.
sudo apt remove dphys-swapfile
/tmp
,/var/tmp
,/var/log
をRAMに移動.squidのログローテーション
設定を追加, squid.confにlogfile_rotate 10
を追加しないと, squid -k rotate
を実行してもログがローテーションされない.
logfile_rotate
を追加して, cronに追加しました.
Author And Source
この問題について(Raspberry PiでSquid SSL Bump), 我々は、より多くの情報をここで見つけました https://qiita.com/taqu/items/f5ae1a3a556981f6584d著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .