feature image

2020年11月26日 | ブログ記事

インターネットを作ってみよう【AdC2020 13日目】

この記事は traPアドベントカレンダー2020 の13日目(11/26)の記事です。
こんにちは、19の@temmaです。
普段はSysAd班で部内サービスの開発・運用をしています。

自作OS、自作言語、自作キーボードに自作PC、世はまさに大自作時代!!!

ということで、インターネットも自作しちゃおうというのが先日部内で開催したインターネット構築講習会なわけです。

そこで使った資料を外部公開しようかなと思ったので、以下では簡単に概要説明とハンズオンの初め方を説明します。

要求する前提知識は簡単なコマンドライン操作とSSH、Googleでの検索の仕方ぐらいで、学びの対象としては「普段のWebサービス開発では意識しないけれど知っておくと良い事」程度を想定しています。

基本的に資料を見ればハンズオンと並行して勧めていける形式になっているので、俺は俺の道を行くぜ!!うおうお💪💪という方は資料だけみて、早速インターネットを作り始めてください。

FujishigeTemma/InternetArchLecture
Contribute to FujishigeTemma/InternetArchLecture development by creating an account on GitHub.

講習会概要

先日の講習会では、参加者にインスタンスを配布しハンズオンを行いました。
具体的には、仮想的に立ち上げた複数台のVyOS/Ubuntuを用いてローカルネットワークを構築してもらった後、それらを一つのASとしてBGPでピアリングすることでインターネットを作ってもらいます。
(ASやBGPの解説もあるので、今わからない方でも大丈夫です。)

図1. ネットワークトポロジー

ローカルネットワークの作成ではIPアドレスの設定から始まり、NAT、StaticRouteing、OSPF、DHCPと実際の設定を通してネットワークの基礎を学習します。

その後、他のASとBGPでピアリングし、ネットワーク間でのルーティングを実現したら、講師サーバーに立っているルートDNSサーバーから委任される形で各自のドメインの権威サーバーを運用し、名前解決できるようにします。

ここまでできたら通常のインターネットと同様にドメイン名でアクセスできるようになります。

ハンズオン環境の構築

一人でハンズオンをすすめるためには、少なくとも2台のサーバーが必要になります。
ConoHaなりGCPなりでVPS(Ubuntu 20.04 LTS)を2台借りてください。

お金を使いたくねぇぜ!!というひとはVagrantとかでサクッと用意してくださってもいいですが動作確認はしてないです。
マシン間の接続をいい感じにすれば多分遊べます。

curl https://raw.githubusercontent.com/FujishigeTemma/InternetArchLecture/main/setup/setup.sh | bash

上記のスクリプトを実行すると下図の状態が準備され、各ノードにattachコマンドで接続することができるようになります。
例: attach rEX

rXXはrouter(VyOS)で、sXXはserver(Ubuntu 20.04 LTS)です。
初期の状態では、NICにIPアドレスが割り当てられていないのでその設定からはじめてください。(Chapter1)

図2. 演習環境

ちなみに、ハンズオン用のルーターやサーバーはコンテナ型の仮想化技術であるDockerとLXCを用いて動作しています。
これらのコンテナにvethを付与し、仮想ブリッジで接続したのが上記の状態です。
詳しくはsetupディレクトリ以下を参照してください。

最後に

手を動かして学ぶ知識は頭に残りやすいと言います。
この資料が少しでも皆さんの助けになれば幸いです!

その他、質問や誤っている点などがあればコメントやissueでお知らせいただけるとありがたいです!

この講習会は引退したto-hutohuさんが昨年開催してくださったものに資料を追加したものです。ありがとうございました。

明日は @mazrean さんの記事です。お楽しみに!

temma icon
この記事を書いた人
temma

19B 生命理工学院生命理工学系

この記事をシェア

このエントリーをはてなブックマークに追加
共有

関連する記事

2020年12月4日
【一緒に始めよう】VSTプラグインをつくる【AdC2020 21日目】
liquid1224 icon liquid1224
2016年12月7日
Clojure, Elixir でプロセス間通信 〜TCP通信でBF & UDS通信でなんでも掲示板〜
Double_oxygeN icon Double_oxygeN
2020年12月17日
一人でゲームを作ったハッカソン【AdC2020 34日目】
Komichi icon Komichi
2020年11月19日
ICPC国内予選2020参加記【AdC6日目】
tatyam icon tatyam
2020年12月21日
かけだしデザイナーが「ほぼ」1ヵ月間毎日ロゴを描いてみた話【AdC2020 38日目】
WhiteFox icon WhiteFox
2020年12月17日
JavaScriptの非同期処理についてのメモ【AdC2020 33日目】
reyu icon reyu
記事一覧 タグ一覧 Google アナリティクスについて 特定商取引法に基づく表記