Powered by SmartDoc

20031205 (2003/12/05)
Ver. 1.1

2003年12月5日
栗野 俊一
kurino@math.cst.nihon-u.ac.jp
http://edu-gw2.math.cst.nihon-u.ac.jp/~kurino/2003/ccna-ex/ccna-ex.html
情報通信ネットワーク論(演習)2003/12/05 の資料

目次

目的

この演習の目的は通りです。

ipchainsの利用(新規)
ipchains(1)を利用して、IP Masquarade機能を実現します。
  1. 最近のtoolはiptablesです。ipchainsと操作方法は、ほぼ、同じ、機能は、ずっと上という感じです。

Nat 箱の構築

実験ネットワーク

次のようなNetworkを構築する。

              TCP/Dump    [Global]       Internet
               |       192.168.3.0/26       |
        >------+----------------------------+-------<
               |                            |
               NAT-1                      NAT-2
            [192.168.1.1]             [192.168.1.1]
               |                            |
        >------+------<              >------+------<
               | 192.168.1.0/24             | 192.168.1.0/24
            [192.168.1.2]             [192.168.1.2]
              PC                            PC
                             [Private]

Private側は、同じAddres空間( 192.168.1.0/24 )を利用することに注意。

Global側は、普段、教室からInternetを利用するために利用するNetworkにし、IP AddressはDHCPで、自動的に設定するとよいでしょう。

Router としての設定

NAT-1/NAT-2はRouter として Configurationします。Configurationの内容は、次のようになります。

ただし、

とします。

ipchains の実行

次のようにipchainsを実行することにより、Net 192.168.1.0/24から他のNetworkへのパケットをIP Masquaradeします。

IP Masquarade の実行
[root@Linux-X /root]# ipchains -I forward -s 192.168.1.0/24 -d \
    0.0.0.0/0 -j MASQ
[root@Linux-X /root]# 

各ipchainsのオプション引数の意味

-I
Insert: Ruleの挿入を指示します。これが-Dだとdeleteつまり、削除になります。
forward
Ruleを登録する先( chain Name )になります。forwardの他に、inputやoutput等がありますが、Masquaradeするときはforwardと覚えておきましょう。
-s 192.168.1.0/24
変換を行うpacketeのsource (通信元) IP Addressの範囲を指定します。ここでは、Private Network ( 192.168.1.0/24 )のパケットが対象なので、このような指定になります。
-d 0.0.0.0/0
変換を行うpacketeのdestination (通信先) IP Addressの範囲を指定します。ここでは、全て変換を行うという意味で0.0.0.0/0を指定しています。
-j MASQ
-jオプションは本来、「何をするか」の指示を行う(2)のですが、今回は、masquaradeなのでMASQと指定します。

同じくipchainsで、現在の設定を確認することができます。

FireWall Rule の確認
[root@Linux-X /root]# ipchains -L
Chain input (policy ACCEPT):
Chain forward (policy ACCEPT):
target prot opt source destination ports
MASQ all ------ 192.168.1.0/24 anywhere n/a
Chain output (policy ACCEPT):
[root@Linux-X /root]# 

逆に、Ruleを削除するには、-Iの代わりに、-Dを使います。

Rule の削除
[root@Linux-X /root]# ipchains -D forward -s 192.168.1.0/24 -d \
    0.0.0.0/0 -j MASQ
[root@Linux-X /root]# 
  1. MASQは、「masquaradeする」。ACCEPTは、「受け入れる」。DENYは、「捨てる」。詳しくはmanを参照のこと。

実験 1

次の点を確認してください。

Nat 箱のカスケード

実験ネットワーク

次のようなNetworkを構築する。

              TCP/Dump    [Global]       Internet
               |       192.168.3.0/26       |
        >------+----------------------------+-------<
               |
               NAT-1
            [192.168.1.1]
               |
        >------+------< [Private 1 192.168.1.0/24]
               |
            [192.168.1.2]
               NAT-2
            [192.168.2.1]
               |
        >------+------< [Private 2 192.168.2.0/24]
               |
            [192.168.2.2]
               NAT-3
            [192.168.1.1]
               |
        >------+------< [Private 3 192.168.1.0/24]
               |
            [192.168.1.2]
              PC
                             [Private]

Private-1とPrivate-3は、同じAddres空間( 192.168.1.0/24 )を利用することに注意。

ipchains の実行

Nat-1/Nat-3は、実験1と同じです。Nat-2では次のように指定します。

Nat-2 の ipchains の実行
[root@Linux-X /root]# ipchains -I forward -s 192.168.2.0/24 -d \
    0.0.0.0/0 -j MASQ
[root@Linux-X /root]# 

実験 2

実験1と、同様なチェックをしてみましょう。

フィルタリング

ipchainsを利用することによってfirewall rule ( access control list )を書くことも可能(3)です。

  1. というか、本来ipchainsはfirewall ruleを記述するためのtoolとして設計されました。

ip address による filtering

次のようなruleを追加することによって、特定のip addressを持つHostへの通信を停止することができます。

数学 Web Server への access 禁止
[root@Linux-X /root]# ipchains -I input -s 192.168.1.0/24 -d \
    133.43.100.131/32 -j DENY
[root@Linux-X /root]# 

これによって、Private側からGlobal側への通信の内、133.43.100.133 ( www.math.cst.nihon-u.ac.jp )への通信が禁止されます。

禁止Ruleは、今回のHost単位( /32 )だけでなく、Network単位でも可能です。

数学科全体を禁止するのであれば、133.43.100.0/24と指定すると良いでしょう。

これらのRuleは、複数指定することも可能で、-I ( Insert :前に入れる)の代わりに、-A ( Append :後に加える)を利用することによって、複数のRuleを次々と順番に入れることができます。

これらのruleは、上から順番に適用され、どれか一つでも成立すれば、その時点でruleに指定された処理( DENY, etc ... )が実施され、それ以後のruleは、原則として適用されません。

ACCEPTとDENYを組合せることにより、細かく許諾して、残りを大雑把に禁止するといった利用が可能になっています。

port Number による filtering

FireWall Ruleとしては、ip address ( Network層のaddress )以外にも、Port Number (トランスポート層の情報)を利用して、Filteringが可能です。

例えば、次のようにしてhttp ( Port 80 )のfilteringを行い(4)、Webの参照を禁止することができます。

Web Server への access 禁止
[root@Linux-X /root]# ipchains -I input -s 192.168.1.0/24 -d \
    0.0.0.0/0 --destination-port 80 -j DENY
[root@Linux-X /root]# 

これにより、通常の通信は可能ですが、80 portを使う通信(すなわちhttp / Web Access )だけは禁止するといったことができます。

  1. 実験2で、filtering ruleがそのままになっている場合は-Dで、そのruleを削っておきましょう。

実験 3

実験1のNetworkで、Nat-1に色々なFiltering Ruleを追加し、実際に、Filteringがうまく行くことを確認しなさい。