この記事は traPアドベントカレンダー2020 の13日目(11/26)の記事です。
こんにちは、19の@temmaです。
普段はSysAd班で部内サービスの開発・運用をしています。
自作OS、自作言語、自作キーボードに自作PC、世はまさに大自作時代!!!
ということで、インターネットも自作しちゃおうというのが先日部内で開催したインターネット構築講習会なわけです。
そこで使った資料を外部公開しようかなと思ったので、以下では簡単に概要説明とハンズオンの初め方を説明します。
要求する前提知識は簡単なコマンドライン操作とSSH、Googleでの検索の仕方ぐらいで、学びの対象としては「普段のWebサービス開発では意識しないけれど知っておくと良い事」程度を想定しています。
基本的に資料を見ればハンズオンと並行して勧めていける形式になっているので、俺は俺の道を行くぜ!!うおうお💪💪という方は資料だけみて、早速インターネットを作り始めてください。
講習会概要
先日の講習会では、参加者にインスタンスを配布しハンズオンを行いました。
具体的には、仮想的に立ち上げた複数台のVyOS/Ubuntuを用いてローカルネットワークを構築してもらった後、それらを一つのASとしてBGPでピアリングすることでインターネットを作ってもらいます。
(ASやBGPの解説もあるので、今わからない方でも大丈夫です。)
ローカルネットワークの作成では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)
ちなみに、ハンズオン用のルーターやサーバーはコンテナ型の仮想化技術であるDockerとLXCを用いて動作しています。
これらのコンテナにvethを付与し、仮想ブリッジで接続したのが上記の状態です。
詳しくはsetupディレクトリ以下を参照してください。
最後に
手を動かして学ぶ知識は頭に残りやすいと言います。
この資料が少しでも皆さんの助けになれば幸いです!
その他、質問や誤っている点などがあればコメントやissueでお知らせいただけるとありがたいです!
この講習会は引退したto-hutohuさんが昨年開催してくださったものに資料を追加したものです。ありがとうございました。
明日は @mazrean さんの記事です。お楽しみに!