ネットワーク・クラウド

2022/07/31

WireSharkの入門動画が分かりやすい

WireSharkの入門動画が分かりやすかったので、自分用にリンクをメモ。

【参考】
【#16 ITニュース】WireSharkを使ってDHCP通信の謎を解く - YouTube

【#16 Wire Sharkを使って見た】セキュリティのお勉強 - YouTube

【#17 Wire Sharkを使って見た 2】HTTPS TLS セキュリティのお勉強 - YouTube

【#19 Cookie 】Wireshark 解析 セキュリティのお勉強 - YouTube

インフラ/ネットワークエンジニアのためのネットワーク技術&設計入門はインフラエンジニア向けの良本だ: プログラマの思索

IPアドレッシングの計算方法: プログラマの思索

GNS3上でネットワーク図を作って、pingを色々試せるようになったが、どんなパケットが流れているのか、知るにはWireSharkが必要になる。
GNS3では、WireSharkが付属していて、ルータ間、スイッチ間のパケットを見れる。
しかし、ネットワーク初心者にとってWireSharkは難しい。
理由は、WireSharkで表示されるデータをどのように見ればよいか、分からないからだ。

書籍も色々読んでみたが、実際に動かしていないからイメージもできない。
だが、動画を見て、実際に動くところを見てようやくイメージが湧いてきた。

インフラエンジニアの人に聞くと、スイッチやルータでオンプレのネットワークを作ったとしても、何か障害があれば、WireSharkを見る時が多いらしい。
実際にどんなパケットが流れているのか、見る必要あるらしい。

特に2020年頃から、いろんな分野の解説サイトの動画が出てきて、非常に便利になったと思う。
プログラミングもネットワークも、実際に動かしてみなければ理解しづらい。
そういう意味では、今は動画を見て、手っ取り早く初心者レベルをクリアすればいいのだろう。
基本的な概念さえ押さえれば、後は、書籍や勉強会などでいくらでも知識の幅も深さも広げられる。

| | コメント (0)

2022/01/09

プログラミングしてる時はでっかいピタゴラ装置を作ってるみたいな感じ

「プログラミングしてる時はでっかいピタゴラ装置を作ってるみたいな感じ」というツイートを見つけたすごく共感した。

【参考】
Rui UeyamaさんはTwitterを使っています 「少数派の意見かもしれないけど、プログラミングしてるときはでっかいピタゴラ装置を作ってるみたいな感じで、数学が関係ある感じがあんまりしない。」 / Twitter

結城浩さんはTwitterを使っています 「@rui314 デバッグしてるときと証明読んでるときはなんか似てる。素直に読みつつ穴探ししてるみたいな感覚。」 / Twitter

英語勉強中さんはTwitterを使っています 「@rui314 めちゃくちゃわかります。僕は書いてるとき数学のことなんか考えてないです」 / Twitter

akipiiさんはTwitterを使っています 「プログラミングはこの感覚に近いな」 / Twitter

プログラミングは「ブロックを組み合わせる」感覚に似ている: プログラマの思索

「プログラミングのできる羊とできない山羊を区別する方法」の記事のリンク: プログラマの思索

「60%の人間はプログラミングの素質がない」記事のリンク: プログラマの思索

プログラマに必要なスキル: プログラマの思索

プログラムを書いている時、数学の知識を使っているかと言われるとそうではない気がする。
むしろ、APIやFWのライブラリをまずは頭に叩き込んでおき、自分が実装したい目標に対して、それらAPIをどうやって組み合わせて意図通りに動かすか、に注力している。
ちょうど、ブロックで巨大な積み木を組み立てている感じに似ている。

だから、「プログラミングしてるときはでっかいピタゴラ装置を作ってるみたいな感じ」にはとても共感するし賛同する。

たとえば、RDBでSQLをデータ抽出したり、機械学習や深層学習のライブラリを使って母集団を推定したり、マーケットを予測したり、Web上の通信を暗号化したりする時、数学の理論はAPIやライブラリの中に隠れてしまっている。
それらライブラリを呼び出すだけで、高尚な理論を使えるのは素敵だが、だからと言って、プログラミングが楽になっているわけではないと思う。

一方、やりたいことを実現するには、PythonやRDB、Webサーバー、Dockerなどの開発環境を揃えて、Githubで構成管理し、CIツールでビルド&デプロイできるようにして、Jupyter を動かせるようにしたり、IntelliJなどの開発環境を構築したり、とプログラミングの前準備がすごく多い。
普通の初心者はこの部分で挫折するのだろうと思う。

僕自身、新しい環境を揃えてプログラミングスタイルを覚える時は割と苦痛に感じる時もあった。
Ruby on Railsもそうだし、AWSでの環境構築、GNS3でのCiscoルータ&スイッチの環境構築の時もそうだ。
Python+Anacondaはまだマシだった。
プログラミングは奥が深い。

| | コメント (0)

2021/11/07

東大の講義内容が「AWSではじめるクラウド開発入門」本で出版されたらしい

東大の講義内容が「AWSではじめる クラウド開発入門 (Compass Data Science)」本で出版されたらしく、評判がよいのでメモ。

コードで学ぶAWS入門

AWSではじめる クラウド開発入門 | マイナビブックス

tomomano/learn-aws-by-coding: コードで学ぶAWS入門

Keisuke NishitaniさんはTwitterを使っています 「クラウド開発って何かと思ったら東大の講義内容らしい。今って大学でAWS習ったりするのか AWSではじめる クラウド開発入門 (Compass Data Science) https://t.co/HlJLizJ5QV」 / Twitter

是村 @ 多言語学習 & カスタマーサクセスさんはTwitterを使っています 「@Keisuke69 元はこれだと思うんですが、これの2020年度版を見てこんなの大学で教える時代なんだなーと思ってました。 https://t.co/HeZ4eQW1Hm」 / Twitter

Keisuke NishitaniさんはTwitterを使っています 「@JKoremura あーこれ!ちょっと前に話題になってたやつですよね。こういうの大学で教わるのはすごい時代ですよねー」 / Twitter

是村 @ 多言語学習 & カスタマーサクセスさんはTwitterを使っています 「@Keisuke69 いやー、ほんとそうです。そのうち何処かのタイミングでは、中途よりも新卒取る方が実践向きみたいな時期が来るかもですね。」 / Twitter

Shotaro SuzukiさんはTwitterを使っています 「@Keisuke69 これ先週読了しました。とっかかりとして良い内容ですね。」 / Twitter

最近、AWSに触っているがまだまだ本質を分かってない。
何となくEC2を立てて、色んなサービスを組み合わせれば動くのだが、何か分かった気がしない。
たぶん、もっと実際のアプリを作らないと、経験して初めて分かった気にならないのだと思う。

ツイートを読むと、東京大学2021年度S1/S2ターム システム情報学特論 "AWSを使ったクラウドコンピューティング入門" 講義資料が書籍として出版されたらしく、割と評判が良さげ。
ハンズオンでチャットボットを作るみたいだが、サーバーレスや機械学習、ディープラーニングまで触れられるのは、AWS初心者にとっては良さげ。

こういう講義ノートを読んでいると、下記ツイートのように、メインフレームのCobol開発者やオンプレミスの業務系WebシステムのJava開発者は、自分のスキルを棚卸しして、もう一度新しい技術を勉強し直す気概が必要だろうと思う。
過去の経験だけで仕事できる時代は終わった。
中年や年寄りにはそんなに甘くない。

Masanori Kusunoki / 楠 正憲さんはTwitterを使っています 「ざっと眺めたところクラウド開発といいつつEC2、Docker、サーバーレスといった足回りの話だけでなく、深層学習やらチャットボットの作成やら諸々ウォークスルーでハンズオンも充実してて、今時は前期課程でここまでやっちゃうのか高速道路スゲーぞってなったので、取っかかりの入門書としては良さげ」 / Twitter

Masanori Kusunoki / 楠 正憲さんはTwitterを使っています 「東大だけに自作CPUみたいにクラウドをつくる話を期待したらAWS上での開発か。学生時代くらいはラズパイ並べて自作クラウドをつくるとか贅沢な時間を使って欲しいけど、今時の若手はUTPケーブルの圧着もサーバーのラッキングもやったことなくサーバーはクリックすると生えてくる感覚という印象(老害)」 / Twitter

easter2501さんはTwitterを使っています 「若手が仮想化やクラウドに特化してくるならロートルはさらに泥臭い領域に縄張りを求めた方が生存率は上がるだろうな。 当然クラウドの勉強もしなきゃならんが。」 / Twitter

| | コメント (0)

2021/11/03

DockerとVirtualBoxの違い

DockerとVirtualBoxの違いをメモ。
インフラ初心者の自分のためのメモ。

【参考】
Dockerとは何か?初心者にもわかりやすく仕組みやメリットを解説

「Docker」を全く知らない人のために「Docker」の魅力を伝えるための「Docker」入門 - Qiita

VirtualBox - DockerとVirtualBoxの違いについて|teratail

DockerとVirtualBoxの違い - Qiita

「Vagrant」と「Virtual Box」の違い - Qiita

初心者のための Vagrant, Chef, VirtualBox の関係 - Qiita

vagrantのネットワークについて - Qiita

サーバー仮想化には、ハイパーバイザー型とコンテナ型がある。
ハイパーバイザー型はVirtualbox。
アプリケーションを実行するためにはまずゲストOSを起動する。
CPUやメモリ、ディスクなどのリソースも多く消費する。

コンテナ型はDocker。
コンテナはホストOSから見ると単一のプロセスとして扱われる。
カーネル部分をホストOSと共有するため、リソース使用量が非常に少ない。

以前どこかのZoomで、サーバ仮想化の技術がどんどん進化しているけど、コンテナ型のDockerは結局、Unixのプロセスと同じだよね、という発言を聞いた時があった。
その時は、そんなものかと特に感動しなかったが、ようやくその意味に気づいた。

コンテナが流行るのは、Infrastructure as codeの流れからして、開発環境やサーバー環境の構築を全てテキストで管理できること。
WindowsでもMacでもAWSでもどこでも同じテキストで構築できる。
そうすれば、作った環境を使い捨てしながらどんどん開発できる。

クラウド時代になって、オンプレミスで物理的なハードディスク装置の冗長化構成などを考える必要がなくなった。
それは単に、物理環境から仮想化環境に変わったことを意味しているわけではない。

一度作った環境は使い捨てにできる。
いつでも同じ環境を復元できるから。
すると、冗長化構成した時も、複数のノードを管理するアプリが重要であって、管理される側のノードはどんどん使い捨てていいというネットワーク設計にすればよい。
かつては、メモリやハードディスク、サーバーは貴重なリソースとして扱う必要があった為に、大切に扱うような設計手法ばかりだったが、今は使い捨てを前提とした設計手法に変わった、ということだろう。

そんな事を考えながら、改めて「ネットワークの根本問題は何だろうか?」を考えている。
ネットワークのQCDをバランス良く実現するためには、現状の技術の制約ではどんな課題があって、どんな設計手法が必要になるのか?
現代のように次から次へと新しい技術が生まれたとしても、その背景にある根本的な問題は変わらないのではないか?と推測している。

たとえば、ネットワークスペシャリスト試験の難易度|ネットワークスペシャリスト.comにこんな一節があった。

(引用開始)
なぜ難易度が高いのか?
これは「午後問題が難しい」ことに尽きます。
また出題範囲が広く、何がどういった形で出題されるかが読めないため対策が立てにくいことも合格を難しくしている要因の1つです。午前試験に関しては過去問の流用が多いので過去問の反復練習で容易に突破できますが、午後問題についてはそうはいきません。
午後試験をいい表した言葉の中で私が印象に残っているのは、「午後試験は、受験者のうち10%未満しか経験したことのない技術についての説明を読み、基礎知識を応用して解く試験である」というものです。
実際に近年だけを見ても、VPFやSDN、VoIP、IPv6、VXLAN、WAN高速化装置、UDP/QUIC、IPsecの詳細など新技術の出題を挙げればきりがありません。
このような問題に対処するためには確かな知識・技能に加え、その応用力が求められます。
(引用終了)

つまり、新しい技術が生まれたとしても、基本的な技術であるOSI7層モデル、ルーティング、スイッチング、TCP、信頼性・効率性・セキュリティなどを理解していれば、問題の本質を見抜けるはずだ。

たとえば、最近のニュースでは、楽天モバイルの普及に苦労している記事を見かける時があるが、基地局まで仮想化してしまおうとする楽天の仮想化技術にはとても興味はある。

楽天が通信網の「完全仮想化」技術をドイツに輸出、目指すはAWSで稼ぐアマゾン | 日経クロステック(xTECH)

楽天モバイルの「世界初、完全仮想化」ネットワーク、分かりやすく説明するとどうなる?:OpenStack Daysでカーン氏が解説 - @IT

CCNAの感想: プログラマの思索

ネットワークの根本問題は何か~昨今のIT技術と時代の変化についての考察: プログラマの思索

Dockerは仮想スイッチと仮想イメージの両方を持つ: プログラマの思索

SDNアーキテクチャの本質は巨大な仮想L3スイッチを実現したことではないか: プログラマの思索

他にも色々考えていく。

| | コメント (0)

2021/10/30

AWSサービスとSW品質特性のマッピングはどうなるか

ふと思いついてメモして、Blogに書くまで昇華できていないアイデアを書き殴っておく。
AWS初心者のロジカルでないメモ。

AWS Fargate とは?「コンテナ」と「仮想マシン」の違い|AWS上のコンテナ関連のサービス | FEnet AWSコラム

AWS Fargateとは?Amazon ECSとの関係性やメリット・デメリットを解説|コラム|クラウドソリューション|サービス|法人のお客さま|NTT東日本

AWSサービスとSW品質特性のマッピング一覧を作ることで、クラウドが何を解決しようとしているのか、整理したいと思っている。

AWSの最大の恩恵は移植性だろう。OSパッチやセキュリティパッチの作業から基本は解放される意義は大きい。
他にも、障害耐性などの機能性やAutoScalingなどの効率性もあるだろうが、盲点なのは保守性ではないだろうか。

Infrastructure as Codeにより、サーバー構築は全て構成管理の配下に置かれ、保守性を大きく担保する。
しかし、それはアプリケーション層のApacheのhttpd.confの構成管理を意味しているわけではない。
むしろ、AWSがNW機器の物理的実体からデータプレーン、コントロールプレーンという論理的実体へ分離することで、膨大なネットワーク機器を一括管理し構成管理できるようにした点が大きな利点のはず。
AWS上で「データプレーン」を提供しているのは「AWS Fargate」と「Amazon EC2」、AWS上で「コントロールプレーン」を提供しているのは「Amazon ECS」と「Amazon EKS」です、という文言を偶然拾って、ああそういうことなのか!と気づきを得た。
だから、Kubernetesが画期的な技術なわけだ。
CCNAを取得したおかげでこの辺りの意義がなんとなく実感できたから。

インフラ関係のPJをレビューしていていつも思うのは、専用回線の切り替えやDNS切り替えだけのNWリプレースの作業のPJで割と本番障害が多くて、なぜたかがNW機器の入れ替えぐらいでそんなに作業ミスが多いの?といつも思ってた。
DNS切り替えなんて所詮、向き先を変えるだけでしょ、と思ってた。
たぶん、その背後には、数多くのNW機器があり、その設定ファイルを手作業で書き換えて、手作業で検証する必要があって大変なのだろう。
だから、NW層のレベルで構成管理できる意義はとても大きいのだろうと推測している。

| | コメント (0)

2021/08/01

CISOは経営がわかる情報セキュリティ最高責任者である

CISOハンドブック ――業務執行のための情報セキュリティ実践ガイドを読んで、CISOは経営がわかる情報セキュリティ最高責任者であると知った。
ラフなメモ。

CISOハンドブック ――業務執行のための情報セキュリティ実践ガイドは、セキュリティの本というよりも、IT技術者が経営層になった時、こういうふうに考えたり行動していくべきで、こういう考え方を持つべき、という点が参考になった。
既存の経営陣に情報セキュリティの重要性を認識してもらうよりも、IT技術者自身が経営の知識を持つ方が手っ取り早いし、その方が実際はうまくいくと思う。

リスク管理は、予想される潜在リスクへの対策だけでなく、想定よりも状況がうまく行った時に備える場合もある。
たとえば、ベンチャー企業が社員20名から200名へ急激に成長した時、事業拡大の速度が速い分、いろいろな歪が出てくる。
上手く行っていたチームも、業務量が増えてメンバーが増えると、チームが回らなくなる。
ソフトウェア開発では人員増はうまくいかないという先入観がありすぎて、人員増を極力抑えるのは失敗しやすい。

事業が予測よりもうまくいくと、問題が少しずつ表面化する。
そこで、こんな対策がある。
業務をアウトソースして、固定費(人件費)費を変動費化する。
商流を変えて、固定費(人件費)を販管費にする。
業務をシステム化して効率化することで、固定費(人件費)を抑制する。

組織的には、事業や業務の観点で組織構造を変えて、チームを分けたり増やしたりする。
チームリーダーを社内で育成する。
それでも不足するなら、リーダーを外部から採用する。

つまり、良い状況に変わることも一つのリスクとみなして、リスク対策は考えるべき。

| | コメント (0)

2021/07/18

IPアドレッシングの計算方法

IPアドレスの計算方法について、理解したことをメモ。
自分のためのラフなメモ。

【参考】

③サブネットマスクとプレフィックス長の2つを覚える ? ランスルネット

④サブネット化したときのホストアドレスと2進数 ? ランスルネット

IPアドレス サブネットマスク・プレフィックス長 早見表 ? ランスルネット

①サブネット化 のメリットの理解 ? ランスルネット

IPアドレッシングを基本から復習しましょ! その16 | ネットワークのおべんきょしませんか?

社内のネットワーク設計でもオンプレ環境でもAWSのVPCのサブネット分割でも、IPアドレスやネットワークアドレス、CIDERの計算は必要。
IPアドレスを計算するには、サブネット早見表を覚えることと同じ。

【サブネットマスク早見表】
1の個数 ビットパターン SubnetMask 【区切り位=NWアドレスの倍数】 サブネット個数
1 10000000 128 128 2
2 11000000 192 64 4
3 11100000 224 32 8
4 11110000 240 16 16
5 11111000 248 8 32
6 11111100 252 4 64
7 11111110 254 2 128
8 11111111 255 1 256

サブネットマスク早見表の覚え方はコツがある。
1bitの個数=8-0bitの個数 ⇒255-2^(0bitの個数)=Subnetmask から計算すればいい。

例:Subnetmask=255.255.255.240 ⇒255-240=15=2^4-1 ⇒8-4=4 ⇒/24+/4=/28
例:/27=24+3 ⇒1bitが3個 ⇒0bitが5個 ⇒255-31=224 ⇒Subnetmask=255.255.255.224

たとえば下記の例題みたいな感じ。

【例題】
192.168.1.0のネットワークアドレスを255.255.255.192でサブネッティングすると、IPアドレスの範囲は何か?

255-192=63 ⇒63=2^6-1 ⇒NWアドレス=64の倍数
サブネットのネットワークアドレスは、第4クオテットが64の倍数になる
サブネットは4個出来上がる
192.168.1.0
192.168.1.64
192.168.1.128
192.168.1.192
⇒ ブロードキャストアドレスは、ネットワークアドレス-1になる。
192.168.1.63
192.168.1.127
192.168.1.191
192.168.1.255
⇒ IPアドレスの範囲は、ネットワークアドレス+1~ブロードキャストアドレス-1になる。
192.168.1.1 ~ 192.168.1.62
192.168.1.65 ~ 192.168.1.126
192.168.1.129 ~ 192.168.1.190
192.168.1.193 ~ 192.168.1.254

【例題】
172.16.0.0のネットワークアドレスを/19のサブネットマスクでサブネッティングしたとき、サブネットのネットワークアドレスは?
IPアドレスの範囲は?

/19=/16+/3
⇒8-3=5
⇒NWアドレス=2^5=32の倍数
⇒ ネットワークアドレスは、第3クオテットが0も含めた32の倍数になる
サブネットは8個できあがる
172.16.0.0
172.16.32.0
172.16.64.0
172.16.96.0
172.16.128.0
172.16.160.0
172.16.192.0
172.16.224.0
⇒ 最初のサブネット172.16.0.0のブロードキャストアドレスは、172.16.32.0-1 より、
172.16.32.0 - 0.0.0.1 = 172.16.31.255
⇒ 最初のサブネットのIPアドレスは、ネットワークアドレス+1~ブロードキャストアドレス-1 より、
172.16.0.1~172.16.31.254
他も同様。

「インフラ/ネットワークエンジニアのためのネットワーク技術&設計入門」の通り、IPアドレッシングは要件さえケマれば、計算方法は決まっているので、テトリスみたいに決まる。

インフラ/ネットワークエンジニアのためのネットワーク技術&設計入門はインフラエンジニア向けの良本だ: プログラマの思索

Ciscoコマンドで理解したこともリンクしておく。
Linuxコマンドと別物で全く異なるので、理解に時間がかかった。

アクセスリストの設定パターン: プログラマの思索

NATの設定パターン: プログラマの思索

スタティックルートの設定パターン: プログラマの思索

Ciscoのshowコマンド一覧: プログラマの思索

| | コメント (0)

プログラマが「何をやっているか分からない」「何が分からないか分からない」状態から脱出する記事がとても良い

プログラマが「何をやっているか分からない」「何が分からないか分からない」状態から脱出する記事がとても良いのでメモ。

【参考】
(1) 出来るプログラマーやエンジニアの方でも「何をやっているか分からない」「何が分からないか分からない」状態に陥りますか?その時は、どの様にして対処・解決しますか?に対するYuki Sonodaさんの回答 - Quora

RubyコミッタのYuki Yugui Sonodaさん (@yugui)もこんな問題意識を持たれていたらしい。

(引用開始)
私は出来るエンジニアじゃないせいか、何かちょっと経験の浅い分野のことをやると「何をやっているか分からない」「何が分からないか分からない」状態に陥ります。
それで、Stack Overflowで調べたコード片をコピペして動かすことがあります。
最近はGradleのビルドスクリプトの書き方が本当に何も分からなくてStack Overflowに世話になりました。
(引用終了)

Yuki Yugui Sonodaさん (@yugui)の回答なので、本当によく考えられている。
こんな手順を踏む。

チュートリアルやGetting Startedのような案内文書があれば、写経して動かしてみる
→先ほど体験したつまずきや未知の用語を手がかりとしながら概念を理解する
→良い実例を読むとともに利用できる資源を網羅する
→実際にやってみて経験を積む

僕も、Pythonのデータ分析、機械学習&深層学習、ソフトウェア統計分析、Ciscoネットワークなどを初めて勉強した時、同じような手順を踏んでいたのを思い出した。

上記の手順をもう少し深堀りして考えてみると、野中郁次郎先生のSECIモデルを連想させる。
あるいは、コルブの経験学習理論を連想させる。
この辺りも考えてみたい。

SECIモデルは知識の再利用モデル、または、実践知を生み出すモデルだ: プログラマの思索

「経験学習」とは?学習プロセスや促進させるためのポイントなどご紹介 | BizHint(ビズヒント)- クラウド活用と生産性向上の専門サイト

【公開】XP祭り関西2014講演資料「KPTによるプロセス改善~あなたはPDCAを回したことがありますか?」 #xpjugkansai: プログラマの思索

| | コメント (0)

2021/07/04

CCNAの感想

CCNA(Cisco Certified Network Associate)を取得したので感想をラフなメモ。
ネットワーク初心者のメモなので後で直す。

【参考】
CCNAイージス:CCNA(200-301)Web教科書

記憶術で覚えるTCP/IP⑦アプリケーション層プロトコル ? ランスルネット

シスコIOSコマンド一覧 | IT SKILL MAP

Ciscoルータ/Catalystコマンド一覧 - ネットワーク入門サイト

Cisco Packet Tracer でネットワーク構築実践 #1 | matsublog

GNS3の設定方法、操作方法の解説

Cisco IOS images for Dynamips - GNS3

L2 Switching Simulation - GNS3

【1】Ciscoコマンドをどこまで身につけられるかが鍵

ERP導入や業務システム開発、RedmineやJenkinsなどの開発環境構築の経験はあるから、CiscoコマンドもLinuxコマンドと似たようなものだろう、と思っていたが間違っていた。
ルータやスイッチへ投入するCiscoコマンドは、データリンク層、ネットワーク層のプロトコルを制御するために、数多くのコマンドがあり、オプションがある。

スイッチなら、VLAN、VTP、DTP、STP、RSTP、PVST、PortSecurity、etherChannel、音声VLAN、CDPなど。
ルータなら、IPアドレッシング、カプセル化、OSPF、RIP、FIGRP、スタティックルート、フローティングスタティックルート、デフォルトルート、ネットワークルート、HSRP、ACL、NAT、DHCP、ARP、ICMP、NTPなど。
他にも、AAA、Radius、SNMP、Syslog、DNS、SDN、SD-Access、無線LAN、IPv6、QoSなど。

Ciscoルータ/Catalystコマンド一覧のリンク: プログラマの思索

Ciscoのshowコマンド一覧: プログラマの思索

スタティックルートの設定パターン: プログラマの思索

アクセスリストの設定パターン: プログラマの思索

アクセスリストの設定パターン: プログラマの思索

ネットワーク学習のためのチートシートのリンク: プログラマの思索

この広大な範囲がネットワーク初級者レベルなので、CCNP、CCIEのレベルの高さはすごすぎ。
これを暗記だけで乗り切れる人は相当すごいなと思う。

勉強が難しいのは、ルータやスイッチの環境を構築するのが難しい点にあると思う。
Ciscoルータやスイッチをメルカリなどで購入して自宅に構築するのは正直手間がかかり過ぎる。
今なら、シミュレータやエミュレータがあるので、それらを使って慣れた方が早いと思う。
Linux上にWebサーバー構築と同様に、自分でルータやスイッチをつないで、実際に通信してみなければ、どこに落とし穴があるかわからない。

ITの技術や知識はツールの習得と表裏一体である: プログラマの思索

実際に体験したが、ネットワーク・トポロジーのサンプルがないと、初心者にはきつい。
適当なトポロジーでは、pingすら通らない。
個人的には、「GNS3によるネットワーク演習ガイド ――CCENT/CCNA/CCNPに役立つラボの構築と実践」のサンプルが一番役立った。
スイッチはSTPぐらいだが、ルータはOSPFからMPLS、IPSecまで一通り試すことができて、こんな通信をやっているのか、と気付きがあった。

一方、Ciscoコマンドを操れるようになれれば、ルーティングやスイッチングで何が問題で対処しようとしているのか、が分かってくると思う。
実際、ルータやスイッチの設定では、高速で安定した通信を確保するためにルートの冗長性を確保したり、セキュリティを確保するためにIPアドレッシングやVLANで制御する作業が多い。

そして、CCNPレベルの内容を見ると、ルーティングやスイッチングの細かな設定を網羅すること、そしてVPN網など通信事業者側の観点のネットワーク技術が要求されるみたい。
OSPF、EIGRPの設定を深いレベルまで問われるみたい。

【2】ネットワークの根本問題とは何か?

2つある。
ネットワークの品質を保つための技術は何か、そして、セキュリティを確保するための技術はなにか、の2つ。
以前色々考えていた。

なぜInfrastructure as Codeが必要なのか?: プログラマの思索

ネットワークの根本問題は何か~昨今のIT技術と時代の変化についての考察: プログラマの思索

最近の傾向では、ネットワークの仮想化、そして、VPNとゼロトラストセキュリティなどのセキュリティの2つが熱いように思う。

ネットワークの仮想化では、ルータやスイッチというL2層、L3層の機能をソフトウェアで仮想化できる点が重要と思う。
たとえば、2階層モデルや3階層モデルのネットワーク設計の話では、アクセス層とディストリビューション層の通信をファブリックにつなぐが、それは、巨大なL3スイッチやVLANルーティングを仮想化しているのと同じだと思う。

Dockerは仮想スイッチと仮想イメージの両方を持つ: プログラマの思索

SDNアーキテクチャの本質は巨大な仮想L3スイッチを実現したことではないか: プログラマの思索

また、単にクラウドの普及だけでなく、たとえば楽天モバイルのような事例もある。
通信事業者の携帯基地局というハードウェア設備そのものをソフトウェアで仮想化することで、低コストで設置をスピーディに行えるなどのメリットもあるのだろう。

楽天モバイルの「完全仮想化」は実現すると何が変わるのか(佐野正弘) - Engadget 日本版

楽天モバイルの仮想化の取り組みについて(総務省)

ネットワークの設備などは枯れた技術のように思っていたが、5Gの件もあるし、まだまだ技術発展の途上にある。
ネットワーク技術にもムーアの法則を適用できれば、全く新たな利用シーンが生まれて、そこから新たなビジネスも生まれてくるのだろう。

もう一つは、いかにセキュアな通信を担保するのか、という問題。
従来は、ブラックリストポリシーのように、ルータでALCでパケットフィルタリング、ファイアーウォールやWAFでパケット制御みたいなやり方が多かったが、SaaSがこれだけ普及すると、企業の業務は社内の自前システムだけでは足りない。
しかも、クラウド上に業務システムが全て乗っているならば、クラウド上のデータやシステムはセキュアかもしれないが、クライアント端末からSaaSまでの通信がセキュアでなければ無意味になってくる。

ゼロトラストネットワークはまだ無勉強だが、たぶんその辺りの問題意識から生まれているのではないか、と想像している。

【追記】
CCNA合格体験記を書いてみた。
おめでとう♪合格体験記~やっと合格

| | コメント (0)

2021/06/30

アクセスリストの設定パターン

アクセスリストの設定パターンをメモ。

【参考】
ACL - 標準ACL

ACL - 拡張ACL

access-list/CiscoIOS - ネットワーク入門サイト

ip access-list/CiscoIOS - ネットワーク入門サイト

ip access-group/CiscoIOS - ネットワーク入門サイト

access-class/CiscoIOS - ネットワーク入門サイト

標準アクセスリストを設定する - ネットワークエンジニアを目指して

拡張アクセスリストを設定する - ネットワークエンジニアを目指して

アクセスリストを設定する上での注意点 - ネットワークエンジニアを目指して

【間違いやすい箇所】
ACLはルータのパケットフィルタリングでよく使う。
特定のグローバルIPアドレスで穴を開けたポートからのみ通信を許可する、とか、社内サーバーで他ネットワークからの通信は拒否する、とか。

ACLはそのコマンドが正直ぱっと見で理解しづらい。
しかも、パケットフィルタリングは上から順にIF文+Breakで実行されるので、じっくり考えないとミスしやすい。

標準ACLと拡張ACL、番号と名前の4パターンでよく間違える。
標準ACLの番号は1~99の2桁の数字、拡張ACLの数字は100~199の3桁。

ACLを設定するときは「ip access-list」でipが付く。
L3層なので、ipを付けると覚える。
一方、Telnet接続のACLでは、「access-group」でipはつけない。
L2層なので、ipを付けないと覚える。

標準ACLと拡張ACLを付ける場所は基本は決まっている。
標準ACLは送信元IPアドレスしか制御できないので、できるだけ遠いルータのIFの出口に設ける。
一方、拡張ACLは、フィルタリングできる項目が多いので、できるだけ近いルータのIFの入り口に設けて、パケットフィルタリングする。
ただし、複数のルートを持つルータがある場合、基本ルールと異なる場合があるので注意。

【コマンド】
(1)標準ACL+番号付き
RouterB(config)#access-list 1 deny host 192.168.1.100
RouterB(config)#access-list 1 permit any
RouterB(config)#interface ethernet 1
RouterB(config-if)#ip access-group 1 out

(2)拡張ACL+番号付き
RouterA(config)#access-list 100 deny tcp host 192.168.1.100 host 192.168.3.100 eq 80
RouterA(config)#access-list 100 permit ip any any
RouterA(config)#interface ethernet 0
RouterA(config-if)#ip access-group 100 in

(3)標準ACL+名前付き
RouterA(config)#ip access-list standard pingACL
RouterA(config-std-nacl)#deny tcp 192.168.1.1 0.0.0.255
RouterA(config-std-nacl)#permit ip any
RouterA(config-std-nacl)#exit
RouterA(config)#interface ethernet 0
RouterA(config-if)#ip access-group pingACL out

(4)拡張ACL+名前付き
RouterA(config)#ip access-list extended pingACL
RouterA(config-ext-nacl)#deny tcp 192.168.1.1 0.0.0.255 host 192.168.3.100 eq 80
RouterA(config-ext-nacl)#permit ip any any
RouterA(config-ext-nacl)#exit
RouterA(config)#interface ethernet 0
RouterA(config-if)#ip access-group pingACL in

(5)アクセスリストをVTYポートの「インバウンド方向」に適用する
RouterB(config)#access-list 1 deny host 192.168.1.100
RouterB(config)#access-list 1 permit any
RouterB(config)#line vty 0 4
RouterB(config-line)#access-class 1 in

| | コメント (0)