インフラSEの駆け出し日記

アウトプットこそもっとも重要

【ホストオンリーアダプターとNATを併用したネットワーク設定】VirtualBox>Rocky Linux

はじめに

VirtualBoxでホストオンリーアダプターとNATを併用して設定した際の備忘録です。

前回のブログでは自動で設定をしておりましたが、今回手動でIPを設定する方法になります。

 

今回まとめる項目

VirtualBoxでRocky LinuxにホストオンリーアダプターとNATを設定する方法

 

 

環境構築の目的

①:ローカルからのSSH接続
ホストマシンからゲスト(Rocky Linux)にIPアドレスを使って常時SSH接続できるようにする。

 

②:インターネット接続
Rocky Linuxから外部インターネットへアクセスし、dnf などでパッケージを取得可能にする。

 

 

使用するVirtualBoxネットワークアダプタ

・アダプター1(NAT)
  インターネット接続用 → enp0s3(自動割当)

・アダプター2(ホストオンリー)

  ホストとの通信(SSH用) → enp0s8(手動設定)

 

 

VirtualBoxの設定手順

①:NATアダプターの設定(アダプター1)

・設定 → ネットワーク → 「アダプター1」を有効化

・「割り当て」→「NAT」を選択

 

②:ホストオンリーアダプターの設定(アダプター2)

・設定 → ネットワーク → 「アダプター2」を有効化

・「割り当て」→「ホストオンリーアダプター」を選択

 

③:ホストオンリーネットワークの確認

VirtualBoxメニュー → ツール → ネットワーク

・「ホストオンリーネットワーク」が作成されているか確認

 

 

Rocky Linux内のネットワーク設定

VirtualBox側の設定が完了したら、次はRocky Linux側でネットワークを調整します。

1. インターフェースの確認

 ip a

 

enp0s3(NAT):10.0.2.x などが割り当てられている

enp0s8(ホストオンリー):192.168.56.x または未設定

 

2. ホストオンリーアダプターに固定IPを設定(enp0s8)
※ Rocky Linux 8以降では /etc/sysconfig/network-scripts/ は非推奨です。

 nmcliコマンドを使用します。

nmcli connection show

 

例:Wired connection 2 が enp0s8 に対応している場合、それを対象に設定します。

 

固定IPを設定:

sudo nmcli connection modify "Wired connection 2" ipv4.addresses 192.168.56.xx/24
sudo nmcli connection modify "Wired connection 2" ipv4.method manual
sudo nmcli connection modify "Wired connection 2" connection.autoconnect yes

 

接続の再起動:

sudo nmcli connection down "Wired connection 2"
sudo nmcli connection up "Wired connection 2"

 

設定確認:

ip a show enp0s8

 

 


まとめ
今回はVirtualBox上でRocky LinuxにホストオンリーアダプターとNATを併用したネットワーク環境を構築しました。

自宅のローカルで環境複数構築する場合には、手動の方が楽になるので、今回備忘録的にまとめてみました。

この知識を活かして、自宅ネットワークの構成も見直してみたいと思います。

 

今回はこの辺で。

お読みいただきありがとうございました!

 

※こちらのブログでは
日々学んだことを自分の言葉でアウトプットし、スキルとして定着させるために発信しています。

自分用のメモが中心ですが、温かいコメントやアドバイスなどいただけるととても励みになります。>‗<//

 

【ネットワークの構成要素】インフラSEの駆け出し日記

第9話 ネットワークの構成要素


まえがき

どうもです。サーバーやDBについての話題が多くなっていますが、今回はネットワークについて振り返り、構成要素を復習してみたいと思います。
以前、ファイル転送の際にTCP/IPについてまとめたことがありますが、ネットワークはITに関わる上で基礎中の基礎です。今回は、その構成要素を整理してみます。

 

今回まとめる項目

  • 前提知識(パケット、OSI参照モデル
  • ネットワークインターフェース
  • リピーター
  • ブリッジ/レイヤ2スイッチ
  • ブリッジ/レイヤ3スイッチ
  • レイヤ4/7スイッチ
  • ゲートウェイ

 

前提知識(パケット、OSI参照モデル

パケット
データ通信の基本単位です。「フレーム」も似た意味で使われます。
通信ではデータを小さな単位(パケット)に分けて転送し、これをパケット交換と呼びます。

 

OSI参照モデル
OSI参照モデルは、ネットワーク通信を7つの階層に分けて整理した国際標準規格です。
それぞれの層にプロトコルや機器の役割があります。

 

OSI参照モデルの7階層>
1.物理層
データを電気信号や光信号に変換して物理的に伝送します。

例: LANケーブル、光ファイバー、ハブ

2.データリンク層
同じネットワーク内での通信を管理します。エラーチェックやフレーム(データ単位)の送受信を行います。

例: Ethernet、スイッチ、MACアドレス


3.ネットワーク層
異なるネットワーク間のルーティングを管理します。IPアドレスを使ってデータを転送します。

例: IP(Internet Protocol)、ルーター

 

4.トランスポート層
データの信頼性を確保します(パケットの順序、再送など)。アプリケーション間の通信をサポートします。

例: TCPUDP


5.セッション層
通信セッション(接続)の開始、維持、終了を管理します。

 

6.プレゼンテーション層
データ形式の変換、暗号化、圧縮を行います。

例: SSL/TLSJPEGMPEG


7.アプリケーション層
ユーザーが利用するアプリケーションにネットワークサービスを提供します。

例: HTTP、FTPSMTPDNS

 

 

では、本題へ。

 

ネットワークインターフェース

コンピュータやスマホをネットワークに接続するためのインターフェースです。

NIC(Network Interface Card)として存在し、各デバイスに搭載されています。
MACアドレスはインターフェースごとに一意で、製造者識別情報によって管理されます。主に物理層で通信を届ける際に使用されます。

 

リピーター

リピーターは物理層の装置で、電気信号や光信号を中継・増幅します。
例えば、ケーブル上の信号を受信し、増幅や波形整形をして再送します。
よく聞く「ハブ」という用語は、スイッチングハブ(L2スイッチ)を指すことが多いです。

 

ブリッジ/レイヤ2スイッチ

L2スイッチと呼ばれることもあります。
フレームが入ってくると、宛先MACアドレスを確認し、適切なポートにデータを転送します。これにより、物理層からデータリンク層までの通信を実現します。
有線LANで使用される多くのハブは、このL2スイッチに該当します。

 

ブリッジ/レイヤ3スイッチ

L3スイッチは、L2スイッチにルーターの機能を加えたものです。
パケットの宛先IPアドレスを見て適切なポートへ転送します。これによりネットワーク層の通信をサポートします。
イーサネット間やイーサネット無線LANの接続にも利用されます。

 

レイヤ4/7スイッチ

トランスポート層からアプリケーション層までを担当します。
通信内容を分析し、特定の処理(例: 負荷分散)を行います。

L4スイッチ: TCP/UDPを確認し、適切なサーバーやポートに通信を振り分けます。
L7スイッチ: URLやアプリケーション情報を基に、適切なサーバーに振り分けます。
ゲートウェイ
異なるネットワーク間のデータをやり取りする中継装置です。プロトコルデータ形式の変換も行います。

例: LANとWANの接続
デフォルトゲートウェイ: ネットワーク内のデバイスが外部ネットワークに通信する際に利用する中継地点。

 

まとめ

ネットワークの構成要素をまとめました。特にルーター、スイッチ、ゲートウェイの違いは初学者には混乱しやすい部分ですが、整理して理解できてよかったです。。
今回の知識をもとに、自宅のネットワーク構成を確認してみます。

 

 

では、今回はこのあたりで。。

 

お読みいただきありがとうございました。

 

 

※こちらのブログでは~

日々に学んだものを言語化して自分のスキルにするためにブログを行っております。

自分の整理と復習用ですが、温かいお言葉やアドバイスは大歓迎です。>‗<//

【VitualBox/AlmaLinuxへSSHで接続する方法】インフラSEの駆け出し日記

第8話 VitualBox上にAlmaLinuxを立てて、SSHで接続

 

まえがき

お久しぶりです?業務や日々の復習に忙しく、ブログにするところまで中々進めずにいましたが、順調に日々色々なことを学習しております。

シェルスクリプトSQLなども爆速で進んでおり、復習の日々です。

ブログでは打って変わって、LinuxのOSをインストールをしようと思い、VitualBoxで色々悪戦苦闘を繰り広げておりました。ただ、やるだけだと毎回サーバーを立てるときに苦労しそうなので、身に着ける意味で書いていこうと思います。

 

 

この記事で取り組むこと

自宅環境にてAWSLinux(AmazonLinux)でコマンドなどの練習をしておりましたが、
一から全部自分でサーバーを立てたいと思い、試行錯誤した結果をまとめてみます。
ゴールとしては、サーバーを立てて、ターミナルから操作をできるところまでとします。
細かな設定ファイルの詳細などはこれからなので、割愛をさせていただきます。
今回はRHEL系のLinuxで環境設定を実施していきます。

 

~~~~~~~~~~~~~~~~~~~~~
実行環境
・windows11
・AlmaLinux (AlmaLinux-9.4-x86_64-minimal)
Oracle VitualBox

~~~~~~~~~~~~~~~~~~~~~

 

VM Virtual Boxのインストールはこちら

https://www.virtualbox.org/


almaLinuxのインストールはこちら

https://almalinux.org/ja/get-almalinux/

 

※今回はCUIでのコントロールが必要なため、minimalを選択しました。
※インストールにminimalでも時間がとられてしまう可能性があります。


windows11だと仕様でこのような画面が表示されますが、こちらは一旦、スルーしていただいて大丈夫です。
今回は、windwos上ではなく、virtualboxで別のPCを操作することになります。

 

 

ここまでで、一旦、vitualboxとLinuxがインストールできているので、下準備完了です。

では、早速、vitualBoxの操作へ移行していきたいと思います。

 

VitualBoxでAlmalinuxサーバー起動

VirtualBoxのトップ画面から全体の「新規」を選択する。

 

仮想マシンの作成のポップアップが表示されるので、サーバー名、ISOイメージで、事前にインストールをしていたAlmaLinuxの参照先を選択します。

 

 

ハードウェアとハードディスクの容量についても設定を行います。

特に決まっていない場合は、デフォルト値でも問題ないかと思います。

 

トップ画面に新たなサーバーが追加されたので、「起動」をクリックします。

 

 

起動するとまず、言語設定画面があります。ここは日本語を選択

 


そうすると概要の設定画面に進みます。

ここでは各種項目の設定を行います。「インストール先」の項目では内容の確認が必要のため、項目を確認して「完了」ボタンを2回押すと下記のように通常のアイコンとなります。

 

 

 

rootユーザーと一般ユーザーのアカウントのパスワードもこちらで設定します。

一般ユーザーはLinux側でも追加は可能です。

 


こちらで設定が完了し、「インストール」の実行まで進めば、

そのまま起動してvitualboxでログインができるところまで進みます。

 

操作の注意点:VitualBox内でのサーバー操作の際に、hostPCの操作ができないという使用になっています。そのため、host側の操作をしたい場合はCtrlの右でカーソルを移動することができます。

 

 

SSHで接続するための手順

VitualBox内での使用は異常に見にくかったり、操作が難しかったりするので、

マウス操作など、ターミナルからSSH接続できるように準備を進めてまいります。

 

そもそも、サーバー仮想化とは物理的なマシンOS(windows)などの上に、仮想化ソフト(VBoxなど)を立てて、その上にサーバーを立てることができる仕組みです。

 

そのため、ネットワークの設定に関しても物理的ではないため、複数の仮想ネットワークが存在をしています。VitualBox上では下記の6種類をそれぞれのサーバーで設定する適宜していきます。

 

NAT:Vboxから外部へ通信
内部ネットワーク:内部間のみでの通信
ホストオンリーアダプター:内部のVboxとホストPC間の通信
汎用ドライバ:GNS3などが設定をする。
NATネットワーク:複数の仮想マシン間でネットワークを共有、外部ネットワークへはNAT経由で接続を行う。

 

今回実現する接続について、NATホストオンリーアダプターで設定を行っていきたいと考えています。

 

NATでは、ゲストPC(新たに立てるサーバー)のIPアドレスからホストPCのIPアドレスへ送信元NATされ、外部へ出ていく形となります。また、外部ネットワークから仮想マシンには直接アクセスできません。

ホストオンリーアダプターでは、ホストからゲストへの通信を確立させていきます。

 

それでは、具体的な手順に進んでいきたいと思います。

 

 

・ネットワーク設定の手順
VirtualBoxのメインメニューから設定:

VirtualBoxのメインウィンドウで仮想マシンを選択し、[設定] > [ネットワーク]をクリックします。

 


ネットワークの設定の画面が開くので、作成を押すと「NatNetwork」が新たに作成されます。

 

 

外部からも直接アクセスできるように、ポートフォワーディングの設定も合わせて、

行っていきます。ホストからゲストへのアクセスを可能にします。

 

 

「ポートフォワーディング」から新たなルールを追加し、必要なポートを設定していきます。

 

続いて、ホストオンリーアダプターの設定もしていきます。

先ほどと同様に今度は「ホストオンリーアダプター」を選択し、作成をおこなっていきます。

 

 

これにて完了です。

今度は、仮想サーバー側の設定を行っていきます。

該当のサーバーの設定から「ネットワーク」を選択します。

ここでアダプターの選択を行います。先ほど設定したNATとホストオンリーアダプターを有効化していきます。

ポートフォワーディングも先ほどのから設定し、ホストから仮想マシンへのアクセスを可能にします。

sshをするので、ホストとゲストの両方22番ポートで設定します。ここでIPアドレスを入力するのですが、NATで設定したものをruleとして追加します。

 

AlmaLinux側の設定も反映しているかどうか確認をしてみます。

コマンドip aを入力すると反映されていることがわかるかと思います。

 

 

一連の設定が終わったので、ようやくSSHで接続していきます。

 

SSHのインストールについて

設定ができたからSSH接続できるわけではなく、ほぼ真っ新な仮想サーバーのため、SSHをインストールしないといけません。

 

sshのサーバーのインストール

$ dnf install -y openssh-server

 

SSHサーバーを起動、再起動時にも自動的に起動するように設定

$ systemctl enable --now sshd

 

SSHの状態を確認

$systemctl status sshd

 

 

completeとなればOKです。

念のため、netstatでも、ポートが開いているか確認してます。

問題はなさそうです。

 

 

SSHでターミナルからのアクセス

ターミナルソフトのホストオンリーアダプターのIPアドレスへ接続をしていきたいと思います。

 

 

無事にログインすることに成功しました。

 

 

また、www.yahoo.co.jpにpingを飛ばすことで、仮想サーバーから外部へインターネットがつながることも確認ができました。

 

 

これで、Linuxの操作を色々と自宅でも設定ファイルなどいじりながら勉強をしていきたいと思います。

 

最後に

映像授業の環境構築だとどうしても速足で紹介されるようなポイントですが、今回一から調べながらだったので、結構苦戦しました。あと、インターネットの情報も痒いところに手が届く情報がドンピシャでなく、ググり力がさらに問われるような形でした。

なんとなくのイメージを掴むことができましたが、今後はより詳しくなり、環境構築などにも少なからず役に立てていきたいです。

 

 

では、今回はこのあたりで。。

 

お読みいただきありがとうございました。

 

 

 

※こちらのブログでは~

日々に学んだものを言語化して自分のスキルにするためにブログを行っております。

自分の整理と復習用ですが、温かいお言葉やアドバイスは大歓迎です。>‗<//

 

【grepコマンドと正規表現】インフラSEの駆け出し日記

第7話 grepコマンドと正規表現について

 

まえがき

Linuxを触る中で絶対に必要となるgrepコマンドについて、学ぶ機会があったので、

今回自分の中で整理をしていきます。

正規表現については、慣れるまで少し時間がかかりそうな印象なんで整理しながら覚えていきたいと思います。

 

それでは、早速

 

Grepコマンド

ファイルの中で、正規表現によって表される検索文字列があるかどうか調べるコマンドです。

あくまでのファイルの中の文字列を検索するコマンドなので、ファイルやディレクトリを調べるコマンドではありません。

ファイルやディレクトリを調べるには、findコマンドを使用するみたいだ。。

 

-書式

grep [オプション] 検索パターン [ファイル名]

 

grep [オプション] [-f ファイル名] [ファイル名]

 

-主なコマンド

  • -c     : パターンがマッチした行の行数だけを表示
  • -f   : 検索パターンをファイルから読み込む
  • -i   : 大文字小文字を区別せず検索する
  • -n  : 検索結果と合わせて行番号も表示する。
  • -v  : パターンがマッチしない行を表示する
  • -E  : 拡張正規表現を使用する。

 

ドキュメントファイルでキーワードを検索する際に、大文字小文字などそのファイルによって変わる可能性があるため、「-i」 のオプションはつけておいたほうが良いです。。

 

また、Linuxでは設定ファイルやスクリプトはコメントを”#”でのある行に書かれていることが多いです。なので、コメント省いて表示をしたい場合などには、「-v」 のオプションはつけておいたほうがよさそうです。

 

 

正規表現

文字列検索するために、使用する手法の一つです。記号や文字列などを用いて、目的の文字列を検索します。

記号はメタキャラクタとよばれています。

 

・「^」: 行頭

・「$」: 行末 例えば、grep 'files$' → 行末が「sh」の文字列をすべて検索できる

・「.」    :   任意の一文字

・「*」    : 直前の文字の0回以上の繰り返し

・「\」   :直後の文字をメタキャラクタではなく通常の文字として処理する。

・「[ ]」  :[ ] 内の文字のいずれか1文字

     - : 範囲の指定 [0-9]などのように表記する。

     ^: 先頭にあるときは、「~以外」を表す。

 

拡張正規表現を使用する場合は、egrepコマンドかgrepコマンドのオプションとして -E をつけます。

 

・「+」      :直前の文字の1回以上の繰り返し

・「?」       :直前の文字の0回もしくは1回の繰り返し

・「|」        :左右いずれかの記述にマッチする

・「{n}」     :直前の文字のn回の繰り返し

・「{n,m}」 :直前の文字のn回からm回の繰り返し

 

 

補足:「*」: 直前の文字の0回以上の繰り返し

最初、記載されているとき説明の意味がすぐに理解できなかったのですが、この直前の文字の繰り返しとは、直前の文字が存在しなくても一致することになる。

 

例えば、file1に下記の文字列が記載されていたとすると

・file1

~~~~~~~~~~

linux25

linux10

linux255

linux25500

linux2500

linuxAA

~~~~~~~~~~

grep '25*'  file1 という検索をすると、下記のように全行検索されることになります。

~~~~~~~~~~

linux25

linux10

linux255

linux25500

linux2500

linuxAA

~~~~~~~~~~

 

最後に

正規表現とシェルのメタキャラクタでは、同じ文字でも意味が違うやつがあったりとややこしいですが、しっかりと体に覚えてすぐに活用できるように練習をしていきます。

また、こちらの記事で検索の仕方などはLinuxを用いて練習してみたので、

これから学ぶ方は、実際に例題を見ながらコマンド入力をしてみたほうが良いかもしれないです。

 

qiita.com

 

 

では、今回はこのあたりで。。

 

お読みいただきありがとうございました。

 

※こちらのブログでは~

日々に学んだものを言語化して自分のスキルにするためにブログを行っております。

自分の整理と復習用ですが、温かいお言葉やアドバイスは大歓迎です。>‗<//

 

 

【linux即暗記コマンド操作やクォート】インフラSEの駆け出し日記

第5話 シェルの慣れ初めに覚えておきたいこと。

 

まえがき

linuxを操作するためのコマンドやクォートなどを整理をしていこうと思います。

一回慣れてしまうと身体が覚えていくと思いますが、調べると知らないこともあったので、まとめていきたいと思います。何回か整理したくなりそうです。。

 

それでは、まとめていく

 

・Tabキー

初めてLinuxを触っていてコマンド画面を見ながら、「tab、tab」と何度も言われてしまたので、これは改めてまとめておきます。

tabキーには補完機能が備わっています。

 

例えば、「doushiyoudarekatasuke.txt」というテキストファイルがあった場合、

一々、全部入力するのは大変です。なので、

「doushiyou」まで入力すると残りの部分が自動的に入力されます。

なんて素晴らしいのでしょうか。。

仮に、「testdayo.1」「testdayo.2」があった場合、tabキーを一度押すと「testdayo」

まで入力され、もう一度、入力するとその時点で候補のファイルをすべて出力してくれます。これで、日付までのものが一覧でどのファイルを使いたいか一目瞭然です。

 

・カーソル移動

「Ctrl + A」: コマンドラインが長くなったとき、カーソルをすぐに行頭まで持ってきてくれる。

 

「Ctrl + E」: カーソルを行末まで一気にもってきてくれる。入力間違いして行頭を直してすぐに続きを入力できることになります。非常に便利ですね。。

 

・コピー&ペースト

・コピー:左カーソルでコピーしたい範囲までもっていくと、自動的にコピーしてくれます。

・ペースト:あらかじめコピーをしてカーソルを合わせて、右クリック。

 

こちらは、かなり便利な機能ですね。。これは身体で覚えてきて、Linuxを操作してないときも、間違えてしてしまうこともありました。。

 

 

コマンドラインの編集

「Ctrl + D」:カーソル部分の一文字を削除してくれる。

 

「Ctrl + H」:カーソルの左側を削除してくれる。

 

「Ctrl + L」:いったん画面をクリアにしてから、カレント行を再表示してくれる。

 

 

コマンドラインの実行

 

例)コマンド オプション 引数

 

・コマンドは、実行可能なプログラムまたは、スクリプト

・オプションは、コマンドに対して動作する指示のことを指す。

・引数は、コマンドに渡す値。

 

・クォート

こちらも初めて出てきたときにややこしくてなってしまったので、先にまとめておきます。

「’ ’」ーシングルコーテーション

シングルコーテーションは、その中のすべて文字列であると解釈される。

 

例えば、

HOME=home

echo '$HOME'

$HOME

※echoコマンドは指定した文字列や数値、変数の値を出力する。

 

このように、変数でHOMEを指定して$をつけていても変数を参照されず、そのまま出力される。

 

「” ”」ーダブルコーテーション

ダブルコーテーション内も文字列として見なされる。ただ、その中に変数があれば、その変数の内容が展開される。

 

例えば、先ほどの例でいくと

HOME=home

echo ”$HOME”

home

 

このように、あらかじめ定義していた変数が参照され、出力されることになりました。

 

「\」ーバックスラッシュ

エスケープ文字と言われている。直後の文字はすべて文字として扱われてしまう。

 

例えば、先ほどの例でいくと

HOME=home

echo ”\$HOME”

HOME

 

「‘ ‘」ーバックコーテーション

バックコーテーション内にコマンドあれば、そのコマンドを実行した結果が展開される。

 

例えば、

echo "カレントディレクトリは‘pwd‘です。"

カレントディレクトリは/home/userです。

 

「$(コマンド)」でも。同じように展開されます。どうやら見にくいのでこちらが推奨されているそうです。

 

・コマンド履歴

矢印キー↑で実行したコマンドが最近実行したものから遡って表示される。

これは色々と触っていて、非常に便利でした。。

 

最後に

シェルなども触り始めて、遭遇したものを軸に今回はまとめていきました。

また、あらかじめ知って整理したほうがいいものが他にも書きながら出てきたので、次回に持ち込ませてください(切実)

 

では、今回はこのあたりで。。

 

お読みいただきありがとうございました。

 

※こちらのブログでは~

日々に学んだものを言語化して自分のスキルにするためにブログを行っております。

自分の整理と復習用ですが、温かいお言葉やアドバイスは大歓迎です。>‗<//

 

 

【psコマンド/netstatコマンド】 インフラSEの駆け出し日記

第5話 psコマンド/netstatコマンド

 

まえがき

インフラエンジニアとしてまず重要になってくるのが、下記の3つと知ったので、

それに関連するコマンドを整理していきます。

 

ファイルシステム

②プロセス(OSがどのように動いているか)

③ネットワーク

 

今回取り上げるのは、プロセスに関わるpsコマンドとネットワークに関わるnetstatコマンドです。

 

では、早速いきたいと思います。

 

プロセスとは

動作中のプログラムをオペレーティングシステムが管理する基本単位。

現在、実行されているプログラムや実行予定のことをプロセスといいます。

 

サービスが正常に稼働しているかどうかはインフラエンジニアにとって重要なので、

プロセスの考え方はしっかり押さえたほうがよさそうですね。

 

そのプログラムの監視のためにpsコマンドが存在しているということです。

 

psコマンド

現在実行されているプロセスを表示することができる。

psコマンドのみでは、実行したユーザー自身が軌道しているプロセスを表示する。

 

<出力される表示項目について>

・PID:

プロセスIDと呼ばれる固有の識別子。

linuxでは初めにinitと呼ばれるプログラムが動くためにPIDは常に1となっています。

・TTY:

teletypewriter(テレタイプライター)の略語。

SSHtelnetで接続している仮想端末(ターミナル)を示す

・TIME:プロセスが実際にCPUを使った時間

・CMD:プロセスの実行コマンド

 

主なオプション

※メインで使用したもののみ掲載

オプション 説明
a 他のユーザーのプロセスも表示する。
u ユーザー名も表示する
x 制御端末のないデーモンなどのプロセスも表示する。

 

※デーモンとは

メモリ上に常駐してシステムサーバーやサーバーサービスを提供するプロセス。起動中もずっと稼働しているプロセスというイメージです。

 

psコマンドを使用して、監視や運用など今後のチューニングのために役立てたり、障害など何か問題が起こった際に必要になってくるコマンドだということを掴むことができました。より詳細は今後より勉強して学んでいきたいと思います。

 

続いて

 

netstatコマンド

ネットワーク機能に関するさまざまな情報を表示する。ホストのネットワークの状態やソケット、インターフェース毎のネットワーク、開いているポート番号の確認などを見ることができる。

つまり、リアルタイムにネットワークの接続状況を知ることができます。

 

主なオプション

※メインで使用したもののみ掲載

オプション 説明
a 全てのソケット情報を表示する。
t TCPポートのみ表示する。
l stateがLISTENのもののみ表示する。
n アドレスやポートを数値で表示する。

 

実際のLinuxに各コマンドを入力して動いていることを確認することができました。

 

また、TCPなどのネットワークの基礎知識はこちらで学べばいいとアドバイスをいただいたので、

こちらを購入して読んでいきます!!

 

実際のコマンド画面もやりながらつづったので、だいぶイメージを掴むことができました。実際画面を見たい方はググれば山ほど出てきました。。

 

 

では、今回はこのあたりで。。

 

お読みいただきありがとうございました。

 

※こちらのブログでは~

日々に学んだものを言語化して自分のスキルにするためにブログを行っております。

自分の整理と復習用ですが、温かいお言葉やアドバイスは大歓迎です。>‗<//

 

<参考文献>

psコマンドで表示される内容について調べた #Linux - Qiita

 

netstat コマンドによるネットワークステータスのモニタリング - Oracle® Solaris 11.3 での TCP/IP ネットワーク、IPMP、および IP トンネルの管理

【CPU、メモリ、ストレージ、カーネル、シェル】インフラSEの駆け出し日記

第4話 コンピュータ基礎知識(CPU、メモリ、ストレージ、カーネル、シェル)

 

~まえがき~

どうもです!不定期更新ですが、できれば毎日を目標に頑張っていきたいなっという心持だけは宣言していきます。

 

日々新しい知識が取り入れており、昨日の自分が取り残されている感じですが、どんどん吸収していきたいです所存です。

 

基本知識から順を追っていきたい気持ちは山々ですが、復習したいことを優先にとりあえず頑張っていきます!

 

さて本題へ

 

コンピュータの基礎知識のおさらい

Linuxを扱っている中でまず初めにどんなCPUなのかなど気になったので、調べてみました。その際に基礎知識も改めておさらいをしていきたいと思います。

 

そもそも、コンピュータって。。

 

入力、演算を行う機械、プログラム自体は命令とデータの集合体で、人間には解釈できないコンピュータの言語が中で繰り広げられているってことだ

 

下記で紹介するCPUとメモリやストレージはそれぞれ密接に関係しており、コンピュータを動かすために存在している。

 

それぞれの概要についてみていきましょう。

 

・CPUとは

コンピュータの頭脳であり、塩酸処理を行う部分。

メモリからプログラムを読み出して、処理を実行をする。「プロセッサ」と呼ぶこともある。

 

自分のPCなどを調べると”GHz(ギガヘルツ)”が出てくるのですが、これは1秒間の処理の性能を表しているみたいです。

 

CPUは1つの処理しかできない仕様になっています。

でも、Excel開きながらメールをしたりしてるけど実際どうなんだって思いましたよね

 

CPUはめちゃかしこさんなので1つの処理を分割して、すごい速さで様々プログラムを処理していっているんです。なので、いろいろ画面を変えながら私たちはPCを触ることができています。

 

 

・メモリとは

データを記憶する役割をもつパーツがメモリ(メインメモリ、主記憶)です。

メモリに記憶された内容はシステムの電源が切れると消えてします。

 

プログラム(プロセス)はこのメモリ上で動いていることになります。

なので、LinuxもOSなので、論理的な概念でこのメモリ上で動いてることになります。

 

キーボードやマウスなどでメモリを経由して画面に表示したりするのが、このストレージになります。

 

・ストレージ(ハードディスク)とは

メモリは容量も大きくはなく、電源を切ると内容は消失してしまいます。そのため、大きなサイズのデータや長期間保存するデータはハードディスクに格納します。

システムに内蔵するものと外部で保存するもの(HDDやSSDなど)

 

システムやアプリケーションなどを保存しておいて、処理をするときにメモリがこのストレージからファイルデータをもってくることで再度、プログラムを処理、実行できるようになります。

Linuxをダウンロードしている場所もここになるって訳です。

 

整理することができましたが、ここで気になったことがあったのでさらに調べてみます。

 

LinuxのOSの構造とは

メモリ上でLinuxを動かしていて普段自分は色々なことができるんだなと感じております。。

CPUの話の延長戦で、「シェル」と「カーネル」の話も出てきたのでこちらも調べてみます。

 

カーネルとは

OSの中心となる「OSが持つ機能の集合体(核)」で、

カーネルとユーザ(人間)の仲介役としてカーネルを囲うように「シェル」が存在します。

物理装置を抽象化したものというイメージです。

コマンドなどでこのシェルを介して、カーネルへ命令を送って動かしていることになります。ここでTCPの通信を通じるネットワークが入ってきます。

 

シェルの中には、「bash」「Java」「PHP」「C」などのプログラミング言語があるという形です。

シェルからLinuxだとミドルウェアと呼ばれるアパッチやPostfixなどとやり取りが行われ、実行することができます。

 

大体のイメージを掴むことができたので、今回はここらで筆をとめたいと思います。

調べていくと深淵に突入してしまう気がしたので、切り時が難しいですね、、

 

最後に

色々と調べながら、ブログを更新していますがやりながらいつもググりまくっている方々がすごい知識をもった上で上質なブログなどを書かれていて、心が折れそうになりますが、自分のためにコツコツと励ましながらやっております。。

 

 

<参考文献>

www.acrovision.jp

 

では、今回はこのあたりで。。

 

お読みいただきありがとうございました。

 

※こちらのブログでは~

日々に学んだものを言語化して自分のスキルにするためにブログを行っております。

自分の整理と復習用ですが、温かいお言葉やアドバイスは大歓迎です。>‗<//

 

 

【ファイルシステムとpwdコマンド】インフラSEの駆け出し日記

第3話 ファイルシステムpwdコマンド

 

今回は、Linuxファイルシステムpwdについて書いていきたいと思います。

LinuxをインストールをしてもいつもGUIで操作をしていたもので、ディレクトリ構造についてイマイチイメージがつきにくかったので、整理をしてみます。

 

まず

 

ファイルシステムとは

コンピュータのリソースを操作するための、オペレーティングシステム (OS) が持つ機能の一つ。ファイルとは、主に補助記憶装置に格納されたデータを指すが、デバイスやプロセス、カーネル内の情報といったものもファイルとして提供するファイルシステムもある。(wikiより抜粋)

 

なるほど。。

普段、触っているwindowsのフォルダやハードディスクやSSDで色々なデータを保存しているので、データを管理をしており、そのデータはファイルなのでそれを管理する仕組みってことですか。

 

じゃあLinuxファイルシステムってどのようなものなんだろうか。

 

VFS(Virtual File System)

Linuxにおいてのファイルシステムの規約。

Linuxの場合、全てのデータがこのファイルやディレクトリで操作をすることができる。

というイメージを掴みました。(宣言)

 

Linuxではマウント(/)が最上位でその下にほかのディレクトリ(/homeや/etc)が存在するということになります。

 

Linuxでコンソール画面に入ったとき。権限が与えられていない場合は自分のホームディレクトリに入ります。

 

↓簡単なイメージです。

[/home/user@1234]

 

ルート(/)という最上位から次のhomeディレクトリがあってそのさらに下に自分のホームディレクトリがあるってイメージです。

 

なるほど。。  じゃあ

 

てっぺんからどんどん枝分かれしていくマンションみたいな構造になるんだな。。

じゃあ今自分がどこにいるのかわからなくなりそう。。。

 

その迷いに、グーグル先生はコマンドを使うといいよと教えてくれました。(恩師)

迷いそうになったら、コマンドを使おうということにします!!

 

では。。 まずコマンドって何ってなります

 

調べてみると簡単にコンピュータに特定の機能の実行を指示する命令ってことみたいでした。

なのでコピーしたいとかファイルを動かしたいってときは、その実行結果になるコマンドを入力をすればいいってことだな!

 

気を取り直して。。

 

pwdコマンド

作業中のディレクトリ(カレントディレクトリ)の位置を絶対パスで表示するコマンドpwd は「Print Working Directory」または「Present Working Directory」の略と言われています。

pwd コマンドの出力結果は、ルートディレクトリー(/)からの絶対パスで表示されます。すべてのディレクトリーはスラッシュ(/)で区切られ、最後のディレクトリーが現行(カレント)ディレクトリーです。

 

~~~~~~~~~~~~~~~~~

$ pwd    

#これを実行すると今現在のディレクトリがわかるようになります。

~~~~~~~~~~~~~~~~~

 

ディレクトリ理解するために動き回ったり、ファイルをコピーしたり、移動したり

などいろいろ訓練して慣れるしかなさそうですね。。

 

実際にノートに5階層くらいかいてそこから別のディレクトリを作成してペンでなぞりながらトレーニングしてみたいと思います。

 

ちょっと今回は以前より復習用って感じですけどアウトプットメインで頑張っていきたいと思います。

下記の参考文献読めばかなり詳細にも教えてくれて助かりました。。。

 

<参考文献>

 

lpi.or.jp

 

 

では、今回はこのあたりで。。

 

※こちらのブログでは~

日々に学んだものを言語化して自分のスキルにするためにブログに掲載します。

自分の整理と復習用に記載します。温かいお言葉やアドバイスは大歓迎です。

 

【ファイル転送プロトコル(FTP、FTPS、SFTP、SCP)】インフラSEの駆け出し日記

 

第二話 周辺知識、単語を理解する。

 

今回は勉強していく中で知った単語などを簡単にまとめて整理していきます。

 

FTP、FTPS、SFTP、SCP

まずは、FTP、FTPS、SFTPS、SCPの4種類だ!!

そもそも、この4種類はファイル転送プロトコルと呼ばれるものです。

 

まず初めに・・・

 

・ファイル転送プロトコルとは

ファイル転送時に必要となる規約や手順のことを指します。

ファイルを転送を行う際にデータ容量が大きいとそのまま送ることはできず、データを分解する。その分解データをパケットと呼びます。プロトコルは、どのように分解、送受信、復元をするのかを定めたルールということでした。

 

ここでの規約や手順の中に上記の4種類が登場するってことですね。。

ではそれぞれの違いについて確認をしてみます。

 

まず、調べる中でコネクションという単語が出てきたので、

こちらも先に調べておきます。

 

・コネクション

通信を行う機器やソフトウェアの間に確立された仮想的な専用通信路のことを指す。

 

コネクションを用いる通信方式では、通信を始めたい側が相手方の所在位置や識別番号を指定して相手方に接触を試み、通信可否(や方式によっては設定や条件など)を問い合わせ、可能な場合は仮想的な専用の通信路を形成する。この通信路をコネクションという。

 

事前の知識を整理できたので、それぞれを見ていきます。

 

FTP

初期に登場したファイル転送の基本的な方法として使われている。しかし、

ユーザ名やパスワードなどの認証情報を暗号化せずに転送するのでセキュリティ面でデメリットがある。SSHなどもセキュリティ面で使われているので、FTPはそれは使われないですね。。

 

イメージとしては、

FTPサーバーにファイルをアップロードする

②そのファイルをTCP/IP経由でFTPのホストに中継する

③受信者がファイルにアクセスして、そのファイルをダウンロードする。

 

少し脱線しますが、TCP/IPが急に出てきたので、こちらも調べてみます。

 

TCP/IP

TCP/IPとはTCPとIPの2つのプロトコルを一緒に使っていることを指している。

・IP

データの送信者と受信者をIPアドレスで識別して、いくつかのルーターを経由してデータを送るためのプロトコル

TCP

データの送信者と受信者がお互いに相手の確認を取りながら、確実にデータを受け渡すためのプロトコルです。

このようなデータの送信方式を「ハンドシェイク」と呼ぶそうです。

プロトコル(protocol)とは、コンピューター同士が通信する際に定められた手順や規約、信号の電気的規則、送受信の手順などを指すIT用語です。

 

お互いが約束事を守ってデータを送信することで、確実にデータを送りあうことができるとのことなんだな。

 

また、コネクションとしては制御用コネクション(989番ポート)とデータ転送用コネクション(990番ポート)の2つのコネクションを確立し、通信を行う。

 

・FTPS

FTPのデメリットを改善したファイル転送プロトコルです。

SSL/TLSによって通信が暗号化され、安全にデータをやり取りできます。

FTPのよりセキュリティが強くなったバージョンということです。

 

コネクションはFTPとどうように2つ使用します。

 

SSL/TLSとは、

公開鍵暗号共通鍵暗号という暗号化の技術を利用して安全に通信を行う仕組みのことです。通信内容の盗聴や改ざんを防止することができる。SSLではサーバ証明書を通信に使用する。サーバ証明書とは、サーバの公開鍵に認証局ディジタル署名したもの。

 

・SFTP

FTPの今度は、前にSがついているものです。パッと見たときはどっちがどっちかわからなくなりそうですね。。

 

こちらはFTPSよりも後に登場をしたもので、高いセキュリティでファイル転送ができるプロトコルです。FTPSではSSL/TLSで暗号化していましたが、SFTPは前確認したSSHの通信を使っています。

また、FTPとの違いとしては、コネクションとしてTCP22番ポートを使用し、単一のコネクションでファイル転送を行います。

コネクションの数も違うため、セキュリティ面がより強力となっています。

 

・SCP

SSH(Secure Shell)によって安全にファイル転送を行うプロトコルです。

パスワードなどの認証部分を含むすべてのネットワーク上の通信が暗号化できるため、コンピューター間で安心してファイル転送が可能になります。

 

SFTPと同様にSSHによって安全にファイルを転送することができます。

 

では、SFTPとSCPの違いはなんだろう・・

 

>SCP
・転送の再開ができない。
・SFTPに比べて高速(と言われている)
・フォルダの送信はできない。(クライアントソフトを用いれば可能)

 

>SFTP
・転送を中断しても、途中から再開できる。
・SCPよりも転送速度が遅い

 

このように記載がありました。使用場面に応じてそれぞれを使用するイメージなのか。

 

実際に、使用する際にそれぞれの特徴やメリット、デメリットを抑えていきたいです。

 

・まとめ

FTP、FTPS、SFTP、SCPのそれぞれの特徴については、イメージをつかむことができた。SFTPとSCPを主に利用することになると思うが、どのような場面で使い分けているかなどにも注目して今後、使用する際は意識をしていきたいです。

 

次は基礎的なインターネットをしっかり学んでいきたいと思います。

 

<参考文献>

www.integrate.io

 

it-trend.jp

 

www.skyarch.net

 

 

では、今回はこのあたりで。。

 

※こちらのブログでは~

日々に学んだものを言語化して自分のスキルにするためにブログに掲載します。

自分の整理と復習用に記載します。温かいお言葉やアドバイスは大歓迎です。

 

【SSHとは】インフラSEの駆け出し日記

日々に学んだものを言語化して自分のスキルにするためにブログに掲載します。

自分の整理と復習用に記載します。温かいお言葉やアドバイスは大歓迎です。

 

======================

 

第一話 SSH

ssh(セキュアシェル)

まず初めにとりあえずインストールを行ったのが、こちらSSH

これから沢山利用をすることもあり、筆者は自宅でAWSのサーバーを立ててssh接続をしたことがあったが、なんとなくの理解のため改めて詳しく何なのかをまとめる。

まず、

 

Secure Shell(SSH)とは、リモートでコンピュータを操作する際に安全に通信するためのプロトコルです。

プロトコル(Protocol)とは、コンピューター同士でデータをやりとりする際に定められた手順や規格、約束事のことです

 

ではリモートでコンピュータを操作するってどうゆうこと?

会社以外の場所で使用しているコンピュータなどのデバイスから、通信回線を通して社内システムへアクセスすること。

データセンターなどにあるサーバーなどに遠隔地のからアクセスをする方法とのこと。

 

つまり、SSHを利用することで安全に接続する方法ということか。

sshを調べる中でtelnetよりも推奨されていると見かけるので、こちらも調べてみる。

 

telenetはssh同様にネットワーク経由で他のコンピュータを遠隔操作する仕組み

 

大きな違いとしては、通信が暗号されているかどうか

昨今は、セキュリティが重要な問題につながるので、sshが主流ということになるということ。今後、telnetは使うことはなさそうです

 

話を戻して、、

 

SSHの接続方法にも複数あり、「パスワード認証方式」と「公開鍵認証方式」があるらしい。

 

・パスワード認証方式

デフォルトの認証方式で、ユーザー名とパスワードでログインする。

この時、ユーザー名とパスワードは、接続先OSのアカウント情報が使用される。

 

・公開鍵認証方式

「公開鍵」と「秘密鍵」という2種類の鍵のペア(キーペア)を使用して認証を方式

また、難しい単語が出てきましたね。。

 

この方式というのは、サーバーにログインするユーザーは事前に自分のキーペアを作成して、そのうち「公開鍵」をサーバー側に登録をして、「秘密鍵」は自分のPC内に保存をする。

サーバーにログインする際には、自分の秘密鍵を使用して署名を作成し、サーバーへ送信する。サーバーは受け取った署名をペアとなる公開鍵で認証し、成功した場合ログインを許可するという仕組み。

 

ここにわかりやすい図がありました。

かなりイメージがついたねっ///

SSHとは?仕組みとSSHサーバーの設定をわかりやすく解説します! - カゴヤのサーバー研究室

 

公開鍵暗号方式を調べる中で、RSA暗号という単語も出てきたので、改めて調べたので記載します。

 

RSA暗号・・・素数を掛け合わせた筋の素因数分解の仕組みを利用した暗号技術

 

 大きな数字の素因数分解をするのは困難で、総当たりする以外に素因数を見つけ出す方法がありません。したがって、コンピュータで素因数分解しようとしても、大きな数字であれば膨大な時間がかかります。この難しさを利用したのが、RSA暗号です。

 

まとめ

SSHは遠隔地のコンピュータやサーバーにネットワークを介してセキュアな接続をする方法

・公開鍵認証方式なので、鍵を2つ作成することによって安全な接続を確保できるため主流になっている。

 

一旦、自分なりのイメージをつかむことができたので、今日はここでやめさせていただきます。

実際に画面を触ってみたりするのは、また別の回でまとめてみます。

 

では