squid3プロキシサーバの設定(Ubuntu13.10)

Ubuntu13.10でsquid3パッケージが提供されており、パッケージ名からコマンドまですべてsquid3になっています。
(たしかそれなりに前からこうであったはず。)


Ubuntuのネットワーク設定とプロキシ設定

インストールは以下のコマンドを打つだけです。
sudo apt-get install squid3 -y

インストール後、プロキシ設定を行っていきます。

設定ファイルの書き換え

私の場合、主に以下の設定を変更しています。
設定ファイルを書き換える際、すべて読むには長すぎるため、検索を使うべきです。
設定ファイル中の設定名で検索をかけて、行を追記または書き換えています。

テキストエディタとしてvimが使えない場合、デスクトップ環境ではgeditが使用できます。
sudo gedit /etc/squid3/squid3.conf


プロキシのポート番号を変える

デフォルト設定:
http_port 3128
変更例:
http_port 58080

ポート番号の変更は、攻撃に対する対応として、念のためにデフォルトから変更しておきます。実際にはたいした効果はないと思いますが。
一応、ポート番号は50000番代から先が自由に使用可能となっているので、50000番以降のポート番号に変更しています。

メモリ上のキャッシュ総量を増やす

デフォルト設定
# cache_mem 256 MB
変更例
cache_mem 2048 MB
 キャッシュがメモリ上にあったほうが、高速にウェブを閲覧することができます。
単純な方法として、メモリキャッシュのサイズを増やします。
私はいつも、以下の行を追記して設定を変更しています。

メモリにキャッシュするファイルのサイズ上限を増やす

デフォルト設定
# maximum_object_size_in_memory 512 KB
変更例
maximum_object_size_in_memory 2048 KB
 大きなファイルをメモリキャッシュしてメモリをすぐに使い果たすことを防ぐために、メモリキャッシュするファイルにはサイズ上限が設定されています。
画像ファイルなどがメモリキャッシュされるように、サイズを増やしておきます。

キャッシュディレクトリのパスとキャッシュサイズを変更する

デフォルト設定
#cache_dir ufs /var/spool/squid3 100 16 256
変更例
cache_dir ufs /raid0_array/squid_cache 40960 16 256

キャッシュディレクトリにはいくつかの設定項目がありますが、主に変更するのは、パスとキャッシュサイズです。

パスはデフォルト設定のままでも構いません。
ただし、SSDを使用していて、頻繁に読み書きされそうなプロキシキャッシュを置きたくない場合や、キャッシュファイルを置く空き容量の余裕がない場合には、パスの変更が効果的です。
私の環境ではRAID0アレイを構築してあります。キャッシュを置く領域は広くて早いほうが良いので、RAID0アレイ上のディレクトリをキャッシュに使用するようにパスを変更しています。

キャッシュサイズはMB単位で、デフォルトでは100MBしか用意されていません。
ディスクの空き容量を見ながら、できるだけ大きなキャッシュサイズを指定します。

キャッシュ対象にするファイルの最大サイズを増やす

デフォルト設定
# maximum_object_size 4 MB

変更例


maximum_object_size 64 MB

大きなファイルほど、キャッシュがヒットした時に大きな効果を得ることができます。
一方で、HDD領域の使用量も増えることになります。

大きなzipファイルやインストーラなどは通常、一回きりしかダウンロードしないため、キャッシュするのは無駄になります。
一度しかダウンロードしないであろうファイルタイプについては、キャッシュルールの変更で対応します。

キャッシュルールの変更


 デフォルト設定
#refresh_pattern (\.deb|\.udeb)$   129600 100% 129600
変更例
refresh_pattern (\.deb|\.udeb)$   129600 100% 129600

Ubuntuのsquid設定ファイルには、キャッシュルールのサンプルとして、debパッケージのキャッシュルールが記述されているため、コメントアウト(#)を外してキャッシュルールを有効化しておきます。
私の場合、仮想マシンゲストを運用することが多いため、.debパッケージファイルをキャッシュすることには十分に意味があります。通常の環境では、debパッケージを使用するのは一回きりになるので意味はありません。
また、APTパッケージマネージャが独自にキャッシュを持っているので、再インストールが多い場合にもsquid側でキャッシュする意味はありません。

設定の反映

squidデーモンの一時停止

 次のキャッシュディレクトリを作成コマンドは、squidが停止している時しか実行できないようになっています。
sudo service squid3 stop

設定ファイルをチェックする

変更した設定ファイルをsquidが読み込めるかどうか、設定ファイルの記述ミスをチェックすることができます。
squid3 -k parse
squid3になってから出力が増えましたが、基本的にはERROR行が出ていなければOKです。
 

キャッシュディレクトリの作成

キャッシュディレクトリのパスをデフォルト設定から変更した場合、キャッシュディレクトリを新たに作成する必要があります。
事前にmkdirなどで、ディレクトリを作成しておきます。
(設定ファイルに指定したパスまでは、ユーザがあらかじめ用意しておく必要があります。)
sudo mkdir -p /myraid0_array/squid_cache
キャッシュディレクトリをsquidに作成させます。
sudo squid3 -z
キャッシュディレクトリ(16x256個のネストしたディレクトリ構造と適切なパーミッション)を、squidが自動生成します。

Ubuntu13.10でプロンプトが帰ってこないように見えますが、コマンドは成功終了しています。(エンターキー押下などで確認できます)

Ubuntuのプロキシ設定

Ubuntuにプロキシ設定します。
「システム設定」から「ネットワーク」の「ネットワークプロキシ」を選択します。
「メソッド(M)」を「なし」から「手動」に切り替えます。
プロキシのURL(orアドレス)とポート番号の入力画面が出るので、URLに"localhost"、 ポート番号にはsquid設定ファイルの http_port で指定したポート番号を入力します。
最後に「システム全体に適用」するをクリックすれば、プロキシ設定がUbuntu上に反映されます。
(ただしAPTパッケージマネージャとGitクライアントには個別にプロキシ設定をする必要がある場合があります。)

Ubuntuのプロキシ設定

プロキシ設定の反映を確かめたければ、squidを立ち上げていない状態で、FireFoxなどでウェブブラウズできないことを確認すれば良いと思います。

squidデーモンの再起動

squidデーモンを起動します。
sudo service squid3 start

ウェブブラウズできるようになっていれば、設定成功です。



追加設定

広告ブロックの追加





設定ファイルの1060行あたり、 "http_access deny all"と書いてある箇所が、アクセス制御ルールの記述箇所です。

追加のルールは、以下の、コメントアウトされていない有効な deny all ルールより前に書きます。
# And finally deny all other access to this proxy
http_access deny all


以下はサンプルです。
(2013年現在で以下のブロックルールは(niconicoの広告URLが変わったためか)有効ではないので、あくまで記述例です。)

#(他の設定で接続が通ってしまうかもしれないのでブロックの記述は"http_access deny all"よりできるだけ上に書く)
#ニコニコ時報ブロック(2011.05.12変更)#from http://blog.nezweb.net/archives/118acl nicojihou url_regex -i ^http://.*nicovideo\.jp/.+marquee.*
acl nicojihou url_regex -i ^http://.*nicovideo\.jp/.+rotation.*
acl nicojihou url_regex -i ^http://.*nimg\.jp/.+marquee.*
acl nicojihou url_regex -i ^http://ad\.nicovideo\.jp/server/get\?.*
acl nicojihou url_regex -i ^http://api\.nicodic\.jp/.+
#ニコニコ時報ブロック
http_access deny nicojihou


#ニコニコ広告ブロック
#コメント部の広告が消えるらしい #http://ad.nicovideo.jp/
acl nicoad url_regex -i ^http://ad.nicovideo.jp/.*
#広告が(右上ごと)消えるはず #http://ads.nicovideo.jp/
acl nicoad url_regex -i ^http://ads.nicovideo.jp/.*
#画面の下のほうの画像を消します。
acl nicoad url_regex -i ^http://res.nimg.jp/img/base/foot/.*
#一部広告を消します。あまり効果はありません。
acl nicoad url_regex -i ^http://res.nimg.jp/img/ads/.*

http_access deny nicoad


ファイルキャッシュルールの変更

設定ファイルの4080行あたり、"refresh_pattern"と書いてある箇所がファイルキャッシュルールの記述箇所です。
(「^ftp」で検索すると一発でヒットします。)

設定の変更は、設定ファイル中の以下の記述、
#Suggested default:
refresh_pattern ^ftp:        1440    20%    10080

の下に追記することで行います。

以下はサンプルです。(適切に改行を消して使用してください。)


#画像ファイルと動画ファイルの保存時間を延長(仮)
#43200=30daysrefresh_pattern -i \.(gif|png|jpg|jpeg|ico)$ 10080 90% 43200  ignore-no-cache  ignore-private
refresh_pattern -i \.(iso|avi|wav|mp3|mp4|mpeg|swf|flv|x-flv)$ 43200 99% 432000  ignore-no-cache  ignore-private


#圧縮ファイルのキャッシュルール(短めに設定)
refresh_pattern -i \.(zip|rar)$ 10 2% 10  ignore-no-cache  ignore-private

#ニコニコキャッシュ用
#サムネイルと動画をキャッシュする(サムネ:smile?i= , 動画:smile?v=)
#最低保存期間14日、最長90日
refresh_pattern -i \.(smilevideo|nicovideo)\.jp\/(smile|watch) 26160 99% 129600  ignore-no-cache ignore-no-store ignore-private



問題が発生した場合などのTIPS

APTについて

デスクトップ環境では、システムのプロキシ設定をしていればAPTパッケージマネージャもプロキシ経由の接続を使用します。
Squidを停止して"apt-get update"を実行し、「W: http://archive.canonical.com/dists/saucy/Release.gpg の取得に失敗しました  localhost:58080 へ接続できません:」などとエラーを返すのを見ることで確認することができます。
デスクトップのないサーバ環境などの場合、apt-getコマンドをProxy経由で使用する方法にしたがって設定を行います。

VirtualBoxについて

NAT接続しているVirtualBoxゲストは、ホストのプロキシ設定を無視して、プロキシを経由せずネットワークに接続します。
(VirtualBoxアプリケーション側にあるプロキシ設定(「ファイル→環境設定→プロキシー」)は、VirtualBoxが自身のアップデートを確認するためのネットワーク接続に使用するプロキシの設定なのだそうです。)
プロキシを経由させる方法はいろいろとあるのですが、ホスト側でSquidの設定を書き換える必要もあると思われるため、検証と説明はいずれ。


Gitについて

Gitはホストのプロキシ設定を無視して、プロキシを経由せずネットワークに接続します。
プロキシ経由でGitを使用する場合、問題が発生するため、httpを使うかネットワーク接続を操作するアプリケーションを導入するとのことですが、今のところGitが使えなくなってはいないので、こちらも後回しにしています。

問題発生時

問題:何か問題が発生しました
対策:squidの使用を停止しましょう
冗談はともかく。

問題:画像サイトで表示される画像が壊れている。リロードしても解決しない
対策:壊れたsquidキャッシュをクリアしましょう。
Squidを停止
sudo service squid3 stop
キャッシュディレクトリを削除(キャッシュディレクトリのパスは適宜読み替える)
sudo  rm -rf /var/spool/squid/*
キャッシュディレクトリを再構成
sudo squid3 -z
Squidを再起動

sudo service squid3 start

問題:ウェブブラウズができない。Squidが原因かどうか知りたい
対策:FireFoxでプロキシを通さずウェブブラウズしてみてください
ツールバーから「編集」→「設定」を選択。
「詳細」の「ネットワーク」タブにプロキシを設定するための項目がある。
「接続設定(E)」のダイアログにて、「プロキシを使用しない(Y)」に設定変更
これでFireFoxからプロキシを通さずにWebページが見られるようであれば、Squidが原因。

なお、Squidが異常動作をする原因としては、キャッシュディレクトリが設定上限サイズまたはディスクの空き容量を使い切った場合が考えられるので、上記のキャッシュクリアの手順を行うと解決する場合がある。

GIMP2.8で星空を描く(応用編) -クオリティを上げる効果の追加-

基礎編「 GIMP2.8で星空を描く(基礎編) -偏りのある星空を作り出す-」は、ちょっとした絵の背景に使うには十分かと思います。
とはいえ、リアル度の高い絵や構図にそのまま対応できません。そこで、必要に応じて以下の効果を加えることで、星空のイラストを用途に応じてカスタマイズすることができます。

「きらめき」適用例



ベースの背景に(簡単な)グラデーションをかける

実は基礎編のサンプル画像には、気づかない程度にグラデーションをかけてあります。
グラデーションは、あくまで方角により異なる明暗を表現する夜空のベースカラーです。
星雲を混在させてはいけません。



 

作業手順

背景のグラデーションにはブレンドツールを使う。
グラデーション:描画色から背景色(RGB)
形状:放射状 (または直線)










グラデーションの状態は直線でも良いのですが、基本的には「放射状」を使います。
ただし、中心点は必ず絵の外の遠い場所に置き、緩い円弧を描くようにします。
グラデーションの支点や終点が絵の外にはみ出すため、絵の端は指定した色の通りにならないことを忘れないようにします。



背景の色選び

明部と暗部の2色を用意します。
色選びは基本的にはフィーリングですが、指標もないわけではありません。

基本は青をベースにします。夜空なので当然黒に近づけます。最も暗い場所は、RGBを2,2,25くらいに。
明るい場所は、4,4,55~30,30,75までくらいは行けます。
明部と暗部にあまり変化を付けず、気づかれないくらいにすれば、まず失敗はありません。

応用。
十分に暗い色を使うならば、青と赤でグラデーションをかけても問題ありません。良い感じに仕上がる場合もあります。
強いグラデーションをかけて夜空の一方向を明るくすることで、夜明け前や日没前後、街の灯りが近い丘の上などを演出することもできます。
また、夜空は暗いイメージが強いですが、彩度が低い(白っぽい)色なら、明度(明るさ)が80%くらいの高さでも、意外なほどしっかり夜空に見えます。
例:彩度40%、明度80%など。

色は、写真から取ってくるという手法もあるのですが、同じ色を取ってきても色の持つ雰囲気を再現できない場合があり、確実とは言えません(圧縮劣化や光学素子などから生まれたノイズが色の味になっていて再現困難な場合がある)。
色選びの知識があれば、そのような状況で色を調整する際にも役に立つかと思います。


赤色を使って描いた夜空


星雲や天の川を描く

太いブラシや塗りつぶしでベタ塗りしたあと、ぼかしとして「ガウスぼかし」を強くかけておけば、あとは色と透明度を調整するだけで、けっこう星雲や天の川らしくなります。

作業手順

「自由選択(F)」ツールで、星雲を描きたい範囲を囲む
選択範囲を塗りつぶし(青系が良い)。
選択範囲を解除(Ctrl+A)
ガウスぼかしを適用。その際、ぼかし量は約(200/1920x1050)。(「フィルター(R)」→「ぼかし(B)」→「ガウスぼかし(G)」)

レイヤーを複製。
ガウスぼかしを適用。前よりもぼかし量を増やす。
複製したほうのレイヤーの不透明度を下げる。
(必要ならば、もとの天の川レイヤーの不透明度も調整する。)

濃淡を加える

星雲としてはこれで十分ですが、星雲らしい濃淡を付けることで、さらに効果を高めることもできます。
この濃淡は、レイヤーにレイヤーマスクを追加し、ソリッドノイズ効果をかけることで、簡単に付けることができます。
作業手順中に作ったレイヤーに対してこの効果をかけても良いですし、新たに濃淡効果のレイヤを追加するのも有りです。

以下、作業手順。
レイヤータブ上のレイヤーに対して、「レイヤーマスクの追加(Y)」をする。
レイヤーマスクに、ソリッドノイズ「フィルタ(R)->下塗り 雲 ソリッドノイズ」を加えます。この時、X,Yサイズは6.0程度にしておくと良いです。
濃淡のレイヤを追加した場合、星雲が濃くなりすぎるので、濃淡を付けていない元の星雲レイヤの不透明度を下げる。(約50%を参考に任意)

ただし、この手順を加えたレイヤーは、色が薄くなる欠点があります。
対策としては、単にレイヤを複製して重ねる方法が簡単です。



丸い星のブラシを作る(ピーマン型を使わない)

拡大されたとしても、まずピーマンだと気づかれません。が、それは別として、リアル系の絵で星が大きく表示される場合、形が丸くないと雰囲気に合わない場合も多くあります。

作業手順

ピーマン(正式名称"z Pepper")ブラシの設定を参考に、「間隔」などの項目を設定し、星用ブラシを作成します。

ピーマンブラシの間隔設定および、
新しいブラシを作成するボタン

間隔:400程度(5000まで行く模様)
画像サイズにもよるが、大きいほどよい。
硬さ:
ボケた星0.40~0.70または、はっきりした星0.70~0.90
強いほどブラシの描く星の円形がはっきりする。硬さを弱めるとぼかし効果のように形がボケていく。
使い分けると良い。

その他の設定は、デフォルトのままで良いです。






星を描く際に注意すべきこと

ブラシ「硬さ」の比較
ぼかしが強いほど幻想的になる反面、使い所によってリアリティを損なうかと思われる。
ブラシのぼかし設定は、ぼかしフィルタで代替できる。描いてから調整したい場合はそちらを使う。

注意点として、星を描く際は必ず「ブラシ 」ツールを使うこと。
「鉛筆」ツールは硬さ設定を無視してくっきりした円形を描いてしまいます。














「浴びせ」で小さな星を撒く

「浴びせ」は分布を制御できないため、星を描くのに向いているとは言えません。ただし、小さな星を描くには手軽で、星空を描く際にベースとして使えば効果的です。

作業手順

基本的な作業手順は、下記の「星をきらめかせる」と同じです。

レイヤを作成(Ctrl+Shift+N)。
レイヤータブ上でレイヤーを右クリックして、「アルファチャンネルの削除(R)」を行う。
「浴びせ」効果を適応。(「フィルター(R)」→「ノイズ(N)」→「浴びせ(H)」)
「しきい値」で、白い点を少数に減らす。(左側に行くほど種の数を減らすことができる)
拡大して使う場合は、拡大後に「ぼかし」(2〜5pixel)を適用する。
レイヤーの右クリックから「アルファチャンネルの追加 (H)」を行う。
 「色を透明度に」を実行。この際、黒色を透明度にする色として選択する。(「色(C)」→「色を透明度に(A)」)
必要ならば、「レイヤーマスク」を追加。不透明度により、星の密度を代替する。
浴びせレイヤーの不透明度を上げる(浴びせを目立たなくさせる)。


画像のサイズによる制御がきかないので、大きな画像では少し扱いが難しくなります。
(処理時間も長くなります。)
A4用紙の場合、サムネイルのように縮小して見た時と、壁紙など元サイズに近い大きさで見た時では印象が、かなり違います。

A4用紙サイズに対する「浴びせ」で作った星空
(クリックして拡大して見てください)






さまざまな色の星を追加

基本となる黄色系以外の星を加えることで、華やかな星空を描くことができます。
星を追加する場合、専用にレイヤを追加します。
あらかじめ星の数を少なめにしておいたほうが良いです。
追加するのが小さな星で少数ならば、何色の星を追加しても悪いことにはなりません。


星のブラー(ほかし)に色を付ける。

ぼかし色を変えることで、星空をより華やかに演出することができます。

基礎編の2レイヤ使った輝きを1レイヤに統合する

基礎編で作った星空を使う場合、ぼかしに色を付ける前に「下のレイヤーと統合」を使って、ぼかしレイヤを1つにまとめておきます。











作業手順

「レイヤーマスクの追加(Y)」から「レイヤーのアルファチャンネルを移転」を選択します。
こうすれば、レイヤに色を塗った結果がぼかしの色に反映されるようになります。色つけも、レイヤ全体に着色するだけです。
複数色によるグラデーションをかけたり、グラデーション以上の複雑な色を付けられるようになります。

また、オーバーレイでも同じようなことができます。状況によって使い分けます。




不透明度・色の変化を抑制

動的特性設定時に、忘れず「不規則」のカーブを選択する

大きな星を描くときに、特に有効な手法です。
動的特性の「色」変化を設定変更すれば、白色の出現比率を上げたり、不透明および背景色への変化を弱めに制限することができます。











注意点

星空用の動的特性は「不規則」と「色」変化を結びつけていると思います。
それを忘れると、「筆圧」のカーブを変更して「設定変更が適用されない」と首をかしげることになります。


星をきらめかせる

大小の瞬く星が混じっていると、星空が華やかになります。

「きらめき」フィルタの適用手順

瞬く星は、きらめき効果によって描くことができます。
また、きらめきの元となる種は、「浴びせ」を間引く方法で用意するのが簡単です。

きちんと設定していない「きらめき」

なお、「きらめき」の設定は、「なかのヒト」様が「きらめき」効果を検証してくださっているページを参考にさせていただきました。









作業手順

きらめき用にレイヤを作成(Ctrl+Shift+N)。
「レイヤー」タブ内でレイヤーを右クリックして、
「アルファチャンネルの削除(R)」を行う。
「浴びせ」効果を適応。
(「フィルター(R)」→「ノイズ(N)」→「浴びせ(H)」)
「しきい値」で、白い点を少数に減らす。
(左側に行くほど種の数を減らすことができる)

「きらめき」を適用。
とがりの長さ: 10~80(画像600x400px~4000x6400pxに対して) とがりの数: 2~4程度。(実際のとがりの本数はこの値の2倍になる)
とがりの角度: 15度くらい。(ちょうど45度などにしてしまうと不自然な絵になるのでわざとずらす)
ほかは、ほぼ基本設定のまま。

レイヤーの右クリックから「アルファチャンネルの追加 (H)」を行う。
 「色を透明度に」を実行。この際、黒色を透明度にする色として選択する。
(「色(C)」→「色を透明度に(A)」)
きらめきがカクついている場合、最後にガウスぼかしを3px程度入れる。




「しきい値」による白い点の間引き













きらめきを使うコツ

作業中、わざわざ一度レイヤの「アルファチャンネルを削除」しています。
なぜかといえば、浴びせの後に「しきい値」を適用する際、真白以外の点が残らないようにするためです。(薄い白の点はきらめきにならずに残りますし、黒い点がレイヤ上に残ると、きらめきにノイズが入ります)。

きらめきが適用されるのは、ほぼ純白(RGBが255,255,255)のみです。


 種を手作業で描く場合:
種の色は必ず白(純白)にします。サイズは画像の大きさに関係なく、3〜5Pixelの小さいものでないと、先の尖った綺麗なきらめきが作れません。
(きらめきのとがり部分は、種を引き伸ばして描かれているようです)


きらめきを組み合わせる:
精細な絵の場合、きらめきが大小あわせて2〜3種類あったほうが見栄えがよいです。

きらめきフィルターは、角度およびサイズがすべて同じきらめきを描きます(「傾きランダム」 にしても)。
光学的にはこれが正しいのではないかと思います。
複数のきらめきを組み合わせて使いたい場合は、レイヤを2〜3枚用意し、レイヤごとに種を作り、設定を変えながらきらめきフィルターをかけましょう。

上でも書きましたが、とがりの角度は、大きなものは15度か45度前後が見栄えがよいです。小さなきらめきならば、「-1」を指定してランダムにしても良いかもしれません。
 
きらめきは、本数が多すぎると作り物っぽくなり、見栄えが悪くなる場合があります。
きらめきは、個数もサイズも控えめにしましょう。





本記事は姉妹編として、基礎編のほかに番外編「GIMPで露光撮影のような「星の軌跡」イラストを描く」も存在します。よろしければどうぞ。


Linuxコマンドライン上でSVGベクタ画像をJPG等へラスタライズ変換する

 Linuxコマンドライン上でSVGベクタ画像をJPG等へラスタライズ変換することができるが、上手く変換されない場合がある。   以前作った魔法陣イラスト素材をイラスト素材ストックサイトへ登録しようと思い立ち、改めて素材用にラスタライズ変換をかけようとした。   ラスタライズ変換...