デビアンな生活 lenny

デビアンな生活

日本語コンソールベースのDebianTIPS集として始めたが、結局LXDEになってしまった。

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

Squid proxy server

ネットワークの管理のため、apache2でproxyサーバを動かして、インターネットにアクセスしていたが、コンテンツのフィルタリングを考えて、SquidGuardを使うために、Squidをセットしてみた。
例のごとく、aptitiudeでインストール。Squid3もあるが、SquidGuardのために、Squid 2.7を選択。
設定は、/etc/squid/squid.confだが、ACLの記載順序に注意が必要。
とりあえず、使うために、localnetからのアクセスを許可
> acl localnet src 192.168.xx.0/24
> http_access allow localnet
また、proxyを秘匿するために、以下を追加してみた
> header_access X-Forwarded_For deny all
> header_access Via deny all
> header_access Cache-Control deny all
Digest認証のために以下を追加
> auth_param digest program /usr/lib/squid/digest_pw_auth /etc/squid/digpass
> auth_param digest realm Squid digest
> acl password proxy_auth REQUIRED
> http_access allow password
パスワードファイルdigpassは、BASIC認証とは違って、平文で作成しなければならない。
# vi /etc/squid/digpass
> user:passwd
これで、httpアクセスのたびに認証画面が現われるので、windows機では勝手なhttpアクセスが認識できて、意外に便利。
squidは透過型プロキシを簡単に設定できるので、便利だが、その場合には認証が使えない。
しばらくはフォワード型のプロキシで使用して、そのうちSquidGuardに挑戦してみるか。
ログの確認には、squidviewのログレポートがとりあえず簡単。
スポンサーサイト

プロキシ・サーバー

layer 7 filterを使用しても、bittorrentを完全に遮断はできなかったので、フォワード型のプロキシ・サーバーを立てることにした。
# vi /etc/apache2/ports.conf
> Listen 8080
ポートを追加
# vi /etc/apache2/mods-available/proxy.conf
> ProxyRequests on
> NoProxy ローカルネット
> CustomLog /var/log/apache2/proxy_access.log common
> ErrorLog /var/log/apache2/proxy_error.log
上記を追加
> Allow from ローカルネット
のディレクティブの中に追加
# a2enmod proxy
# a2enmod proxy_http
# a2enmod proxy_connect
これでとりあえず稼動する。proxy_connectを有効にしないと、httpsがうまくつながらない。
# vi /etc/apache2/mods-available/cache_disk.conf
> CacheEnable disk /
コメントアウトして、ディスクキャッシュを有効に
# a2enmod cache
# a2enmod disk_cache
mem_cacheはとりあえず使わない

あとは、ブラウザのプロキシをポート8080で設定する。
その後、Windows XPでは、windows updateなどのプロキシを設定するために
C:\> proxycfg -u

問題なければ、iptablesでFORWARDを遮断する。

l7-filter

l7-filterの導入
まず、testingのl7-filter-userspaceを試みたが、kernelが合わず、不成功。
L7-filter Kernel Versionを導入した。
http://l7-filter.sourceforge.net/より、netfilter-layer7-v2.22.tar.gzとl7-protocols-2009-05-28.tar.gzをダウンロードして/usr/srcで展開。
カーネルソースは展開し、/usr/src/linuxにリンク済み。
# cd /usr/src
# apt-get source iptables
iptablesのソースを導入し、展開。カーネルは、2.6.26、iptablesは1.4.2。
まず、カーネルのパッチ
# cd /usr/src/linux
# patch -p1 < ../netfilter-layer7-v2.22/kernel-2.6.25-2.6.28-layer7-2.22.patch
# make menuconfig
> Netfilter connection tracking support
> Layer 7 match support
オプションを選んで再構成。
次に、iptablesのコンパイル
# cd /usr/src/iptables-1.4.2
# cp netfilter-layer7-v2.22/for_older_iptables/iptables-1.4.1.1-for-kernel-2.6.20forward/* extensions/
# ./configure --with-ksource=/usr/src/linux --prefix=/usr --libdir=/lib --with-xtlibdir=/lib/xtables --enable-devel --enable-libipq
# make
# make install
あとはprotocolsのインストール
# cd /usr/src/l7-protocols-2009-05-28
# make install
l7-filterの動作確認は
# iptables -m layer7 --help
まず、BitTorrntを遮断してみる。
# iptables -A FORWARD -m layer7 --l7proto bittorrent -j DROP
# iptables -v -L FORWARD
いくらか遮断できているみたいだが、調べるとかなり抜けている様子
一見うまく動いているようだが、なにがおかしいのかわからない。


testing package

testing packageの導入について
まず/etc/apt/soures.listの追加
> deb http://ftp.jp.debian.org/debian/ testing main contrib non-free
このままでは、すべてのパッケージが更新されるので、
/etc/apt/apt.confを作成
> APT::Default-Release "stable" ;
一応、更新されないことを確認
# apt-get update
# apt-get -s upgrade
あとは、aptitudeでパッケージを選択してインストール

ネットワークの監視

どうも、家庭内LANでBitTorrrentを使用している不届き者がいるようである。ネットワークの監視が必要なので、最初darkstatを試してみたが、Google Cromeが使えなかったり、内容が簡単すぎるので、ntopの方を採用した。
# apptitude
> ntop
インストールすれば、/etc/init.d/ntopで制御される。webブラウザーを使用したいので、/etc/default/ntopにオプションを追加
> GETOPT"-w 3000"
あとは、Webブラウザーで記録を見ることができる。
標準の/etc/ntop/protocol.listではBitTorrentの監視ができないので、下記の記載を追加するか、読み込みをスキップして、デフォルトにすれば、BitTorrentが表示される。
/etc/ntop/protocol.lst
> BitTorrent=6881-6999

iptablesの起動

Woodyまでは、/etc/init.d/iptablesがあり、サービスとして起動していたが、Sargeからはなくなっていた。Sargeのときは起動スクリプトを作って対応していたが、面倒なので、Etchからは/etc/network/if-up.dに直接スクリプトを置いていた。iptablesのスクリプトでdomain nameを使っているので、エラーになって/etc/network/pre-upに置けないことや、インターフェースごとに実行されるので、eth1が起動するまではエラーになることが気になっていたので、今回eth1のオプションスクリプトに変更した。

/etc/network/interfaces
>iface eth1 inet dhcp
> pre-up /path/iptables-down
> post-up /path/iptables-up

iptables-downは、すべてDROPのスクリプト
iptables-upが、パケットフィルタリングなどのスクリプト

iptablesによる帯域制限

光ファイバーで回線は高速になり便利だが、大量にダウンロードをする子供には困ったもので、とりあえず帯域制限をかけてみた。

# iptables -A FORWARD -p tcp --dst 192.168.??.?? -m hashlimit --hashlimit-above 100/sec --hashlimit-burst 1000 --hashlimit-mode dstip --hastlimit-name dlimit -j REJECT

ほかのルールに影響しないように、!記号で反転してrejetctしている。dstのあとはIPアドレス。
windowsのMTUは1500なので、パケットあたりのデータの上限は1460バイトとなり、100/secで100x1460x8=1.2Mbpsとなる。
Gyaoの推奨環境が1Mbps以上なので、これでよしとする。
また、ブラウジングのレスポンスを考えて、burstは1000(1.4Mbyte)とした。

フレームバッファコンソール

コンソールでの日本語表示のためにはフレームバッファを使うことが必要。
カーネルの再構築でフレームバッファ(vga16fb, intelfb)とフレームバッファコンソール(fbcon)を組み込んでおくことが必要。モジュールにしていれば、モジュールのロードが必要。lennyでは、fbconもモジュールにできるので、その場合にはロードが必要なので、要注意。

# modprobe -v fbcon
# modprobe -v intelfb
# jfbterm -c utf-8

vga16fbは完璧に機能するのだが、画面解像度の変更ができないので、不便。
intelfbは、fbsetで画面解像度の変更はできるのだが、仮想コンソールを切り替えると画面が乱れてしまうので、少し不便。ATIのカードの時には問題なかったのに、我慢するしかないのか。

フレームバッファをモジュールにしている場合は、/etc/modulesを変更して、起動時にロードしておくと便利。

# fbset -i
# fbset 1280x1024-60

fbset -iで、ビデオモードとフレームバッファの表示ができる。
モードの種類は、/etc/fb.modesを参照。
intelfbでは、起動時のモードは、intelfb.hのPREFERRED_MODEで定義されている。縦x横-カラービット@リフレッシュレートになっているで、必要に応じて変更して、カーネルを再構築。

X-window

普段はコンソールを使用しているが、緊急時にはGUIも必要かもと考えて、X-Windowのセットアップだけしておく。
# aptitude
> xorg
> lxde
> uim
> uim-anthy
# im-switch -c
> uim-toolbarを選択
> startx
これでとりあえず、x-windowが使えるようになるが、ログインがgdmにかわるので、gdmをpurgeしておく。

lm-sensors

ハードウェアモニタリングにmbmonを使用していたが、AOPEN i915GMm-HFSでは、CPU温度が表示されないので、lm-sensorsに変更した。
# aptitude
> lm-sensors
カーネルを再構成して、I2C supportをyesにしておかなければならないし、モニタのデバイスドライバをモジュール化しておく。その後、リブート。
# sensors-detect
実行環境をテストして、必要なモジュールをロードしてくれるので、一度は実行しておく。
# sensors
表示を修正するには、/etc/sensors3.confを修正。
CPU温度が90度を越えていたので、ケースファンを交換した。 
その後、CPU温度は無事60度台に低下した。

ハードディスクの温度であれば、smartctlでわかるが、hddtempを使えば、定期的にモニタできる。
次のページ

FC2Ad

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。