2009年12月12日土曜日

IEWB-RS-VOL2-V5 を使ってみる

CCIE R&S v4.0 に対応した IEWB の Dynamips 版 Wookbook の配布が開始 されました。
「MPLS VPN」というセクションができてます。早速、自宅で学習を始めようと思っています。

私の場合、Ubuntu 9.10 (amd64) 上で GNS3 を使ってラボを構築しています。

GNS3 のインストールは、こちら を参照してください。
GNS3 の初期設定は、こちら を参照してください。
IEWB-RS-VOL2-V4.1 については、こちら を参照してください。

仮想ラボの準備

  1. 下記のスクリプトを "setup_iewb-rs-vol2-v5.sh" というファイル名で保存します。
    #! /bin/bash
    # IEWB-RS-VOL2-V5 のラボを GNS3 用にセットアップするスクリプトです。

    # 使用する IOS イメージのパス
    # オリジナルの設定では、「c3725-adventerprisek9-mz.124-15.T10.bin, 3725, ADVANCED ENTERPRISE SERVICES)」を使用しているので、3725 の IOS が使用できれば一番よいです。
    # 他の機種では、仮想ルータのインタフェースの設定を変更しなければならないかもしれません。
    # NM-16ESW (Ethernet switch module, 16 ports) が使えるプラットフォームを選ぶ必要があります。
    # Dynagen Tutorial (Hardware Currently Emulated)
    # http://dynagen.org/tutorial.htm#_Toc193248012
    # で、使えるプラットフォームを確認します。
    IOSIAMGE='/var/images/c3725.image'

    # DRAM の容量
    # Cisco Feature Navigator
    # http://tools.cisco.com/ITDIT/CFN/Dispatch?act=rlsSelect&task=search&searchby=software
    # で DRAM の容量を調べることができます。
    DRAM='256'

    # IDLEPC 値
    IDLEPC='0x12345678'

    # 作業用ディレクトリ
    WORKDIR="$PWD/iewb-rs-vol2-v5"

    # トポロジー ダウンロード URL
    # Internetwork Expert のサイト
    # http://www.internetworkexpert.com/resources/iosonpc.htm
    # [Click here to download the Internetwork Expert Topologies for Dynagen]
    # のリンクを指定します。
    TOPO_URL='http://www.internetworkexpert.com/downloads/internetwork.expert.topologies.zip'

    # 初期設定ファイル ダウンロード URL
    # Member Site にサインインします。
    # http://members.internetworkexpert.com/
    # [R&S Dynamips Lab Workbook v5] をクリックします。
    # [Initial Configs] のリンクを指定します。
    # 各行に各ラボの URL を記述します。
    INITCONF_URL=(
    http://(秘密)/IEWB-RS-VOL-2-DYN.lab1.initial.configs.v5.00.zip
    :
    :
    )

    # トポロジーを展開後にできる sample_labs/internetworkexpert ディレクトリの位置
    SAMPLEDIR="$WORKDIR/sample_labs/internetworkexpert"

    # Network File のファイル名
    NETWORKFILE="$SAMPLEDIR/ine.routing.and.switching.topology.5.00.net"

    # 引数が与えられていなければ、使用方法を表示して終了します。
    if [ -z "$2" ]; then
    echo "Usage: $0 <仮想ラボを設置するディレクトリ> <ラボの番号>"
    exit 1
    fi

    # 与えられた引数を仮想ラボを設置するディレクトリに設定します。
    LABDIR="$1"

    # ラボの番号を設定します。
    LABNO="$2"

    # 作業用ディレクトリを作成します。
    [ -d "$WORKDIR" ] || mkdir "$WORKDIR"

    # 作業用ディレクトリに移動します。
    cd "$WORKDIR"

    # トポロジーをダウンロードします。
    zipfile=`basename "$TOPO_URL"`
    [ -f "$zipfile" ] || wget "$TOPO_URL"

    # トポロジーを含む ZIP ファイルを展開します。
    [ -d "$SAMPLEDIR" ] || unzip "$zipfile"

    i=1
    for url in ${INITCONF_URL[@]}; do
    # 初期設定ファイルをダウンロードします。
    zipfile=`basename "$url"`
    [ -f "$zipfile" ] || wget "$url"

    # 初期設定ファイルを含む ZIP ファイルを展開します。
    [ -d "$WORKDIR/lab$i" ] || unzip -d "$WORKDIR/lab$i" "$zipfile"
    i=$((i+1))
    done

    # 仮想ラボを設置するディレクトリを作成します。
    [ -d "$LABDIR" ] || mkdir -p "$LABDIR"

    # Network File を lab.net として仮想ラボを設置するディレクトリにコピーします。
    cp "$NETWORKFILE" "$LABDIR/lab.net"

    # 仮想ルータの設定ファイルを保存するディレクトリを作成します。
    [ -d "$LABDIR/lab_configs" ] || mkdir "$LABDIR/lab_configs"

    # NVRAM などを保存するディレクトリ (workingdir) を作成します。
    [ -d "$LABDIR/lab_working" ] || mkdir "$LABDIR/lab_working"

    # 仮想ルータ R1~R6、SW1~SW4、BB1~BB3 の初期設定ファイルを設置する。
    for f in "$WORKDIR/lab$LABNO/Initial Configs/Rack1/"*.txt; do
    cp "$f" "$LABDIR/lab_configs/"
    done

    for i in `seq 1 6`; do
    mv "$LABDIR/lab_configs/"r$i.txt \
    "$LABDIR/lab_configs/R$i.initial.config.txt"
    done

    for i in `seq 1 4`; do
    mv "$LABDIR/lab_configs/"sw$i.txt \
    "$LABDIR/lab_configs/SW$i.initial.config.txt"
    done

    for i in `seq 1 3`; do
    mv "$LABDIR/lab_configs/"BB$i.txt \
    "$LABDIR/lab_configs/BB$i.initial.config.v5.txt"
    done

    # Network File (lab.net) の改行を CRLF から LF に変換します。
    # また、コメント行、空行を削除します。
    perl -pi -e 's/\s+$/\n/' "$LABDIR/lab.net"
    perl -ni -e 's/\s*#.*//; print unless (/^\s*$/)' "$LABDIR/lab.net"

    # "image =" に、使用する IOS イメージのパスを設定します。
    perl -pi -e "s#image =.*#image = $IOSIAMGE#" "$LABDIR/lab.net"

    # "ram = " に DRAM の容量を設定します。
    perl -pi -e "s/ram =.*/ram = $DRAM/" "$LABDIR/lab.net"

    # "idlepc =" に使用する IOS イメージに対応する idlepc 値を設定します。
    perl -pi -e "s/idlepc =.*/idlepc = $IDLEPC/" "$LABDIR/lab.net"

    # "workingdir =" に NVRAM などを保存するディレクトリを設定します。
    perl -pi -e "s#workingdir =.*#workingdir = $LABDIR/lab_working#" \
    "$LABDIR/lab.net"

    # "cnfg =" に仮想ルータの設定ファイルのパスを設定します。
    perl -pi -e "s#cnfg =.*initial.configs/#cnfg = $LABDIR/lab_configs/#" \
    "$LABDIR/lab.net"

    # メモリの使用方法を最適化します。
    # 参考: Dynagen Tutorial (Memory Usage Optimizations)
    # http://dynagen.org/tutorial.htm#_Toc193248009
    # 既定値は、mmap = true, ghostios = false, sparsemem = false です。
    # 実メモリが十分ある場合には、mmap = false, ghostios = false にすると効率が良いようです。
    # 逆に実メモリが少ない場合には、mmap = true, ghostios = true にしましょう。
    # sparsemem は、dynamips の1プロセス当たりの仮想ルータを多くする時には、true にする必要があります。
    perl -pi -e 's/mmap =.*/mmap = false/' "$LABDIR/lab.net"
    perl -pi -e 's/ghostios =.*/ghostios = false/' "$LABDIR/lab.net"

    # TermServ を使用せずに、GNU Sreen で仮想ルータのコンソールを切り替えるので、
    # [[Router TermServ]] のセクションが不要となります。削除します。
    perl -ni -e 'print $_ unless (/\[\[Router TermServ/ .. /cnfg =.*RSTermServ/)' \
    "$LABDIR/lab.net"

    # 初期設定ファイルに合わせて、S0/? を S1/? に変換する。
    perl -pi -e 's#S0/(\d)#S1/$1#g' "$LABDIR/lab.net"

    # 仮想ルータへコンソール接続するためのスクリプトを生成します。
    cat <<'EOF' >"$LABDIR/console.sh"
    #! /bin/bash
    routers=(
    EOF

    perl -ne 'print " \"$1\"\n" if (/\[\[router (\w+)/i or /console = (\d+)/i)' \
    "$LABDIR/lab.net" >>"$LABDIR/console.sh"

    cat <<'EOF' >>"$LABDIR/console.sh"
    )

    for ((i = 0; i < ${#routers[*]}; i = i + 2)); do
    screen -t ${routers[$i]} \
    telnet localhost ${routers[$(($i + 1))]} >/dev/null 2>&1
    sleep 1
    done
    EOF

    # console.sh に実行権限を設定します。
    chmod +x "$LABDIR/console.sh"

  2. スクリプトを実行します。
    (例) "/var/labs/iewb/lab1" というディレクトリにラボ番号1 (Lab1) の環境を構築する場合

    ./setup_iewb-rs-vol-2-v5.sh /var/labs/iewb/lab1 1

仮想ラボの起動
  1. GNU Screen を起動します。

    $ screen

  2. gns3 の引数に Network File を与えて起動します。
    (例) Network File のパスが、/var/labs/iewb/lab1/lab.net の場合

    $ gns3 /var/labs/iewb/lab1/lab.net &

  3. ワークスペースでアイコンが重ならないように位置を調整する。(任意)

  4. 仮想ルータを起動する。

    GNS3 のコンソール => start /all

  5. console.sh で、仮想ルータのコンソールに接続する。

    $ /var/labs/iewb/lab1/console.sh

  6. 各仮想ルータにログインし、running-config を startup-config に保存する。

    R1#wr
    R2#wr
    :

  7. GNS3 の [ネットワークファイルに保存] ボタンを押して、仮想ルータの設定をエクスポートする。設定は、startup-config (NVRAM) からエクスポートされるため、事前に仮想ルータの running-config を startup-config に保存すること。



参考

0 件のコメント: