CCIE R&S v4.0 に対応した IEWB の Dynamips 版 Wookbook の配布が開始 されました。
「MPLS VPN」というセクションができてます。早速、自宅で学習を始めようと思っています。
私の場合、Ubuntu 9.10 (amd64) 上で GNS3 を使ってラボを構築しています。
仮想ラボの準備
- 下記のスクリプトを "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" - スクリプトを実行します。
(例) "/var/labs/iewb/lab1" というディレクトリにラボ番号1 (Lab1) の環境を構築する場合
./setup_iewb-rs-vol-2-v5.sh /var/labs/iewb/lab1 1
仮想ラボの起動
- GNU Screen を起動します。
$ screen - gns3 の引数に Network File を与えて起動します。
(例) Network File のパスが、/var/labs/iewb/lab1/lab.net の場合
$ gns3 /var/labs/iewb/lab1/lab.net & - ワークスペースでアイコンが重ならないように位置を調整する。(任意)
- 仮想ルータを起動する。
GNS3 のコンソール => start /all - console.sh で、仮想ルータのコンソールに接続する。
$ /var/labs/iewb/lab1/console.sh - 各仮想ルータにログインし、running-config を startup-config に保存する。
R1#wr
R2#wr
: - GNS3 の [ネットワークファイルに保存] ボタンを押して、仮想ルータの設定をエクスポートする。設定は、startup-config (NVRAM) からエクスポートされるため、事前に仮想ルータの running-config を startup-config に保存すること。
参考
0 件のコメント:
コメントを投稿