ネットワーク・クラウド

2021/04/18

なぜInfrastructure as Codeが必要なのか?

最近ようやく、Ciscoのスイッチやルータの使い方が分かってきた。
GNS3上のルータやスイッチをCiscoコマンドで設定したり、動かしているうちに、ネットワーク技術の奥深さや難しさが何となく見えてきた気がする。
以下はラフなメモ書き。
間違いがあれば後で直す。

そもそも、ネットワーク技術の根本問題は何なのか?
根本には、ネットワークは動いていて当たり前という高品質が前提の上で、コスト、高性能、冗長性、セキュリティというパラメータのトレードオフがあると考える。

コスト=F(高い品質、高い性能、冗長性、セキュリティ)という複雑な方程式から、最小コストとなるパラメータの組み合わせを探そうとしている。

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

ネットワーク技術の必要性が高まっている: プログラマの思索

ネットワークは動いて当たり前であり、通信できなくなると、即座に業務が止まってしまう。
ルータやスイッチを設定してみて分かったのは、設定が複雑すぎる。
数十、数百のスイッチ、ルータの設定が1つでも間違えば、ネットワークは動かなくなる。
ネットワークの素人では無理。

たとえば、中小企業で100人以下で、バックボーンエリア1個だけで済むようなルーティングのOSPF構造の経験があっても、エリアIDが2個、3個と増えて、ルータが数百台になってしまうと、相当に難しいと思う。
ネスペ・支援士塾 - connpassで講師や参加者の話を聞くと、普通のエンジニアでは、エリアIDが1個だけのルーティングしか経験がない人が多い感じ。

たとえば、冗長性を実現することで、どこかで配線が切れても、代替のルートで通信を継続できる。
いわゆる耐障害性につながる。
冗長性は、スイッチではSTPで実現するか、PAgPで実現するか、色々ある。
しかし、L2層ではフレームのTTLが無いので、下手なNW設計では、L2ループが発生してしまい、通信帯域を消費して、通信速度が落ちてしまう場合がある。
「インフラ/ネットワークエンジニアのためのネットワーク・デザインパターン 実務で使えるネットワーク構成の最適解27」を読むと、STPで冗長性を確保するトレードオフとして性能悪化してしまう症状に対して、どんなネットワーク設計をすべきか、をすごく丁寧に説明してくれている。
他にも、デフォルトゲートウェイとなるサーバーの冗長性をHSRPで実現したり、floating static routeでバックアップのdefault routeを設定したり、色々ある。

たとえば、ネットワーク設計ではセキュリティが非常に重要だ。
データリンク層のスイッチのレベルでは、スイッチに不正接続があればPortSecurityを使ってポートそのものをシャットダウンできる。
VLANで営業部、経理部などの組織単位でサブネッティングできる。
ネットワーク層のルータのレベルでは、ACL、NAT、RADIUSサーバー認証などでパケットフィルタリングできる。
また、SNMPで常時監視、Syslogにネットワーク機器のログを残したりできる。

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

GNS3の情報のまとめ: プログラマの思索

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

では、最近、なぜInfrastructure as Codeが必要なのか?

上記のように、たくさんのスイッチ、ルータ、ワイヤレスLANコントローラ、DNSサーバー、NTPサーバー、DHCPサーバー、SNMPサーバーなどのネットワーク機器を個別に1つずつ設定するのは非常に大変すぎる。
数百台、それ以上のネットワーク機器のstartup-configを一つずつ手作業でセットアップするのは、現実的でない。
1つでも設定が間違えば、L2ループが発生して通信帯域を圧迫して性能を落としたり、通信経路そのものが遮断されてしまって代替経路が動かない、とか、色々起こってしまう。

「インフラ/ネットワークエンジニアのためのネットワーク・デザインパターン 実務で使えるネットワーク構成の最適解27」で印象に残った話は、ユーザはスイッチの空きポートがあると何を差し込んでもいいと勘違いしていて、そこに量販店で買ったブロードバンドルーターを接続して、付属したDHCPサーバーが動いてしまい、フロア全体の通信を落としてしまった、実は新人の私でした、という話があった。

だから、それらネットワーク機器を一括設定、管理するような機能、つまり、SDNが必要になる。
そのSDNを仮想化したアーキテクチャとして、Infrastructure as Codeがあるわけだ。

僕は、Infrastructure as CodeをApahceのhttpd.confなどをGitで構成管理するぐらいの程度で考えていたが、たぶん全く違う。
そういうアプリケーション層ではなく、データリンク層、ネットワーク層のレベルでネットワーク機器を構成管理して、Infrastructure as Codeを実現しようとしているのだろう。

SDNコントローラで制御できるならば、管理画面からREST API、NetConf、SSH、Telnetで一括操作できる。
以前なら、ChefやPuppetが紹介されていたが、今はAnsibleが一般的なのだろう。
なにせ、SSHやNetConfが使えるし、エージェントレスだし、Playbookを書いてPushするだけでいい。

すると、Infrastructure as Codeによって、ネットワーク設計の仕様が一連のプログラムないし設定ファイルというテキストで管理できる。
テキストであれば、Gitで履歴管理できるから、設定ファイルのUndo、ReDoも簡単だ。

そして、ネットワークの仮想化、ソフトウェア化によって、クラウド環境が一般的になった今では、そういうネットワーク設計仕様のテキストは、kubernetesで可搬性を持つようになる。
kubernetesがもっと進化すれば、AWSやGoogleCloud、Azureというクラウド環境にも依存しない設定ファイルとして使えるようになるはずだ。
そうすれば、ネットワーク設計を抽象的に設計できれば、その設計構造をkubernetesで書くだけで、どのインフラ環境でも、どのクラウド環境でも動作できるようになるはず。
つまり、6つの品質特性のうち、移植性を完全に実現できるはず。

ネットワーク設計であれ、Windows7やWindowsServerの廃棄対応であれ、ソフトウェアの移植性は従来からずっと問題だった。
Infrastructure as Codeという考え方はそれを解決する一つの技術と捉えられるのだろう、と思う。

| | コメント (0)

2021/03/26

ITの技術や知識はツールの習得と表裏一体である

ITの技術や知識はツールの習得と表裏一体ではないか、というアイデアをラフなメモ。
とても当たり前の内容かもしれない。

【1】昨年からもう一度、コンピュータの基本技術を習得すべきと考えて、Ruby、Python、Linux、ネットワーク、機械学習、深層学習、コンパイラなどを勉強し始めた。
でも何か分かったような気がしなかった。
何か真似事しているだけのような気がした。
なぜだろうか?
いろいろ考えた結果、やっぱり基本技術が分かってないなあ、という思いがあった。

【2】ITの技術や知識の習得は、財務や法律、経済学などの分野の知識の習得とは異なる気がする。
具体的には、ITの技術や知識を知っているだけでは意味がなくて、その技術や知識を実装しているツールを使いこなせて、そこから新しいものを生み出すことができて初めて意味を持つのだ、と思う。

理由は、2つある。

【3】1つ目は、ITの技術や知識を知っているだけで、プログラミングの開発環境、Linuxコマンドを動かせるサーバー環境、UMLやデータモデルを描いて実際に画面まで動かす、などの実際に動かせる環境でツールを使いこなせなければ、実際の仕事に使えないからだ。

たとえば、RubyやPythonの文法を知っていると言っても、実際に動くアプリを生み出すには、プログラミングの開発環境を揃えて、デバッグしたり、コンパイルしたり、デプロイする環境が必要になる。
昔なら、VisualStudioでVBやC++を書いていた時も、VisualStudioに数多くのパッチを当てたり、SQLServerなどのバージョン依存に泣かされていたのを思い出す。

今でも、単にRubyやPythonの文法を習ったとしても、実際に開発環境を揃えるのは割と大変だ。
実際、Railsは優れたWebフレームワークだが、VerUpが激しいし、大量のGemが必要になるので、慣れていなければ、バージョン依存ですぐに動かなくなる。
PythonもNumpy、Pandas、MatplotLibのVerUpは激しいので、すぐに古いバージョンのAPIは使えなくなっている。
ただし、Pythonの場合、Anacondaがあるおかげで、以前よりもバージョン依存地獄にはまらなくなったように思う。

たとえば、WordPressやTracなどのWebシステムを通じて、Webアプリの機能や特徴を理解したとしても、Linux上にソースをデプロイして、負荷分散に耐えられるようなネットワーク設計を行ったり、不正なアクセスを制御するようにアクセス制限を課す、とか、いろんな設定作業が必要になる。
特に、インフラ周りの開発環境は、一昔前まで構成管理できない環境だったから、設定ファイルを一度修正すると、元の環境に戻せないリスクが多かった。
それゆえに、数多くの「○○_backup_yyyyMMdd.ファイル」みたいなファイルがたくさんできてしまって、ゴミファイルなのに消せなくなる、とかいろいろな苦労もあった。
ただし、今なら、DockerなりAnsibleで、環境構築の構成管理が可能になったので、いつでも環境を複製したり、再現することが楽になったのはありがたい。

たとえば、UMLでオブジェクト指向設計を習得しても、データモデリングの手法を通じて業務システム設計が分かったとしても、実際にUMLやDOAのモデルを描けるツールが必要だ。
実際にモデルを描いてみると、数多くのモデル管の整合性を取るのが大変なのが分かるし、実はモデリングの記法に制限がありすぎて、あるべき機能を描きにくい、という気づきもあったりする。

特に、データモデリングの手法は日本では昔から技術が蓄積されていて、そのノウハウも十分にあるし、業務システム設計にとても役立つのに、さほどそのノウハウが普及していないのは、データモデリングのツール自体がオープンソースで提供されていなかったり、使われていないからだ。
ER図を描くだけでも気づきは多いのに、ER図を描けるモデリングツールはそもそも標準がないのが実情。
だから、データモデリングの考え方自体も普及していない。

【4】2つ目は、ITの技術や知識を使ったベストプラクティスは、ツールの一機能として実現されているので、ツールの機能を使いこなすことで、自然に知識やノウハウを身につけられるからだ。

たとえば、Rubyの開発環境で最も優れているのはRubymineだろう。
RubymineでRubyを書いてみると、デバッグもできるし、ブレイクポイントを置いて、実際に動く変数の中身もウォッチできる。
しかも、RubymineにはRubyという動的言語であっても、リファクタリング機能が付属しているので、ちょっとした変数名の置換、ロジックをメソッドで抽出する、などの操作を簡単に行える。
つまり、リファクタリング本で知られているリファクタリングのベストプラクティスがRubymineのツールの1機能として実現されているので、Rubymineを使いこなしていくうちに、リファクタリング技術にも慣れて、きれいなコードを書くノウハウも身に付く。
もちろん、テストユニットのソース支援機能もあるから、自動テストも実装できるから、そういう機能を使っていくうちに、プログラミングの能力も身についていく。

たとえば、CCNAのようなCisco機器の知識、ネットワークの一般的な知識を身に着けたい場合は、Ciscoのルータやスイッチを実際に中古品で購入して、オンプレのネットワーク設計を行いたい。
しかし、実際はそこまでお金を払わなくても、PacketTracerのようなシミュレータ、GNS3のようなエミュレータが無料であるので、それらを使ってPC上でネットワークのトポロジーを作って動かしてみればいい。

実際に試してみると、L2スイッチでVLANやSTPの設定、ルータでRIP、OSPF、デフォルトゲートウェイ、サブネッティングによるIPアドレス付与、などの基本的なネットワーク設計は非常に難儀な作業であることがよく分かる。
IPアドレスの数字がちょっと間違えただけでも、すぐに疎通できなくなる。
100人以上の社員がいる社内ネットワーク構築で、ルータを10個以上配置する場合、ネットワークの冗長化や負荷分散、セキュリティ面をきちんと考えておかないと、すぐにユーザからクレームが来るだろう。
そういう設計を行うための技術は、たとえば、STPやHSRPのような冗長化や負荷分散、ACLやPortSecurity、AAAのようなセキュリティの機能があるので、それらをCisicoコマンドで実際に実現すればいい。
そういうネットワーク設計をルータやスイッチのような実機ではなく、PacketTracerやGNS3のような無料ツールで事前にネットワーク・トポロジーを試しておけば、いろんなノウハウが身に付くだろう

たぶん、クラウドも同じように、実際にAWSで色々試しながら、身につけた方が習得が速いはず。

たとえば、Redmineは単なるITSやBTSではなく、プロジェクト管理ツールとして使われるようになった。
すると、プログラマ出身だが、プロジェクトリーダーの役割は初めての経験で、そんなにチームビルディングに自身がない人であっても、Redmineというツールの機能を駆使すれば、基本的なスケジュール管理や課題管理はこなせるようになる。
また、アジャイル開発のプラクティスとRemdineの各機能は相性がいいので、チームビルディングやコミュニケーション活性化に活用することもできるだろう。
つまり、Redmineの機能を十分に把握できれば、自然にプロジェクト管理力も身についていく。
Redmineのいろんな機能は、10年以上のOSS開発を通じて、世界中の開発者の要望が実現されていて、それらは全て、ソフトウェア開発に役立つように作られたからだ。

逆に言えば、PMBOKのような知識を持っていたとしても、実際のプロジェクトの現場で発揮できなければ意味がない。
Excelで自前でガントチャートによるスケジュール管理を作ったり、自前で工数管理のVBAやEVMのVBAを作り込んだりしていたプロジェクトリーダーを実際に見てきた。
たしかに彼らはそういうツールを作り出すだけのVBA能力があり、マネジメント能力もあったわけだが、僕はOSSのプロジェクト管理ツールとかGitHub、GitLabなどを使いこなすことで自然にベストプラクティスが身についていく、という成長のやり方の方が好きだ。
「ツールがプロセスを改善していく」という発想が僕は好き。

ツールでプロセスを実装すべきか、プロセスを確立してからツールを導入すべきか: プログラマの思索

チケット駆動開発はツールによる改善か、プロセスによる改善なのか: プログラマの思索

ツールがサポートすれば考え方も変わる: プログラマの思索

チームの開発環境が開発プロセスの品質を向上させるのに導入されない理由: プログラマの思索

ツールが開発プロセスを改善する: プログラマの思索

開発プロセスの型をツールで構築する #tidd: プログラマの思索

【4】そんな事を思うと、ITの技術や知識はツールの習得と表裏一体である、という事実を改めて感じている。
換言すれば、プログラミング開発環境、サーバー環境、ネットワーク環境、プロジェクト管理ツール、ソースコード管理ツールなどのツールを使いこなしていけば、そのツールの機能に実装されているベストプラクティスは自然に身に付くのだ。

それらのツールの機能には、長年の蓄積で得られたコンピュータ科学やソフトウェア工学の理論、数多くのプログラマやネットワーク技術者が苦労して導いてきた泥臭いノウハウが数多く詰まっている。

だから、教科書を通じてIT技術の知識を習得するよりも、実際に開発環境を揃えてプログラムを書いたり、サーバーを動かしたり、プロジェクト管理ツールを準備して実際にスケジュール管理や課題管理をやってみる、という体験の方が重要だと思う。
そして、そういう試行錯誤は、20代のような若いうちにやった方がいい。

最近気づいたが、年齢を取るほど、PCの前に長時間座ってコマンドを叩くのが割ときつくなってくる。
いくらツールを通じて知識を習得すればいい、と言っても、ツール自体もどんどん進化するから、それらにキャッチアップしていくのも大変。
視力が落ちてくるし、老眼になってくるし、体力面も厳しくなる。

昨今のDXというバズワードの流行を見ると、ビジネスも生活もあらゆる場面で、全てがソフトウェアで代行されていくだろう。
そういうソフトウェアを自分のものとして制御していくためにも、ソフトウェアの基本的な知識や技術は習得しておきたい。だからこそ、ツールの機能を習得することで、自然に知識やベストプラクティスが得られるように、そのやり方にも慣れておきたい。

| | コメント (0)

2021/03/21

Ciscoルータ/Catalystコマンド一覧のリンク

Ciscoルータ/Catalystコマンド一覧のリンクをメモしておく。

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

CCNAで覚えなきゃならんshowコマンドの一覧39個

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

CISCO IOS COMMANDS

オンプレのサーバー構成や社内ネットワークを構築する時、結局、Ciscoルータ/Catalystコマンドを知っておかないと話にならない。
最近は、PacketTracerやGNS3上で、Ciscoコマンドを実際に叩いて動作確認を検証できるようになったので、本当に良くなった時代だと思う。

とはいえ、CCNAとは | 本当に役立つ資格、全く役立たない資格にも書いてある文章に、思わずうなずいてしまった。

(引用開始)
しかし、このルーターやスイッチ、高額であるのはもちろんですが、導入時の設定が非常に複雑です。単にケーブルで接続するだけではなく、専用のソフトウェアを使って細かな設定をしなければなりません。つながっている全てのパソコンについて設定します。
慣れない技術者が設定をすると、まず正常に動きません。ほんの少しのミスでもネットワーク全体が正常に機能しません。ベテランの技術者がおこなっても何か必ず不具合が生じます。ネットワーク技術者には高度な知識が求められます。
では、どうしてそんなに高度で複雑かというと、ルーターやスイッチとはいえ1つのコンピュータであるからです。何台ものパソコンを制御するコンピュータですから当然パソコン以上に高機能です。導入する会社によってその動作環境は全然違います。接続する機器の種類も台数もバラバラです。全てにおいて対応する必要があるので想像以上に複雑になります。
(引用終了)

たぶん、普通の大企業や大手SIであれば、自前のデータセンターを持っている所は多いと思うが、ネットワーク関係のトラブルは様々な理由でとにかく多い。
ケーブルを付け間違えた、誤って電源アダプタを外した、サーバーのディスクが壊れた、という初歩的な原因もあれば、大量のアクセスが集中してロードバランサーがさばききれなくなった、毎月末の一定のタイミングでファイアーウォールの通信量の負荷が高くなって遅延した、とか、原因が複雑な場合も多い。

3月末や4月初めのように、期末・期首では、組織変更で社員の座席移動だけでなく、なぜかサーバーの移動も発生して、そこでケーブルや電源アダプタを付け替える時に凡ミスしたり、とか。
アホだな、と傍から見れば思うけれど、ネットワークインフラは動いて当たり前であって、止まると大混乱して、カスタマーサポートがパンクする時もある。
そんなことを思ってしまった。


| | コメント (0)

2021/03/19

ネットワーク技術の必要性が高まっている

下記の記事を読んで、共感したし、ネットワーク技術の必要性が高まっているような気がした。
浅はかな理解のメモ。

【参考】
いまクラウドよりオンプレを学ぶべき理由 - Yuichi Murata's Engineering Blog

(引用開始)
この問題を解決したのは、チームでは新参のエンジニアであった。彼はもともとネットワーク・エンジニアとしてのバックグラウンドを持っていた。彼は持ち前のネットワークの知識を活用しつつ、このクラウド・ベースのアプリケーションの問題を一つずつ紐解いていった。

(中略)
通信が途絶える可能性のある経路をたどり、全ての仮説を上げて一つずつ潰していく。一つずつ被疑箇所を修正し、リリースし、変化を計測する。 一つの問題を解決するとタイムアウトの発生件数ががくっと下がり、複合問題がそれぞれの問題に分解され、より効果的に問題分析を進めることができた。 アプリケーション・ログや業者への問い合わせのみに頼ることなく、システムの下回りで何が起きているのかを、一つ一つ丁寧に掘り下げていった。

クラウドやマネージド・サービスは重要である。便利である。これらはあなたのシステムが扱いやすいように全てを抽象化してくれる。

一方、仕組みが抽象化された世界では、問題すら抽象化されてしまう。
つまりそのままでは解決が難しいということだ。 だから、発生した問題をネットワークやオペレーティングシステムといった低次元のレベルまで掘り下げて分析をしていかなければいけない。
(引用終了)

現代のIT技術者であれば、アプリ開発者であれ、ネットワーク担当者であれ、クラウドの知識と理解は必須だろう。
しかし、クラウドで注意すべき点は、「仕組みが抽象化された世界では、問題すら抽象化されてしまう」ことだという指摘には、なるほどと思った。
つまり、ネットワーク機器やネットワーク構造そのものがソフトウェア化されてしまったために、手で触ってみたり、実際に動かしてみる、という操作がやりにくい面がある。

逆に、Cisico機器のネットワークの経験があれば、クラウド上でのネットワークのトラブルシューティングにもその知識を応用できる。
そういう話を聞くと、Linuxのカーネルレベルの理解、コンパイラの理解があれば、ソフトウェアの理解やプログラミングの理解が早いということと同じような気がした。

クラウドの出現によって、アプリ開発者もL7のアプリケーション層だけでなく、L2のイーサネット層やL3のネットワーク層の知識や技術を要求されるようになった。
同様に、ネットワーク担当者も、L2のイーサネット層やL3のネットワーク層だけでなく、SDNやその実装ツールの一つであるAnsibleなどにも精通する必要が出てきた。
結局、アプリ開発者もネットワーク担当者も以前より深い知識が要求されている。
もはや単に、オブジェクト指向プログラミングができますよ、だけでは物足りない。

そういう状況は自問しておく。

他に、下記の記事に、AWSのVPCとオンプレのネットワーク構造の対比が図示されていて、なるほど、とようやく気づいた。

コラム - 知っておきたい Amazon Web Services のキホン | 第2回 AWSの仮想データセンタ「VPC」を理解する|CTC教育サービス 研修/トレーニング

クラウド上では、ルータやスイッチが仮想化されたことで、設定画面に埋もれてしまって、見えなくなっているわけだ。
自分はまだまだAWSが分かってないので、色々試してみる。

| | コメント (0)

2021/03/11

ネットワークの根本問題は何か~昨今のIT技術と時代の変化についての考察

以前から、インフラ基盤の知識を身に着けたいと思っていて、今更ながらCCNAの教科書や資料を読み始めている。
Cisco機器のコマンドにもだいぶ慣れてきた。

【1】ネットワーク技術の根本問題は一体何だろうか??

ネットワーク技術の問題に対して、印象は3つある。

【2】1つは、GNS3のエミュレータとかPacketTracerのシミュレータでもいいので、実際の知識やコマンドを試す環境が必要なこと。
ネットワーク技術を身につけることが割と難しい理由は、ルータやスイッチなどの実機を購入しないと実際に試せないからだ。
しかも、ルータ1個では意味がなくて、ルータやスイッチを5個、10個集めて、実際にSTPやOSPFを試せるようなネットワーク構造を作らないと、試せない。
つまり、個人でネットワーク技術を体験するには、コストも場所も必要になるので、壁が高い。

しかし、直近10年くらいで、GNS3のエミュレータとかPacketTracerのシミュレータによって、ルータやスイッチを仮想的に実現できるようになったおかげで、PC上で簡単にネットワークを作れるようになった。
すると、BGPとかEIGPレベルは難しいけれど、STPやOSPFレベルのネットワークなら、実際にCiscoのコマンドを叩いて試せる。

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

とはいえ、ネットワーク初心者にとって、この環境を整備するだけでも割と大変。
だが、JavaでもRubyでもPthonでも、開発環境を整備するのが大切で、実際にプログラムを動かして、初歩的なミスとか、本当に基礎の部分が理解できていない所を一つずつ試すのが大事なのと同じだな、と思う。

個人的には、GNS3のUIの方が好きだが、DHCPやNATの疎通確認ではVMを作るとか、無線LANの疎通確認では、無線アクセスポイントなどの実機を実際に接続する手間がかかる。
一方、PacketTracerはUIがあまりイケてないが、DHCPやNAT、疑似Webサーバー、IP電話、無線アクセスポイントの機能があるので疎通確認が簡単。
GNS3とPacketTracerを使い分けるのが良いのかもしれない。

【3】2つ目は、ネットワーク技術の根本的な問題は、性能を出すために最短経路をリアルタイムに一早く算出することと、障害が起きても代替ルートで常時接続できる冗長性・耐障害性の確保、というトレードオフ。
そのために、L2のSTPやL3のOSPFとか、いろんな技術で回避しようとしている。

過去の試行錯誤の歴史によって、Ciscoのルータやスイッチは、ものすごく複雑な仕様になったんだな、という印象を受けている。
たとえば、STPがVLANよりも先に仕様が作られたために、STPの仕様がすごく複雑になったイメージがある。

【4】3つ目は、セキュリティの機能がすごく豊富なこと。
ルータやスイッチを経由して数多くのデバイスが相互に通信できて、スケールアップも耐障害性も確保できる。
しかし、何でもかんでも、どんな通信でもOKというわけにはいかない。
内部ネットワークに不審者が入っては困るし、社内ネットワークでも部門ごとに情報アクセスを制限したい。
そのために、L3レベルでACLやAAA、VPN、L2レベルでポートセキュリティやVACL、Dynamic Arp Inspectionなどの数多くのセキュリティ機能が用意されている。
こういう機能を見ると、過去のセキュリティ事故やウイルスの経験から、歴史的経緯によって、どんどん機能追加されて複雑化したのだろうと推測する。

【5】最近のIT技術の流れを見ていると、クラウドの普及のために、アプリ開発者はL7層だけでなく、L2のデータリンク層やL3ネットワーク層までの知識が要求されるようになった。
実際、AWSの膨大なサービスや機能を見ると、L2・L3層のスイッチ・ルータを仮想化することで、ネットワークそのものを仮想化してしまって、クラウド上で簡単にスケールアップできるようになっている。

一方、Infrastructure as Codeの流れによって、インフラ担当者も、L2・L3層だけでなく、L7層などのより上位のアプリ層レベルが要求されるようになった。
実際、Ansible、Docker、VirtualBoxなどの仮想化技術では、シェルスクリプトの実装だけでなく、Pythonでのプログラミングまで要求される場合が多い。

つまり、アプリ開発者もインフラ担当者も、クラウドが当たり前の現時点では、プログラミングもネットワークも両方の知識と技術、経験が要求されている。
さらに、機械学習やディープラーニングの急速な発展とクラウド上でのマシーンラーニング基盤の実装が簡単になったから、これらの知識や経験も要求されてきている。
個人的には、直近3年ぐらいで、急激にIT技術の環境が変わってしまったように感じている。

【6】昨今のコロナ禍によって、仕事も人付き合いもビジネスもオンライン化されてしまった。
今後は、ビジネスも仕事もAIでどんどん代替されていくだろう。
そして、中間層の仕事は不要となり、IT技術に関する高度な専門知識を持つ知的労働者と、対面でベタベタに人と関係するしか作業できない仕事、たとえば医療系や食事提供、観光などの、労働集約的な効率の低いサービス業の労働者に二分化されていくだろう。
つまり、社会がどんどん二極化していくのではないだろうか。

そういう時代の流れとIT技術の流れについて、色々考えていく。

| | コメント (0)

2021/03/04

GNS3の利用事例

GNS3を入れると、CiscoのIOSをPC上でほぼ完全にエミュレートできる。
そういう事例があったのでメモ。

【参考】
GNS3 でバックエンド開発を便利に(前編) - Qiita

GNS3 でバックエンド開発を便利に(後編) - Qiita

CentOS8 へのGNS3 インストール手順 - Qiita

今でも、会社のオンプレのインフラ構築、社内LANの構築では、Cisco機器を使う場合も多いのではないか。
やはり信頼性とか今後の運用を考えると、高額だがCisco機器を購入する場合は多い。

また、Cisco機器のルータやスイッチを自由自在に扱えるようになると、ネットワーク設計の知識も経験も十分に増える。
たとえクラウド化が進んだとしても、ネットワーク設計の基礎知識は必要。
Cisco機器を触ることができれば、色々理解できる内容も多い。

しかし、Cisco機器はとても高額なので個人で扱える代物ではない。
ヤオフクの中古品もあるらしいが、ルータやスイッチを5個以上揃えるとか、UTPケーブルやらラックを揃えるとなると、それなりにお金も労力もかかる。

そこで、GNS3をインストールできれば、IOSをほぼ完全にエミュレートできる。
上記の利用事例では、GNS3でネットワークそのものをエミュレートして、その先に現物のオンプレサーバー、Docker、VMにつないでいるらしい。
これはすごいし、面白いな、と思う。

ただし、GNS3で利用するIOSはなかなか手に入りにくい点は注意。
代わりに、PacketTracerでシミュレートする方法もある。

個人的には、PacketTracerよりもGNS3の方がGUIが直感的だし、TeraTermが使えるので好き。

「GNS3によるネットワーク演習ガイド-――CCENT-CCNA-CCNPに役立つラボの構築と実践」のサンプルに沿って、GNS3でネットワーク図を自分で描いて、実際にルータやスイッチを動かすのが楽しい。
なかなか現物に触らせてもらえないからね。

サポートページ:GNS3によるネットワーク演習ガイド ―CCENT/CCNA/CCNPに役立つラボの構築と実践:|技術評論社

| | コメント (0)

2021/02/08

GNS3の情報のまとめ

Cisco機器のOSSエミュレータGNS3をメモ。

【GNS3のセットアップ】
GNS3の設定方法、操作方法の解説

GNS3の導入方法(Windows編その1) | いっとねっと。

GNS3 Architecture - GNS3

ネットワーク実験室の構築(macOSへGNS3の導入) - Qiita

【GNS3が必要な理由】
GNS3 でバックエンド開発を便利に(前編) - Qiita

GNS3 でバックエンド開発を便利に(後編) - Qiita

【GNS3+IOUが必要な理由】
断捨離は『したいができない人』もいるようです。 | mixiユーザー(id:4324750)の日記

【GNS3+VirtualBox】
GNS3を使って仮想ルータでシミュレート【インストール手順】 | SyachikuLOG

【GNS3 on VMware Player】
【GNS3 on VMware Player】インストール&設定手順, 必要スペック | SEの道標

【GNS3+IOUの設定】
AWSにGNS3サーバを立ててみた - 元パチ屋店員NWエンジニアの技術ブログ

ぼちぼちな感じで WindowsのGNS3でIOUをようやく動かせたという話~その1

ぼちぼちな感じで WindowsのGNS3でIOUをようやく動かせたという話~その2

ぼちぼちな感じで WindowsのGNS3でIOUをようやく動かせたという話~その3

GNS3でRSTPの実習をするには: 技術系memo

macのGNS3でNETWORK(CISCO CCNA)の勉強 ?①GNS3導入? - イノベーション エンジニアブログ

GNS3VMをVirtualBoxからVMWareへ移行してみる - Shadow-log

【GNS3およびIOUのセットアップ方法(Windows10 PC)】
GNS3およびIOUのセットアップ方法(Windows10 PC) : スペースお母さんの逆襲

【Packet Tracer】
誰かが言ってそうなこと Cisco

01_概要 | Cisco Packet Tracer(パケットトレーサー)を使いこなそう!

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

【GNS3について理解したこと】

GNS3のメリットは、OSSでありながら、CiscoIOSを完全にエミュレートするので、Cisico機器によるネットワークを完全に実現できること。
CCNP/CCIEレベルの人は、GNS3で経験を積んだ方がいいこと。

一方、GNS3のデメリットもある。
CiscoIOSを手に入れにくいこと。
ネット上では、ググってみるとGNS3対応のIOSは全て手に入れられるが、合法的ではない。

GNS3対応のIOSが何でも動くわけではなく、下記に限定されていること。
1.シスコルータならば1700/2600/3600,3700,7200のIOS
2.L2/L3SWは3700/2600のIOSにNE16SWEユニットを拡張スロットにいれてESWとして使う(L2/L3レイヤのシュミレーションが可能)
3.CatalystシリーズのIOSは使用できない。

特別な目的が無い限り、Cisco 7200ルータの使用が推奨される。
また、SVI(VLAN)インターフェイスを使用する場合には、NM-16ESWモジュールを取り付けたCisco 3725を使用することが推奨される。

上記を解消するには、IOUとは「IOS on Unix」、つまり、GNS3上で直接動くわけではなく、Linux/UnixOS上で動くソフトウェアを入れる必要があること。
L2/L3スイッチの検証環境を作る時に必要になる。
L2/L3SWはIOU(VMWareで操作することを前提に作られている)を無料ダウンロードしてマウントする。

IOUの性能要件は厳しい。
VMWareが走る環境も最低でもXEONクラスのCPU(コア数4コア以上)メモリ32GB以上、HDDは最低でも1TB以上は必要になってくる。
個人PCでは厳しく、ちょっとしたサーバーが必要になる。

GNS3のVMイメージはあるので、GNS3+VirtualBoxイメージをマウントすればいい。
しかし、最近では VirtualBOX よりも VMware WorkStation が推奨されている。
そちらの方が安定しているらしい。
バージョン依存があるので注意。

CCNAを取得するレベルであれば、GNS3は必須ではなく、PacketTracerで十分なこと。

【1】「GNS3によるネットワーク演習ガイド ――CCENT/CCNA/CCNPに役立つラボの構築と実践」の本がとても良かった。

本のサンプルは下記から落とせる。

GNS3によるネットワーク演習ガイド ―CCENT/CCNA/CCNPに役立つラボの構築と実践:書籍案内|技術評論社

サポートページ:GNS3によるネットワーク演習ガイド ―CCENT/CCNA/CCNPに役立つラボの構築と実践:|技術評論社

本のサンプルを動かすには、Cisco 3725のIOSを取得して、拡張子をbinからimageに変更してIOSをマウントする。

「GNS3によるネットワーク演習ガイド ――CCENT/CCNA/CCNPに役立つラボの構築と実践」の本が素晴らしいのは、L2スイッチのVLANやSTPの話は1章分だけだが、L3ルータのルーティングプロトコルを5種類以上サンプルを通じて紹介してくれていることだ。
Cisco機器のコマンドを実際に試すことができるのはとても良い。

| | コメント (0)

2021/01/26

ネットワーク学習のためのチートシートのリンク

CCNAなどネットワーク学習者必携のチートシートを見つけたのでメモ。

【1】Cisco機器やネットワークの基礎知識が一通りそろったチートシート。
個人的には、Spanning Tree Protocolの絵が分かりやすかった。

CCNAなどネットワーク学習者必携のチートシート | 社内ITゲリラがWebで世界をめざす

Cheat Sheets - PacketLife.net

やっぱり、ネットワークを制覇するにはCisco機器を使いこなすのが一番。
最終的には、Cisco機器のうち、L2のスイッチ、L3のルータを使いこなすこと。

【2】OSIの7階層モデルのチートシートも良かった。

OSI Model Summary Cheat Sheet - Part1 - Network Walks Academy

アプリケーション層に、DHCPやDNSがあるのは知っていたが、プレゼンテーション層は気にしていなかったが、JPGやGif、SSL/TLSが含まれているのか。
今一度眺めてみると割と参考になる。

| | コメント (0)

2021/01/25

PacketTracerのリンク

Ciscoネットワーク機器のシミュレータPacketTracerのリンクをメモ。
ロジカルでないラフなメモ書き。

【1】オンプレのネットワーク構築、会社内でルータやスイッチを使って社内LANを構築するのはお手伝いくらいしか経験がないので、詳しい内容が分かってない。
有線LAN構築は割と面倒で、設計図通りに配置したし、IPアドレスも付与したのに、なぜネットワークがつながらない?みたいなこともあった。
インフラエンジニアの仕事は、サーバー機器のトラブル対応、深夜の障害対応、開発案件の本番リリースで夜間対応、とか、割とタフな仕事が多かったように思う。

今でも、客先や委託ベンダーの開発現場に行った時に、部屋の床下がミシミシ鳴っていると、床下にLANケーブルをタコ足みたいに引いているんだろうな、と想像したりする。

今は、AWSやAzureなどのクラウドで環境構築するのが普通だから、Cisco機器に精通する必要はないかもしれない。
しかし、AWS経験者から、CCNA資格を持っていると、AWSは理解しやすい、という話は聞いた。
確かに、CCNAでネットワークの基本知識は一通り身に付くから、AWS上でも、SPTとかOSPFとかルーティング構成とか、色々理解しやすくなるのだろう。

【2】下記の通りに作れば、PacketTracer上で、PCとルータだけのネットワークがが作れて、Ping通信を確認できる。

まずは使ってみよう(基本的な使い方)~その1 Packet Tracer

まずは使ってみよう(基本的な使い方)~その2 Packet Tracer

CISCOパケットトレーサーの使い方①?CCNA対策? ? ネットワークエンジニアチュートリアル

CISCOパケットトレーサーの使い方②?CCNA対策? ? ネットワークエンジニアチュートリアル

PacketTracerの操作は、下記のYoutubeが分かりやすかった。

パケットトレーサーの使い方シリーズ③ 簡単な使い方 デバイスを置いてみよう ? ネットワークエンジニアチュートリアル

パケットトレーサーの使い方シリーズ④ 簡単な使い方 ルーターやスイッチをちゃんと置いてみよう ? ネットワークエンジニアチュートリアル

【3】Cisco機器のコマンドは独特なので、調べながら叩いて、動作確認するしか無い。

CISCOスイッチ/ルータの無料エミュレーターの紹介 | Netassist Blog

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

| | コメント (0)

2021/01/04

YoutubeのCCNA講座が秀逸だった

インフラの勉強がしたくて、Youtubeを探していたら、下記のCCNA講座が秀逸だったのでリンクしておく。

【参考】
【CCNA動画支持率No.1】未経験からのインフラエンジニア勉強講座【ネットワーク基礎入門 #1】 - YouTube

【CCNA講座】「OSI参照モデル」が30分で絶対分かる!【インフラエンジニア基礎入門 #2】 - YouTube

【高評価97.2%】CCNA「物理層」を完璧理解できる講座【インフラエンジニア基礎入門 #3】 - YouTube

【CCNA合格講座】「イーサネットとは?」を徹底解説!【インフラエンジニア基礎入門 #4】 - YouTube

【CCNA合格講座】TCP/IPとは?「仕組み」完全解説!【インフラエンジニア基礎入門 #5】 - YouTube

【CCNA講座】「TCP」「UDP」を日本一易しく解説!【インフラエンジニア基礎入門 #6】 - YouTube

なお、すべての講義ははUdemyで見た方が早い。

新CCNA(200-301)完全未経験からの合格講座(上)【YouTube高評価率98.2%のパワーアップ完全版】 | Udemy

【1】上記のCCNA講座の対象は、SIに入社した新人社員、5年目までの若手までのレベル。
インフラ専門で仕事している技術者は当たり前の話だろう。

しかし、アプリ開発しかやっていない人、AWSをかじっているけどインフラ基盤の知識が薄い人には、とても参考になると思う。
たとえば、ハブ、スイッチ、ブリッジ、ルータの違いが分からない、というレベルであれば、とても参考になる。
AWSサービスを組み合わせてインフラ基盤を構築する時にも役立つはず。

そういう知識は、IT業界にいたら、既に知っている知識のはずだろう。
しかし、別の業界の人にとっては、未知の知識なので、そういう初歩レベルからつまずく。
そういう人たちがいきなりAWSをやるぞ、と言っても、たぶん訳がわからないのではないだろうか。

同様に、IT業界のベテランであっても、法律系や財務系の知識はほとんど知らず、経理や法務の部署の人から見れば、その部署の新人レベルに過ぎない、という人も多い。

僕は理系人間なので、会計システム構築の経験を踏まえて、財務や会計は面白いし、知識も習得できた。
一方、法律だけはどうしても理解できなかった。
ああいう変な日本語の文章で書かれて、判例があるたびに例外の処理が増えて、しかもGitで構成管理されていないから、変更履歴が入り混じった変な因果関係で書かれた文章は、性に合わない。

結局、IT技術者であっても、別の業界に移れば、新人ないし5年目までの若手レベルに過ぎない。

【2】最近、こういう動画配信の講義がすごく増えてきて、書籍を買うよりも分かりやすい、という評判をよく聞くようになった。
自分も色々試してみて、動画と書籍による学習方法やその効果の違いもだいたい分かってきた気がする。

Udemyのような動画のメリットは、映像化されているので、その分野では自分は素人または初心者の時は有効。
Python機械学習、AWSのクラウドネットワーク講座、ビジネス法務検定みたいない法律系、とかは、いきなり書籍を読んでも分からないので、こういう初心者向けの動画を見ながら、PCでメモを取って、基本単語に慣れることから始める。

動画のデメリットは、長時間で目が疲れること。
初心者レベルから解説しているので、どうしても3~20時間ぐらい見ないといけないは割と辛い。
最初は2倍速で聞き流して、何回も繰り返して見る。

一方、書籍のメリットは辞書代わりになること。
ある程度、基本概念に慣れたら、中級向けの本が読めるようになる。
図書館で数冊の本を借りて乱読すれば、どんどん理解が進むので楽しくなる。

書籍のデメリットは、初心者向けの本ですら最初は読みにくいこと。
基本的な用語すら分かってないので、写経みたいな感じで結局読了すらできない。
だから、Udemyみたいな動画から取り組んだ方が早道。
Udemyクラスの先生は、その道のプロなので、初心者がハマりやすい箇所を知っていて、比喩の使い方がすごく上手。

最近は、こういう勉強ツールがすごく揃ってきた状況を考えると、自分が高校生だったり新人社会人なら、もっと効率的に学習できただろうに、と思ったりもする。
つまり、現代では、高速道路を使って一気に最低限の基本知識を習得する基盤が揃ってきたわけだ。
そういうツール、学習方法を知っているか否かで、その後のキャリアも変わってくるのだろう。

いつまでも学習を続ける、みたいな感じなのかな。


| | コメント (0)