体験しながら学ぶ ネットワーク技術入門を購入しましたので、こちらの勉強記録を乗せる記事となります。
諸々に気を付けながら、主に自身のモチベーションアップの目的で投稿。
意気込み
ネットワーク勉強するぞ!
Chapter1 検証環境を作ろう
wslを利用してUbuntuをインストール
まずは検証環境をつくるべく、Hyper-v上WSL2を利用してUbuntu 20.04をインストールする
wsl --install --distribution Ubuntu-20.04
インストール中: Ubuntu 20.04 LTS
Ubuntu 20.04 LTS はインストールされました。
Ubuntu 20.04 LTS を起動しています...
上記を実行したところ、別のPorewshell画面が起動したが問題発生、さっそくエラーが、
Installing, this may take a few minutes… WslRegisterDistribution failed with
error: 0x800701bc Error: 0x800701bc WSL 2 ???????????? ??????????????????????? https://aka.ms/wsl2kernel ?????????
調べたところどうやらLinuxカーネルのバージョンが古いようで、下のDocsの通りやると無事エラーが解決。
https://learn.microsoft.com/ja-jp/windows/wsl/install-manual#step-4---download-the-linux-kernel-update-package
パスワードやrootユーザーの設定などもろもろする。
基本この後の作業はrootユーザーで実施。
セットアップスクリプトの実行
本書用に用意されたセットアップスクリプトをUbuntu上で実行するよう。
規定でWSL上のUbuntuにWindowsのCドライブが/mnt/c/でマウントされるので、Windowsでセットアップスクリプトを落とした後、Ubutuから実行する。
セットアップスクリプトで以下を実施。
- DNSクライアントの設定
DNSサーバの指定をWSLからの生成ファイルでなく、固定で持たせる。 - Ubuntuのアップデート
- Dockerファイルのインストール
- tinetのインストール
- wsl.confの設定
- ホスト名の変更
- reslve.confの自動生成の無効化
- Dockerの自動起動
- defaultログインユーザーの指定
驚くことに設定ファイルだけでなく、設定が問題なく完了しているか確認するスクリプトも用意されている。。!
WSL2の使い方
よく使うコマンドを抜粋
WSLは再起動のコマンドがないため、起動停止したのち起動する
wsl --distribution <WSLインスタンス名> #WSLインスタンスの起動(すでに起動している場合はログイン)
wsl --distribution <インスタンス名> --user <ユーザー名> #指定したインスタンスに指定したユーザーでログイン
wsl --list --verbose #インスタンスの状態確認
wsl --shutdonw #すべてのインスタンスの停止
wsl --terminate <WSLインスタンス名> #指定したインスタンスの停止
WSLインスタンスとWindowsのファイルのやり取り
Doerkerの使い方
よく使うコマンドを抜粋
docker exec #実行中のコンテナ内でコマンドを実行
docker ps #起動しているコンテナの一覧を表示
docker image #ダウンロードしたイメージの一覧を表示
docker start #起動
docker stop #停止
tinetの使い方
よく使うコマンドを抜粋
tinet up -c <設定ファイル> #設定ファイルからネットワーク機器のコンテナを作成できる
tinet conf-c <設定ファイル> #設定ファイルからコンテナの設定をする
tinet test -c <設定ファイル> #設定ファイルからテストコマンドを実行
tinet image -c <設定ファイル> | dot -Tpng <ファイル> #ネットワーク環境の可視化、事前準備としてGraphvizのインストールが必須
検証環境構築
用意されているyamlファイルをtinetコマンドからWSLにて実行し検証環境を作成。コマンドや実行ログは無害化が面倒なので割愛。
作成された環境は家庭のPCからインターネット接続する環境に寄せた構成となっている。
家庭内LAN→インターネット→サーバーサイトの3つのブロックに分けてあり、スイッチ、ルーター、FW、DNS、LBなどが配置される。
最終的にはCurlで指定したURLからコンテンツが返ってくるか確認しOKであれば検証環境の構築は完了。
curl -k https://www.example.com/
sv1.example.com