[an error occurred while processing this directive]
■ 【ぷろじぇくと ぞうさん】 〜E-Bananaサーバ 構築日記〜

目次に戻る
1日目 2日目 3日目 4日目 5日目 6日目 7日目
8日目 9日目 10日目 11日目 12日目 13日目 14日目
15日目 16日目 17日目 18日目 19日目 20日目 21日目
22日目 23日目 24日目 25日目 26日目 27日目 28日目
29日目 30日目 31日目 32日目 33日目 34日目 35日目
36日目 37日目 38日目 39日目 40日目 41日目 42日目
43日目 44日目 45日目 46日目 47日目 48日目 49日目
50日目 51日目 52日目 53日目 54日目 55日目 56日目
57日目 58日目 59日目 60日目 61日目 62日目 63日目
64日目 65日目 66日目 67日目 68日目 69日目 70日目
71日目 72日目 73日目 74日目 75日目 76日目 77日目
78日目 79日目 80日目 81日目 82日目 83日目 84日目
85日目 86日目 87日目 88日目 89日目 90日目 91日目
92日目 93日目 94日目 95日目 96日目 97日目 98日目
99日目 100日目 101日目 102日目 103日目 104日目 105日目
106日目 107日目 108日目 109日目 110日目 111日目 112日目
113日目 114日目 115日目 116日目 117日目 118日目 119日目
120日目 121日目 122日目 123日目 124日目 125日目 126日目
127日目 128日目 129日目 130日目 131日目 132日目 133日目
134日目 135日目 136日目 137日目 138日目 139日目 140日目
141日目 142日目 143日目 144日目 145日目 146日目 147日目
148日目 149日目 150日目 151日目 152日目 153日目 154日目
155日目 156日目 157日目 158日目 159日目 160日目 161日目
162日目 163日目 164日目 165日目 166日目 167日目 168日目
169日目 170日目 171日目 172日目 173日目 174日目 175日目
176日目 177日目 178日目 179日目 180日目 181日目 182日目
183日目 184日目 185日目 186日目 187日目 188日目 189日目
190日目 191日目 192日目 193日目 194日目 195日目 196日目
197日目 198日目 199日目 200日目 201日目 202日目 203日目
204日目 205日目 206日目 207日目 208日目 209日目 210日目
211日目 212日目 213日目 214日目 215日目 216日目 217日目
218日目 219日目 220日目 221日目 222日目 223日目 224日目
225日目 226日目 227日目 228日目 229日目 230日目 231日目
232日目 233日目 234日目 235日目 236日目 237日目 238日目
239日目 240日目 241日目 242日目 243日目 244日目 245日目
246日目 247日目 248日目 249日目 250日目 251日目 252日目
253日目 254日目 255日目 256日目 257日目 258日目 259日目
260日目 261日目 262日目 263日目 264日目 265日目 266日目
267日目 268日目 269日目 270日目 271日目 272日目 273日目
274日目 275日目 276日目 277日目 278日目 279日目 280日目
281日目 282日目 283日目 284日目 285日目 286日目 287日目
288日目 289日目 290日目 291日目 292日目 293日目 294日目
295日目 296日目 297日目 298日目 299日目 300日目 301日目
302日目 303日目 304日目 305日目 306日目 307日目 308日目
309日目 310日目 311日目 312日目 313日目 314日目 315日目
316日目 317日目 318日目 319日目 320日目 321日目 322日目
323日目 324日目 325日目 326日目 327日目 328日目 329日目
330日目 331日目 332日目 333日目 334日目 335日目 336日目
337日目 338日目 339日目 340日目 341日目 342日目 343日目
344日目 345日目 346日目 347日目 348日目 349日目 350日目
351日目 352日目 353日目 354日目 355日目 356日目 357日目
358日目 359日目 360日目 361日目 362日目 363日目 364日目
第21日目:〜外伝V〜 ロードバランサーを作れ! (その8)〜

どうも、('A`)です。
昨日からずっと過去ログを読んでいるので、ちょっと今日は目が痛いです。。。
引き続き過去ログを調べるとしても、ちょっと一人ではどうしようもないなあ。
そうだ、root兄(・∀・)に手伝ってもらおう。そうしよう。
最近のroot兄(・∀・)は色々と開発作業を黙々とやってるけど、今日は空いてるかなあ。

('A`):「あのー・・・」
(・∀・):「ん、どうした?ロードバランサーは動いたかい?」
('A`):「そのロードバランサーなんだけど、どうも正常に動いていないっぽいんだ。」
(・∀・):「ほうほう。何かエラーメッセージとかは出ているの?」
('A`):「いやあ、それが見当たらないんだ。動かしているのはmatdなんだけど。」
(・∀・):「matdねぇ・・・あ、これ見た?」
('A`):「ん、何?」
(・∀・):「コレ。最後の方に『ipf ルールでパケットを破棄する必要があります』って
      書いているよ。ipfilterはインストールして設定しているかい?」
('A`):「えー、えー、、、インストールしていない・・・」
(・∀・):「じゃあ、まずはipfilterのインストールからだね。頑張れっ!」
('A`):「・・・」

うーん、ipfilterもインストールしないといけないのか・・・
インストールするのはできるけど、ipfwと同様にちょっとでも変な設定してしまうと、
最悪二度とサーバに接続できなくなる事も起きるからなあ。ちょっと慎重に作業しよう。

最近のFreeBSD(たぶん6.0R以降だったかなあ)ではipfwやipfilter(ipl)は標準で
カーネルモジュールとして作られるので、後はそれらを動かす設定をすれば
良いだけです。
ちょっとやってみましょう。


[ipfilter(ipl)の下準備]
まずモジュールのローディングから始めます。モジュールが作られていても、
起動時にOSから読み込まれていないと使えないです。
/boot/loader.confに以下の記述を行ないます。
ipl_load="YES"

loader.confはシステムブート(起動)時にカーネルや、カーネルに渡すパラメータ、
追加すべきカーネルモジュールを指定する設定ファイルです。
今回はipfilter(ipl)をローディングする指定を追加するので、上記のような
記述になります。
(ちなみにモジュールは /boot/kernerl の中に ipl.ko という名称で入ってます。)

これでサーバが再起動された時にipfilterのモジュールがローディングされる設定は
完了しました。 では「現在稼働しているサーバで動かしたい時はどうするか」と言いますと、
スーパーユーザモードで以下のコマンドを実行すれば良いです。
kldload ipl.ko

んで、無事にモジュールがローディングされたかを確認するには、以下のコマンドを
実行します。
kldstat

すると、以下の様にローディングされているカーネルモジュールが表示されます。
Id Refs Address   Size   Name
1  4  0xc0400000 544b6c kernel
2  1  0xc0945000 3691c  ipl.ko
3  1  0xc097c000 65e98  acpi.ko
1番目がカーネル本体、2番目がipfilterのモジュール、3番目がacpiのモジュールです。
(あ、ACPIについては各自調べて下さい。大雑把に言うとマシンの電源制御を行なって
いるもの、と思って頂けると助かります。紙面の関係上、説明するの大変です・・・)


[ipfilter(ipl)の設定]
ipfilterのモジュールローディングまで行ないましたが、このままではipfilterとして
動いてはくれません。(単にモジュールがメモリ上に存在するだけ、という状態です。)
ではipfilterとして起動するにはどうすればいいかと言うと、以下の3つの作業を
実施します。
  1)/etc/rc.conf 内に起動用のパラメータを追加する
  2)ipfilterの設定ファイル(ipf.rules)を作る
  3)サーバを再起動する

1)/etc/rc.conf 内に起動用のパラメータを追加する
  以下のパラメータを追加します。
ipfilter_enable="YES"        ← 「ipfilterを有効にしますよ〜」の意味
ipfilter_rules="/etc/ipf.rules"    ← フィルタリングルールの設定ファイルの場所
ipfilter_flags=""            ← ipfilter起動オプション(通常は何も書かない)
ipmon_enable="YES"         ← 「ipfilterのログ取りますよ〜」の意味
ipmon_flags="-D /var/log/ipflog"  ← ログが記録される場所
ipfilterのログはプログラムipmonがサーバ起動時にこの設定に基づいて稼働します。
(本体は /sbin/ipmon として存在します。

2)ipfilterではフィルタリングルールを ipf.rules というファイルで設定します。
  自分でエディタを使い1から書く、という事も可能ですが、初めての人とかあまり
  慣れていない人は /usr/src/contrib/ipfilter/ にある mkfilters を使うと
  雛型となる設定ファイルが作れます。

  ・・・と言っていたら、 /usr/src の中身が空っぽだった(泣

    banana260# ls -l /usr/src
    total 0
    banana260#

  でも心配ありません。sysinstall コマンドを使って /usr/src/contrib を
  FreeBSD本家サイトから取得する事が可能です。
  (sysinstallコマンドでの取得方法についてはココを参照して下さい。)
  /usr/src/contrib を取得したら、スーパーユーザモードになって、以下の
  コマンドを実行して下さい。

    cd /usr/src/contrib/ipfilter
    perl mkfilters | grep -v inet6 > /etc/ipf.rules

  /etc/ipf.rulesに以下の内容のファイルが作成されます。
  ('A`)の場合には IPを2つ持っているbanana260サーバで作成したので、
  通常よりも2行多くなっています。

#
# The following routes should be configured, if not already:
#
# route add 206.223.147.161 localhost 0
#
block in log quick from any to any with ipopts
block in log quick proto tcp from any to any with short
pass out on vr0 all head 150
block out from 127.0.0.0/8 to any group 150
block out from any to 127.0.0.0/8 group 150
block out from any to 206.223.147.161/32 group 150
pass in on vr0 all head 100
block in from 127.0.0.0/8 to any group 100
block in from 206.223.147.161/32 to any group 100

※ここで('A`)なりに判った事を解説すると、、、
  ・「pass なんちゃら」は許可をあらわす
  ・「block なんちゃら」は拒否をあらわす
  ・「in」はサーバの外から中へ、「out」はサーバの中から外へ
 を示している、と思います。(うわっ、すごく自信なさげな書き方!)
 例えば、
   pass in on vr0 all head 100
   pass out on vr0 all head 150
 なんていう設定だけだと、「どこからでもいらっしゃい〜♪」状態になる訳です。
 (矢吹丈の「ノーガード」戦法ですね。)
 またルールは /etc/ipf.rules に書かれている順番(出現順)に解釈・適用されますが、
 内容的に以前出現したルールと重複したり、一部に含まれたものは省略されるようです。

('A`)の場合にはこんな内容で組んでみました。
#pass in on vr0 all head 100
#pass out on vr0 all head 150

block in log quick from any to any with ipopts
block in log quick proto tcp from any to any with short

block in quick proto tcp from any to 206.223.147.161 port = 80

block out from 127.0.0.0/8 to any group 150
block out from any to 127.0.0.0/8 group 150
block out from any to 206.223.147.161/32 group 150

block in from 127.0.0.0/8 to any group 100
block in from 206.223.147.161/32 to any group 100

  3)サーバを再起動する
    うまく動くことを信じて、サーバを再起動します。
    サーバが戻ってきたらログイン後スーパーユーザモードになって
    以下のコマンドを実行し、確認を行ないます。
     ・kldstat  ‥‥ モジュールがローディングされているか確認
     ・ps     ‥‥ ログ出力モジュール(ipmon)が動いているか確認
     ・ipfstat -i ‥‥ 設定したルールがどの様に反映されているか確認

ちなみに('A`)が設定した内容では最終的に以下の様に認識されました。
banana260# ipfstat -i
block in log quick from any to any with ipopts
block in log quick proto tcp from any to any with short
block in quick proto tcp from any to 206.223.147.161/32 port = http
banana260#

本当に動いているかなあ・・・1つ実験してみよう。
/etc/ipf.rules に以下の1行を追加してサーバを再起動してみます。

block in from any to 206.223.147.160 port = 80

再起動してからFTP、Telnet、SSH、HTTP、POP3、SMTPでアクセスしてみました。
するとHTTPは応答を返さず、それ以外は正常に動作しました。
(当たり前ですが・・・)
これはipfilterで「外部から 206.223.147.160 のIPでかつ80番ポートへ接続
しようとする通信は拒否する」というルールが適用されている事を示しています。
という事で、ipfilterの設定は終了です。
さて今の設定を外してから、もう一度matdの動作を確認してみよう。
どうかな・・・


・・・ダメでした(涙
前回の日記で起きた現象が繰り返されます。
(サーバのデフォルトページ ( http://banana260.maido3.com/ )のページが
表示されるだけ、という状態。)
うーん、もう一度root兄(・∀・)に相談してみよう。

('A`):「あのー・・・」
(・∀・):「どう?動いた?」
('A`):「ダメだった・・・前回と同じ動きをして、こちらの想定通りの結果が出ないんだ。」
(・∀・):「・・・」
('A`):「何か他に良い方法は無いかなあ?」
(・∀・):「あ、俺、他の作業が入っちゃったから、また今度ね。」
('A`):「えー、あ、ちょっと待ってー・・・orz」


また一人になってしまった・・・解決策が見つからない。
引き続き過去ログ読みに戻ります。
あ、日記のページ上段のインデックス(「第x日目」と表示されているところ)を拡張して
おかなきゃ。(もう3段目が全部埋まりそう。)
明日には解決策見つかるといいなあ。。。
それでは、また


[20:10 追記]
このスレに書かれたむむむさんの説明を基にサーバの設定をいくつか修正したら、
何とかかんとか動きましたー。
このページが皆さんのブラウザで表示されるといいなあ。
(皆さんの環境によっても違ってくるかと思いますが、1〜2分位の間隔で何回か
リロードすると、('A`) 、(^_^;) 、(´・ω・`)に表示が切り替わっていくと思います。)
修正したところとかの詳細については次回の日記でご報告します。
イヤッホーイ!

【sysinstallコマンドについて】

sysinstallはFreeBSDのシステムや各種アプリケーションのインストールや設定を
行なうユーティリティです。
対話形式で操作するので、初めての人でもすぐに操作に慣れると思います。
今回は本編で取り上げた「/usr/src/contrib を取得する」を題材に説明します。

まずSSHでサーバにログインし、スーパーユーザモードになって下さい。
スーパーユーザモードになったら sysinstall と入力し、ENTERキーを押します。
すると図1の画面が表示されます。これがsysinstallのメイン画面です。


(図1)

今回の場合には「/usr/src/contrib を取得する」ので、キーボードの↓キーを押して
メニュー画面内の「Configure」まで移動し、ENTERキーを押します。
すると図2の画面が表示されます。これがConfigurationの詳細画面です。

(図2)

Configurationの詳細画面ではサーバに対して行なえるの各種設定の内訳が表示されます。
例えばネットワークの設定やrootパスワードの変更等がこのメニューから実行できます。
今回は画面中の「Distributions」にカーソルを移動し、ENTERキーを押します。
すると図3の画面が表示されます。これがConfigurationの詳細画面です。

(図3)

Distributionsの詳細画面ではサーバに追加でインストールできるファイル・パッケージの
内訳が表示されます。
例えば実行形式のカーネルモジュール等は「kernels」、マニュアルなら「man」、各種
アプリケーションソフトなら「ports」に入っています。
今回は /usr/src/contrib が対象なので、ソース「src」の処にカーソルを移動します。
カーソルを移動したら SPACEキーを押します。
すると図4の画面が表示されます。これがsrcの内訳画面です。

(図4)

お目当ての contrib が表示されていますので、カーソルを移動して、SPACEキーを押します。
すると図5の様にチェックボックスに「[X]」が表示されます。
これでcontribが選択されたので、カーソルキーを1番上の「<<< X Exit」に移動させてから、
ENTERキーを押します。

(図5)

そうすると図6の画面(=図3の画面)に戻ります。srcの処にチェックがついているはずです。
これを確認したら、先程と同じ様にカーソルキーを1番上の「<<< X Exit」に移動させてから、
ENTERキーを押します。

(図6)

すると図7の画面が表示されます。これはデータをどこから取得するか(取得先)を指定する
画面です。自宅のサーバに対して実行する人だったら「1 CD/DVD」を選択し、FreeBSDの
インストールCDを差し込めば良いでしょう。
CDが利用できない状況(手元にない、とか、サーバが遠隔地にあって物理的に操作できない
等)だったら「2 FTP」を選択します。
今回は「2 FTP」をカーソルキーで選択し、ENTERキーを押します。

(図7)

すると図8の様に取得先となるFTPサーバの一覧が表示されます。
この中から対象のサーバに接続距離が近いFTPサーバを選びます。
(今回banana260に対して実施したので、FTPサーバは ftp4.freebsd.org を選択しました。
実はここはPIEが入っているデータセンター(200Paul)内にあったりします。)
で、カーソルキーを移動してFTPサーバを選択したら、ENTERキーを押します。

(図8)

すると図9の画面が表示されます。「実行するか、しないか」の最終確認のダイアログです。
今まで指定してきた内容で問題なければENTERキーを押します。

(図9)

すると図10の画面に切り替わり転送が始まりますので終わるまでしばらく待ちます。

(図10)

転送が終わったら再び画面が切り替わり、図2の画面に戻ります。
画面の一番上に表示されている「<<< X Exit」にカーソルを移動させてから、
ENTERキーを押します。
すると図1の画面に戻りますので、→キーで画面の一番下にある「X Exit Install」に
カーソルを移動し、ENTERキーを押します。
そうするとsysinstallが終了し、コマンドプロンプトが表示されます。


以上がsysinstallの操作の一例です。sysinstallでは他にも色々な事ができるのですが、全部を
説明するとなるとこの日記のページを何百枚も作る事になりそうなので、他の機能については
みなさんの環境で試して下さい('A`)

20日目に戻る。   22日目に続く。

目次に戻る
1日目 2日目 3日目 4日目 5日目 6日目 7日目
8日目 9日目 10日目 11日目 12日目 13日目 14日目
15日目 16日目 17日目 18日目 19日目 20日目 21日目
22日目 23日目 24日目 25日目 26日目 27日目 28日目
29日目 30日目 31日目 32日目 33日目 34日目 35日目
36日目 37日目 38日目 39日目 40日目 41日目 42日目
43日目 44日目 45日目 46日目 47日目 48日目 49日目
50日目 51日目 52日目 53日目 54日目 55日目 56日目
57日目 58日目 59日目 60日目 61日目 62日目 63日目
64日目 65日目 66日目 67日目 68日目 69日目 70日目
71日目 72日目 73日目 74日目 75日目 76日目 77日目
78日目 79日目 80日目 81日目 82日目 83日目 84日目
85日目 86日目 87日目 88日目 89日目 90日目 91日目
92日目 93日目 94日目 95日目 96日目 97日目 98日目
99日目 100日目 101日目 102日目 103日目 104日目 105日目
106日目 107日目 108日目 109日目 110日目 111日目 112日目
113日目 114日目 115日目 116日目 117日目 118日目 119日目
120日目 121日目 122日目 123日目 124日目 125日目 126日目
127日目 128日目 129日目 130日目 131日目 132日目 133日目
134日目 135日目 136日目 137日目 138日目 139日目 140日目
141日目 142日目 143日目 144日目 145日目 146日目 147日目
148日目 149日目 150日目 151日目 152日目 153日目 154日目
155日目 156日目 157日目 158日目 159日目 160日目 161日目
162日目 163日目 164日目 165日目 166日目 167日目 168日目
169日目 170日目 171日目 172日目 173日目 174日目 175日目
176日目 177日目 178日目 179日目 180日目 181日目 182日目
183日目 184日目 185日目 186日目 187日目 188日目 189日目
190日目 191日目 192日目 193日目 194日目 195日目 196日目
197日目 198日目 199日目 200日目 201日目 202日目 203日目
204日目 205日目 206日目 207日目 208日目 209日目 210日目
211日目 212日目 213日目 214日目 215日目 216日目 217日目
218日目 219日目 220日目 221日目 222日目 223日目 224日目
225日目 226日目 227日目 228日目 229日目 230日目 231日目
232日目 233日目 234日目 235日目 236日目 237日目 238日目
239日目 240日目 241日目 242日目 243日目 244日目 245日目
246日目 247日目 248日目 249日目 250日目 251日目 252日目
253日目 254日目 255日目 256日目 257日目 258日目 259日目
260日目 261日目 262日目 263日目 264日目 265日目 266日目
267日目 268日目 269日目 270日目 271日目 272日目 273日目
274日目 275日目 276日目 277日目 278日目 279日目 280日目
281日目 282日目 283日目 284日目 285日目 286日目 287日目
288日目 289日目 290日目 291日目 292日目 293日目 294日目
295日目 296日目 297日目 298日目 299日目 300日目 301日目
302日目 303日目 304日目 305日目 306日目 307日目 308日目
309日目 310日目 311日目 312日目 313日目 314日目 315日目
316日目 317日目 318日目 319日目 320日目 321日目 322日目
323日目 324日目 325日目 326日目 327日目 328日目 329日目
330日目 331日目 332日目 333日目 334日目 335日目 336日目
337日目 338日目 339日目 340日目 341日目 342日目 343日目
344日目 345日目 346日目 347日目 348日目 349日目 350日目
351日目 352日目 353日目 354日目 355日目 356日目 357日目
358日目 359日目 360日目 361日目 362日目 363日目 364日目

いま一番お得なページ! 解析
[an error occurred while processing this directive]