• 検索結果がありません。

6 課題内容とレポート作成について

6.1 実験スケジュール

実験は7週間にわたって行う.レポートを作成する期間を考慮すると,理想的には,次のようなスケジュール で実験を進めるのが望ましい.

1週 [課題1]サーバの動作確認

 [課題2]WWWサーバ

2週 [課題3(グループ実験)]ファイアウォールの構築

3週 [課題3(グループ実験)]ファイアウォールの構築(続きと評価)

4週 [課題4]異なる言語で実装したサーバ・クライアント間通信の動作確認

5週 [課題5(グループ実験)]ネットワークアプリケーションの作成

6週 [課題5(グループ実験)]ネットワークアプリケーションの作成(続きと動作確認)

7週  予備日・他グループのアプリケーションを評価・レポート作成

[課題3]ファイアウォールの構築(グループ実験)

Linuxサーバ上にファイアウォール機能を持ったルータを構築せよ.各班にはLinuxサーバ用にPCを1 台貸 与する.ネットワークの構成は図20に示す通りである.

ルータの設定は,以下の条件を満たすこと.

INPUT/OUTPUT/FORWARDチェーンの初期設定をすべてDROPにする

外部ネットワークからの接続は,SSHのみ許可し,その他の接続はすべて拒否する (SSHの接続先はルータのみ)

内部ネットワークからの外部ネットワークへの接続は,HTTP,SSH,DNS,Pingのみを許可する

内部ネットワークからルータへの接続は,SSH,Ping のみを許可する

すべてのアクセスログを残す

レポートには,ルータの設定情報を課題の条件ごとに分かりやすくまとめ,最後に設定ファイルを添付すること.

アクセスログをレポートに載せる必要はないが,採点時に確認するのできちんとファイルを残しておくこと.ア クセスログは,/src/log/syslogに追加されるが,ルータを再起動するとログファイルを消去されるので,必要 であれば退避しておくこと.

各班の代表者は,/pub1/jikken/net/students/以下に保存用のディレクトリを作成して,そこにルータの設 定ファイルとアクセスログを置くこと.

例) Aグループ1班の場合

   % mkdir /pub1/jikken/net/students/groupA1

   % cp iptables.sh /pub1/jikken/net/students/group1a/

   % cp iptables.log /pub1/jikken/net/students/group1a/

各班の提出ディレクトリ名は変更される場合があるので,実験時に確認すること.

実験手順

1. iptablesのサンプルファイルをダウンロードして(実験実施時に指示),課題の条件を満たすように修正する 2. 修正が終わったら,ルータに転送して root権限で実行する

# sh iptables.sh

3. 正しく設定されているかを確認するには,iptablesコマンドを使用する.

現在アクティブなルールセットを表示する場合は次のようにする.

# /sbin/iptables -L -n

NATテーブルを確認する場合は次のようにする.

# /sbin/iptables -L -n -t nat

4. 接続テスト用サーバ等を利用して,実際に接続テストを行い,ファイアウォールが仕様どおりに動作してい ることを確認する.接続テストの結果は詳細に記述すること.

注意 計算機の設定によってはiptablesコマンドが/usr/sbin/iptablesの場合があるので注意すること.

以下にICE演習室での本実験の環境を記す.

各班用PCとファイアウォールについて

各班用PCとファイアウォールは各班の場所の所定(実験開始に指示)に,ディスプレイ・キー ボード・マウスを共有して設置されている.計算機自身は2台が図20のように,物理的に接続さ れているが,これらへの操作はCPU切替器によって切替えて行う.なお,切替え方法は以下の通 りである.

各班用PCとファイアウォールの切替え方法:コントロールキーを2回連続して押す.

図20: 実験用ネットワーク構成

各班用PCで使えるユーザー名及びパスワード(実験開始時に指示)

各班用ファイアウォールの管理者用パスワード(実験開始時に指示)

ICE側から各班用ファイアウォールにログインする方法 ssh root@icesc11 (1班の場合)

ファイアウォール転送用コマンド sftp または scp を使用

なお,上記の実験環境は状況によって急遽変更される場合もある.その場合は実験開始時に指示があるので,そ れに従うこと.

[課題4]異なる言語で実装したサーバ・クライアント間通信の動作確認(C言語・Java)

1. サンプルプログラムecho_client.c/echo_server.cを用意し,クライアントとサーバの動作確認をせよ.

コンパイル コンパイル方法は次のとおりである.

% gcc -o echo_server echo_server.c

% gcc -o echo_client echo_client.c 実行 実行方法は次のとおりである.

% ./echo_server

% ./echo_client "echo_serverのIPアドレス"

備考 echo_serverの待ち受けポート番号は50000に設定されている.

2. サンプルプログラムTestClient.java/TestServer.javaを用意し,クライアントとサーバが正常に動作 することを確認せよ.

準備 Javaプログラムをコンパイル・実行するためには,まずパスの設定を行う必要がある.

シェルにCshrc を使用している場合は,~/.cshrcに以下を追加すること.

set CLASSPATH = . (最後のピリオドに注意)

コンパイル Javaプログラムのコンパイルにはjavacコマンドを使用する.

% javac TestServer.java

実行 Javaプログラムの実行にはjavaコマンドを使用する.

% java TestServer % java TestClient "TestServerのIPアドレス 50000 備考 TestServerの待ち受けポート番号は50000に設定されている.

注意 Javaプログラムはエコー機能を実装しているわけではないので,Javaのクライアントとサーバの動作 確認の際にどのような通信を行うのか確認すること.ただし,ソースを解析しなくてもよい.

3. C言語プログラムとJavaプログラム間で適切に通信が可能であるか確認せよ.使用するプログラムの組は,

echo_client.cとTestServer.java,ならびにecho_server.cとTestClient.javaである.

注意 ソースリストの入手方法は実験実施時に指示する.

参考 今回のサンプルプログラムにはバグはないはずなので,両方のプログラムを同時に動かしても構わない.し かし,自分でクライアントプログラムとサーバプログラムを作る場合には,クライアントとサーバの動作確 認を一度に行うのではなく,既に動作しているサーバ(iceas.ice.nuie.nagoya-u.ac.jpのechoサーバ)

やクライアントプログラム(telnetコマンド)を利用して,片方ずつ動作確認してから,自分で作成したプ ログラム同士での確認を行うと良い.

[課題5(グループ実験)]ネットワークアプリケーションの作成

各自が1つ以上のプログラムを作成し,それらをまとめることで,グループ全体として何らかの結果を返すネッ トワークアプリケーションを作成せよ.なお,作成するアプリケーションの内容は自由に考えて構わない.ただ し,以下の条件を満たすこと.

アプリケーションは,1つの管理サーバプログラムと,複数の内部処理プログラムで構成される.

管理サーバプログラムは,内部処理プログラムと通信するソケットと,外部プログラムと通信するソケット を持ち,外部プログラムからリクエストがあると,各内部処理プログラムに処理を命令する.内部処理プロ グラムから処理結果が返ると,それらをまとめて適当な形式で外部プログラムに送信する.

外部プログラムとの通信(待ち受け)には,59630番ポートを使用する.外部プログラムへの送信は4096文 字以内とする.

各内部処理プログラムの処理内容は自由に決めてよい.処理の過程で Unix の標準コマンドや外部アプリ ケーションなど,自由に使用して構わない.

内部処理プログラムの処理結果をまとめて外部プログラムに渡す文字列の形式も自由に決めてよい.

グループ内における作業の分担を明確にし,レポートに記載すること.

外部プログラムはtelnetを想定する.ただし,各班で独自に作成してもよい.

管理サーバは基本的には内部処理はせず,内部処理プログラムの処理結果をまとめる役割とする.

半永久的にサービスを提供する.すなわち,1回の処理で終了せずに,繰り返しサービスを提供し続ける.

アプリケーション例 : 現在時刻とログインユーザ情報,CPUの利用状況を返す

システム構成図

内部処理 プ ロ グ ラ ム 1

(現 在 時 刻 情 報 の取 得 )

内部処理 プ ロ グ ラ ム 2

(ロ グ イ ン ユ ー ザ 情 報 の取 得 )

内部処理 プ ロ グ ラ ム 3

CPU

利 用 状 況 情 報 の取 得 )

59630番ポ ー ト

xxxxx

番ポ ー ト

yyyyy

番ポ ー ト

zzzzz

番ポ ー ト

管理サ ー バ

(処 理 結 果 のま と め )

aaaaa

番ポ ー ト

bbbbb

ポ ー ト

ccccc

番ポ ー ト

外 部 プ ロ グ ラ ム

telnet

ま た は 各 自 作 成 )

?????

番ポ ー ト

(最 大 4 096文 字 )

処理要 求 処理結 果 ネ ッ ト ワ ー ク

ア プ リ ケ ー シ ョ ン

※ 上記の図はプロトコルを表しているわけではない.

処理結果例

現在時刻情報(dateコマンドを利用)

¶ ³

2006 8 31日 木曜日 15:34:37 JST

µ ´

ログインユーザ情報(wコマンドを利用)

¶ ³

15:34:48 up 20:10, 1 user, load average: 0.00, 0.00, 0.00

USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT

hoge pts/0 iceas.ice.nuie.n 3:15pm 0.00s 0.06s 0.01s w

µ ´

CPU利用状況(topコマンドを利用)

¶ ³

47 processes: 46 sleeping, 1 running, 0 zombie, 0 stopped

CPU states: cpu user nice system irq softirq iowait idle total 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 100.0%

Mem: 1026944k av, 503652k used, 523292k free, 0k shrd, 82744k buff 276912k active, 48112k inactive

Swap: 0k av, 0k used, 0k free 217148k cached

PID USER PRI NI SIZE RSS SHARE STAT %CPU %MEM TIME CPU COMMAND 1 root 15 0 508 508 452 S 0.0 0.0 0:04 0 init

2 root 15 0 0 0 0 SW 0.0 0.0 0:00 0 keventd

...(以下略)...

µ ´

外部プログラムに送信する文字列(上記の取得情報を適宜整形)

¶ ³

date/2006年 8月31日 木曜日 15:34:37;USER/hoge,guest,root;CPU idle/100.0%

µ ´

完成したら課題3のファイアウォール下で動かしてみましょう.他のグループのアプリケーションにもアクセス してみるとよいでしょう(iptables.shを適宜修正すること).考察では,ファイアウォール下でのサービスの提供 についても述べよ(これだけが考察すべき事項ではないので注意すること).

作成したアプリケーションに関する仕様書を以下の点についてまとめ,各班で1部,レポートとともに提出す ること.

アプリケーションの概要(機能)と構成(および班員の担当箇所)

通信プロトコル

コンパイル方法・起動方法

サービスの利用方法(および使用方法)

未解決のバグ

特に,通信プロトコルについては概要ではなく,他の人がそれだけで通信部分が作れるような厳密なプロトコル を記述すること.また,各自の担当した箇所については詳細な説明を各自のレポートに記載し,担当しなかった 箇所については概要のみを説明すること.

関連したドキュメント