20191009のLinuxに関する記事は6件です。

個人的Apacheのセキュリティを考慮した設定

個人的にApacheのセキュリティを考慮した設定を記載します。

iconsディレクトリ対策

デフォルトコンテンツで使う画像などが設置されているディレクトリについて、コンテンツ表示を無効化する。

autoindex.confの修正

vi /etc/httpd/conf.d/autoindex.conf
※以下の箇所をコメントアウト。

#Alias /icons/ "/usr/share/httpd/icons/"

#<Directory "/usr/share/httpd/icons">
#    Options Indexes MultiViews FollowSymlinks
#    AllowOverride None
#    Require all granted
#</Directory>

welcome.conf削除

非表示でもいいと思いますが、公開不要なものなので削除。

rm -f /etc/httpd/conf.d/welcome.conf

security.conf作成

vi /etc/httpd/conf.d/security.conf
※以下記載。

# バージョン情報の隠蔽
ServerTokens Prod
ServerSignature Off

# inode情報の隠蔽
FileETag None

# レスポンスヘッダからX-Powered-Byを削除
Header unset X-Powered-By

# httpoxy 対策
RequestHeader unset Proxy

# クリックジャッキング対策
Header append X-Frame-Options SAMEORIGIN

# XSS対策
Header set X-XSS-Protection "1; mode=block"
Header set X-Content-Type-Options nosniff

# XST対策
TraceEnable Off

<Directory /var/www/html>
   # .htaccess の有効化
   AllowOverride All
   # ファイル一覧出力の禁止
   Options -Indexes
</Directory>

クライアントから送信されるHTTPリクエストに関する設定

数値はあくまで例です。LimitRequestFieldSize が4096だと、
長いCookieコンテンツを送信した場合、Bad Requestが発生することもあります。
ただCookieの長さの上限をあまり大きくしないほうがセキュアです。

# リクエストボディの最大サイズ
LimitRequestBody 655360000
# リクエストヘッダーの最大数
LimitRequestFields 32
# リクエストヘッダーの最大サイズ
LimitRequestFieldSize 4096
# リクエストラインの最大サイズ(各リクエストの最初のライン)
LimitRequestLine 4096

ダミーのVirtual Hostを設定

 IPアドレスや意図しない逆引きアドレスからアクセスされないよう、最初ダミーのVirtualHostを設定します(↓はexample.comというドメイン名の場合)。この設定をしてログを確認すると、どれだけ不審な送信元IPからアクセスを受けているかわかります。

NameVirtualHost *:80
<VirtualHost *:80>
    ServerName dummy.example.com # 適当な名前でよい

    ...
</VirtualHost>

<VirtualHost *:80>
    ServerName example.com # 実際に使用しているドメイン
    ...
</VirtualHost>
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

xtUMLを導入する(linux編)未完

xtUMLを導入する(Mac編)未解決
https://qiita.com/kaizen_nagoya/items/dcb517f5d903ab079ec2

MacでうまくいっていなかったのでWindowsに入れてみて、うまく動かなかったので、
Linuxに入れ始めました。

最初に動いたのはWindowsです。

xtUMLを導入する(Windows編)
https://qiita.com/kaizen_nagoya/items/bdafc4b0e90275ce5b8e

背景(back ground)

組込みソフトウェア管理者・技術者育成研究会」(SESSAME: Society of Embedded Software Skill Acquisition for Managers and Engineers)
www.sessame.jp
を立ち上げた一人、二上 貴夫さんが展開されていた。

Model Checkingを適用した
実践的非同期制御検証
http://jasst.jp/archives/jasst07e/pdf/D2-3.pdf
富士ゼロックス株式会社 オフィスプロダクト事業本部 コントローラソフトウェア開発部 村石 理恵/服部 彰宏/野村 秀樹/山本 訓稔

ModelChecking技術の
専門性の排除とその効用
http://www.jasst.jp/archives/jasst08e/pdf/B4-2.pdf
富士ゼロックス株式会社 オフィスプロダクト事業本部 コントローラソフトウェア開発部 野村 秀樹/服部 彰宏/村石 理恵/山本 訓稔

プロセス改善セミナー 事例紹介
https://www.ipa.go.jp/files/000005103.pdf
で、事例紹介させていただいた。

2009年に名古屋で紹介いただいた。
UMLとモデル検証に関する講演会
http://toppers.jp/TOPPERS-USERS-mailman/2009-June/002776.html

導入(install)

xtUML eXecutable Translatable UML with BridgePoint
https://xtuml.org

導入作業(installing)

Download
https://xtuml.org/download/

https://s3.amazonaws.com/xtuml-releases/nightly-build/org.xtuml.bp.product-linux.gtk.x86_64.zip

ダウンロードして解凍したけどなにすりゃうごくかわからん状態。

How to install xtUML Editor on Ubuntu
https://xtuml.org/community/topic/how-to-install-xtuml-editor-on-ubuntu/

Install BridgePoint for Linux
https://xtuml.org/module-2/install-xtuml-editor-for-linux-modeling/

You cannot view this unit as you're not logged in yet.

登録してもメールが来ない。

参考資料(reference)

BridgePoint、xtUMLでExecutable UMLしたい 1 ダウンロード、インストール、ユースケース図
http://notainu.hateblo.jp/entry/2015/02/09/213712

xtuml2waslRel17 workspace
https://www.youtube.com/watch?v=xijEIH8iaR8
xtuml2waslRel17 workspace

wasl2xtumlRel17
https://www.youtube.com/watch?v=puAT5NDVFRU
xtuml2waslRel17 workspace

自己参考資料(self reference)

Ubuntuでスクリーンショット(Mac keyboard編) 
https://qiita.com/kaizen_nagoya/items/e165f571a3708e1e6999

ubuntu導入
https://qiita.com/kaizen_nagoya/items/25b6c7e2e2457d506f5e

文書履歴(document history)

ver. 0.01 初稿 20191008
ver. 0.02 参考資料追記 20191009

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

UbuntuでPDF編集

概要

  • UbuntuでPDF編集を行うには Xournal が便利。(良く名前忘れる)。

インストール

$ sudo apt install xournal

使い方

普通のペイントソフトみたいな感覚で使える
PDFエクスポートには少し癖があり、普通にPFDエクスポートを行うと劣化したりする。その場合はLegacy PDF Exportを利用する。

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

LPIC 102 チートシート

試験前の確認事項としてまとめた内容です。

環境変数

name content
DISPLAY リモートアクセス先のホスト
LANG ロケール(全カテゴリ)
TZ タイムゾーン
USER ログインユーザー
HOSTNAME ホスト名
PATH コマンドやプログラムを検索するディレクトリの一覧
PWD カレントディレクトリのパス

ロケール

category content
LC_CTYPE 文字の分類、文字の種類の規定
LC_NUMERIC 数値の書式
LC_TIME 日付・時刻の書式
LC_MESSAGES 出力メッセージの言語
LC_MONETARY 通貨の書式
LC_NAME 名前の書式
LC_ADDRESS アドレス、ロケーションの書式
LC_TELEPHONE 電話番号の書式
LC_ALL 指定した値が全カテゴリを上書き、個別設定はできない
LANG デフォルト値

ディレクトリ・ファイル

path content
/proc 起動中のプロセスやカーネルが認識しているハードウェアの情報が格納されているディレクトリ
/proc/sys/net/ipv4/ip_forward
/etc システムの設定ファイルなどが格納されているディレクトリ
/etc/X11/xorg.conf X.Orgの設定ファイル
/etc/X11/xorg.conf.d/(~.conf) X.Orgの設定ファイルが格納されるディレクトリ
/etc/X11/xdm XDMの設定ファイルを格納するディレクトリ
/etc/X11/gdm GDMの設定ファイルを格納するディレクトリ
/etc/X11/kdm KDMの設定ファイルを格納するディレクトリ
/etc/X11/xinit/Xclients ウィンドウマネージャの起動ファイル
/etc/X11/xinit/xinitrc startxやxinitコマンドで読み込まれるスクリプト(~/.Xresourcesファイル、~/.Xclientsファイルが呼び出される, /etc/X11/xinit/xinitrc.d/ディレクトリ以下のファイルが呼び出される)
/etc/X11/xdm/Xsession ウィンドウマネージャの起動(/etc/X11/xinit/xinitrc.d/ディレクトリ配下のファイルが呼び出される)
/etc/X11/xdm/Xresources ログイン画面の表示やXクライアントの設定(xinitrc(または~/.xinitrc)やXsession(または~/xsession)で読み込まれる)
/etc/passwd ユーザーアカウント情報
/etc/shadow シャドウパスワード情報
/etc/group グループの設定
/etc/crontab システムのcrontabファイル
/etc/cron.* /etc/crontabから呼び出される
/etc/cron.d cronジョブを記述したファイルを格納したディレクトリ
/etc/cron.hourly 1時間に1度実行されるcronジョブを記述したファイルを格納するディレクトリ
/etc/cron.daily 1日に1度実行されるcronジョブを記述したファイルを格納するディレクトリ
/etc/cron.weekly 週に1度実行されるcronジョブを記述したファイルを格納するディレクトリ
/etc/cron.monthly 月に1度実行されるcronジョブを記述したファイルを格納するディレクトリ
/etc/at.allow atコマンドのアクセスを許可するユーザーを記述するファイル
/etc/at.deny atコマンドのアクセスを拒否するユーザーを記述するファイル
/etc/localtime システムで利用するタイムゾーンを/usr/share/zoneinfoからコピー。バイナリファイル
/etc/timezone TZの設定を全ユーザーで利用するために記述するテキストファイル
/etc/skel ユーザーに新規作成時、ホームディレクトリにコピーされるファイルを格納するディレクトリ
/etc/ntp.conf NTPサーバーの設定
/etc/ntp.drift NTPサーバーの補正情報
/etc/chrony.conf Chronyの設定ファイル
/etc/rsyslog.conf rsyslogの設定ファイル
/etc/rsyslog.d rsyslogの設定ファイルを格納するディレクトリ
/etc/systemd/journald.conf journaldの設定ファイル
/etc/logrotate.conf logrotateの設定
/etc/aliases メールアドレスの別名を設定
/etc/cups/cupsd.conf CUPSの設定ファイル
/etc/cups/printers.conf プリンタに関する設定ファイル
/etc/services ポート番号とサービスの対応を記述したファイル
/etc/hostname ホスト名を記述したファイル
/etc/hosts ホスト名とIPアドレスの対応を記述したファイル
/etc/network/interfaces ネットワークインターフェースの設定を記述したファイル(Debian系)
/etc/sysconfig/network-scripts ネットワークインターフェースの設定ファイルを配置するディレクトリ(Red Hat系)
/etc/resolv.conf 参照先DNSサーバの設定
/etc/nsswitch.conf 名前解決の順序設定
/etc/systemd/resolved.conf systemd-resolvedサービスの設定ファイル
/etc/xinetd.conf xinetdの設定ファイル
/etc/xinetd.d xinetdの設定ファイルを格納するディレクトリ
/etc/hosts.allow tcpdのアクセス許可設定
/etc/hosts.deny tcpdのアクセス拒否設定
/etc/nologin rootアカウントによるログイン以外を禁止
/etc/ssh/sshd_config sshdの設定ファイル
/etc/default/useradd useraddでオプションを指定しない場合に使用されるデフォルト値
/etc/sudoers sudoの設定ファイル
/var
/var/spool/cron(/crontabs) ユーザーのcrontabファイルを格納するディレクトリ
/var/spool/mail/ メールスプール(表示コマンド:mail)
/var/spool/mqueue/ メールキュー(表示コマンド:mailq)
/var/log/messages
/var/log/lastlog
/var/log/journal
/var/run/log/journal
/var/log/syslog
/var/log/secure 認証サービスのログファイル
/var/log/maillog メールサービスに関するログの出力先となるディレクトリ
/var/log/wtmp lastが参照するファイル
/var/log/utmp
/var/run/utmp wやwhoが参照するファイル。システムにログインしているユーザー情報
/boot
/usr
/usr/share/zoneinfo タイムゾーン情報を記述したバイナリファイルを格納するディレクトリ
~/ ホームディレクトリ
~/.ssh/known_hosts サーバーの公開鍵が登録されるファイル
~/.ssh/authorized_keys サーバーに登録される公開鍵情報
~/.xsesssion ユーザごとのXsessionスクリプト
~/.Xresources ユーザーごとのXクライアントの設定
~/.xinitrc ユーザーごとのxinitrcスクリプト
~/.xsession-errors X Window Systemのエラーが出力されるファイル
~/.gnupg GnuPGに関連するファイルの置かれるディレクトリ

文字コード

code content
ASCII 7ビットの文字コード。128種類の文字(英数字、記号、制御コード)を表現
ISO-8859 ASCIIを8ビットに拡張したもの。256種類の文字を表現
Unicode 他言語を扱うために作成された文字コード
UTF-8 Unicodeで定義された文字を表示する符号化方式(ASCIIと互換)
EUC-JP UNIX環境で標準的に利用される日本語文字コード
Shift_JIS Windowsで標準的に利用される日本語文字コード

IPアドレスのクラス

class range subnet
A 0.0.0.0 - 127.255.255.255 255.0.0.0
B 128.0.0.0 - 191.255.255.255 255.255.0.0
C 192.0.0.0 - 223.255.255.255 255.255.255.0
D 224.0.0.0 - 239.255.255.255
E 240.0.0.0 - 255.255.255.255

プライベートアドレス

class range subnet
A 10.0.0.0 - 10.255.255.255
B 172.16.0.0 - 172.31.255.255
C 192.168.0.0 - 192.168.255.255

ポート

num TCP/UDP content
143 IMAP
631 CUPSのWEBブラウザ設定画面

変数

command content
env 環境変数を表示
printenv 環境変数を表示
set シェル変数と環境変数を表示
unset 変数を削除

env

option content
-i 何も環境変数が設定されていない状態にする
-u 環境変数名 環境変数を一時的に削除
環境変数名=値 環境変数の値を一時的に変更
(オプションなし) 全ての環境変数を表示

set

shellのオプション

subcommand content
-o オプションを有効にする/オプションの一覧を表示
+o オプションを無効にする
option content
-a, allexport 作成・変更した変数を自動的にエクスポートする
emacs emacs風のキーバインドにする
ignoreeof Ctrl+Dによってログアウトしないようにする
-C, noclobber 出力リダイレクトによる上書きを禁止する
-f, noglob メタキャラクタを使ったファイル名展開を無効にする
vi vi風のキーバインドにする
-n, noexec シェルスクリプトを読み込むが、実行はせずに構文エラーのみ確認

エイリアス

command content
alias エイリアスの設定
unalias エイリアスの解除

\をつけるとエイリアスを使用しないで実行

関数

command content
function 関数を定義
declare -f 定義されている関数を表示
unset 関数を削除

bashの設定ファイル

file content
/etc/profile ログイン時に実行され、全ユーザーから参照される
/etc/bash.bashrc bash起動時に実行され、全ユーザーから参照される
/etc/bashrc ~/.bashrcから参照される
~/.bash_profile ログイン時に実行される
~/.bash_login ~/.bash_profileがない場合、ログイン時に実行される
~/.profile ~/.bash_profileも~/.bash_loginもない場合、ログイン時に実行される
~/.bashrc bash起動時に実行される
~/.bash_logout ログアウト時に実行される

スクリプト

シェル変数の特殊変数

arg content
$0 シェルスクリプトファイル名(フルパス)
$1 1番目の引数
$2 2番目の引数。n番目も同様
$# 引数の数
$@ すべての引数(スペース区切り)
$* すべての引数(区切りは環境変数IFSで指定されたもの)
$$ 現在のシェルのPID(プロセスID)

test

test 条件文
[ 条件文 ]

condition result
ファイル形式
-f ファイルがあれば真
-d ディレクトリがあれば真
-r ファイルが存在し、かつ読み込み可能であれば真
-w ファイルが存在し、かつ書き込み可能であれば真
-x ファイルが存在し、かつ実行可能であれば真
-s サイズが0より大きいファイルがあれば真
-L シンボリックリンクであるファイルがあれば真
ファイル特性
-e ファイルがあれば真
-nt ファイル1がファイル2より修正時刻が新しければ真
-ot ファイル1がファイル2より修正時刻が古ければ真
数値
-eq 数値1と数値2が等しければ真
-ge 数値1が数値2より大きい、もしくは等しければ真
-gt 数値1が数値2より大きければ真
-le 数値1が数値2より小さい、もしくは等しければ真
-lt 数値1が数値2未満であれば真
-ne 数値1と数値2が等しくなければ真
文字列
-n 文字列の長さが0より大きければ真
-z 文字列の長さが0であれば真
= 2つの文字列が等しければ真
!= 2つの文字列が等しくなければ真
論理結合
! 条件式が偽であれば真
-a AND演算
-o OR演算

X.Orgの設定ファイル

/etc/X11/xorg.conf

section content
ServerLayout 入出力デバイスに関する設定
Files RGBカラーデータベースの場所やフォントの格納場所に関する設定
Module 組み込むモジュールの設定
InputDevice キーボードやマウスなどの入力デバイスの設定
Monitor モニタータイプの設定
Device ビデオカードの設定
Screen ディスプレイの表示色数や画面サイズなどの設定

ディスプレイマネージャ

name content
XDM X.Org標準
GDM GNOMEで利用される
SDDM KDE Plasmaで利用される
LigthDM Ubuntu標準

ウィンドウマネージャ

name content
twm 最小限の機能を備えた基本的なウィンドウマネージャ
FVWM 軽快でシンプル
Enlightment 高度なカスタマイズが可能
Metacity GNOME 2の標準
Mutter GNOME 3の標準
Fluxbox 軽快でカスタマイズ性が高い
WindowMaker 簡素で軽量
Compiz 立体的な画面効果が華々しい
KWin KDEの標準

リモートデスクトップ

name content
VNC クロスプラットフォーム対応
RDP Windows標準
SPICE RDPと同様の画面転送プロトコル。オープンソース
XDMCP ディスプレイマネージャをネットワーク越しに利用できるプロトコル

XDM設定

/etc/X11/xdm ディレクトリ内

file content
xdm-config XDMの設定ファイル
Xresources XDMログイン画面のデザイン設定
Xaccess ホストからXDMへアクセス許可の設定
Xsetup_0 XDMログイン画面表示前に実行されるスクリプト
Xsession XDMのログイン後に実行されるスクリプト

キーボードアクセシビリティ

setting content
ハイコントラスト 視覚障がい者のためにコントラストを強調
大きな文字 システムの文字を大きく表示
カーソルの大きさ 大きなカーソルを表示
ズーム カーソル位置をズーム
スクリーンリーダー フォーカスのある画面のテキストを音声で読み上げる
切り替えキー CapsLockとNumLockのオン・オフが切り替わるとビープ音を鳴らす
視覚警告 警告音が鳴った時に、画面全体をフラッシュするなど視覚的にも警告
スクリーンキーボード マウスで操作するスクリーン上のキーボード
リピートキー キーを長押しすると繰り返しキー入力したことにする
カーソルの点滅 テキスト入力時のカーソル点滅速度を調整
タイピング支援(AccessX) スティッキーキー、スローキー、バウンスキーを設定
マウスキー テンキーでもマウスカーソルを動かせるようにする
クリック支援 主ボタンの押しっぱなしを副ボタン押下とみなす等
ダブルクリックと認識する間隔 ダブルクリックと認識する間隔時間を調整
スティッキーキー 修飾キーを押されたままの状態にする
スローキー キー押下を認識する時間を調整、ビープ音を鳴らす等
バウンスキー 素早く何度も押したキーを認識しない
トグルキー NumLock、CapsLockなどの切り替え時にビープ音を鳴らす

useradd

ユーザーアカウントを作成する

option content
-c コメントフィールドを指定
-d ホームディレクトリを指定
-g プライマリグループを指定
-G プライマリグループ以外に所属するグループを指定
-s デフォルトシェルを指定
-D デフォルトの設定値を表示・設定
-m ホームディレクトリを自動的に設定
-p 暗号化済みのパスワードを設定

usermod

既存のユーザーアカウントを変更

option content
-c, --comment コメントフィールドを変更
-d, --home ホームディレクトリを変更
-g, --gid プライマリグループを変更
-G, --groups 所属するグループを変更
-s デフォルトシェルを変更
-L, --lock パスワードをロックして一時的に無効にする
-U, --unlock パスワードのロックを解除する
-p, --password パスワードを変更

userdel

ユーザーアカウントを削除

option content
-r ホームディレクトリも同時に削除

passwd

パスワードを変更。スーパーユーザー以外は自分のパスワードのみ変更可能

option content
-l パスワードをロックして一時的に無効にする
-u パスワードのロックを解除する

groupadd

グループを作成

groupmod

既存のグループ情報を変更

option content
-g GIDを変更
-n グループ名を変更

groupdel

グループを削除

chsh

ログインシェルを変更

option content
-s ログインシェルを設定

id

ユーザー情報を表示

getent はLDAPサーバーの情報を表示

crontab

crantabファイルを編集

option content
-e エディタを使って編集
-l ファイルの内容を表示
-r ファイルを削除
-i 削除時に確認する
-u ユーザーを指定して編集(rootのみ)

crontabファイルのフィールド

field content
0 ~ 59
0 ~ 23
1 ~ 31
1 ~ 12, jan ~ dec
曜日 0 ~ 7, Sun ~ Sat
コマンド 実行するコマンド

at

1回限りの実行スケジュール

option content
-d/-r 予約中のジョブをジョブ番号指定で削除(=atrm)
-l 予約中のジョブを表示(=atq)
-f コマンドを記述したファイルを指定

/etc/at.allow、/etc/at.denyでアクセス制御

systemd-run

タイマーUnitのスケジューリング

locale

現在のロケール設定を確認

option content
-a 設定可能なロケールを表示
-m 利用できる文字コード一覧

iconv

文字コードを変換

option content
-f 変換前の文字コードを指定
-t 変換して出力したい文字コードを指定
-l 扱える文字コードを表示

tzselect

タイムゾーンを設定

tzconfig

/etc/localtimeと/etc/timezoneをまとめて変更

hwclock

ハードウェアクロックを参照・設定

option content
-r ハードウェアクロックを表示
-w(--systohc) システムクロックの時刻をハードウェアクロックに設定
-s(--hctosys) ハードウェアクロックの時刻をシステムクロックに設定

timedatectl

日付と時刻・タイムゾーンを管理

subcommand content
status 現在の時刻を表示
set-time 日付、時刻を設定(YYYY-MM-DD HH:MM:SS)
set-timezone タイムゾーンを設定
list-timezones タイムゾーンを一覧表示
set-ntp yes/no NTPを使うかどうか

ntpdate

指定したNTPサーバーから現在時刻を取得

ntpq

NTPサーバーの状態を照会

chronyc

chronydを管理

subcommand content
activity NTPサーバーのオンライン/オフライン数
sources 時刻ソースの情報を表示
sourcestats 時刻ソースの統計情報を表示
tracking トラッキングを確認
quit 対話状態を終了

logger

ログメッセージを生成

option content
-p プライオリティを設定

systemd-cat

コマンドの実行結果をジャーナルに書き込む

who

ログイン中のユーザー一覧

w

uptime + who

last

最近ログインしたユーザーの一覧

lastlog

/var/log/lastlogファイルを参照し、ユーザーごとの最近のログイン一覧を表示

journalctl

systemdのログを閲覧

option content
-a, --all 画面表示できない文字も含めて表示
-D, --directory 指定したディレクトリのログを表示
-f, --follow ログの末尾を表示し続ける
-l, --full 画面表示可能なすべてのログを表示
-r, --reverse ログを新しい順に表示
-n, --lines 直近のログから指定行数分を表示(デフォルトは10)
-e ジャーナルの末尾(最新)を表示
-x 説明文付きで表示
-o, --output ログの出力形式を指定
-k, --dmesg カーネルメッセージのみ表示
-b, --boot ブート時のメッセージを表示
-p 指定したプライオリティより高いメッセージを表示
-u, --unit 指定したUnitのログを出力
--full エスケープ文字を除いてプレーテキストで出力
--no-pager 1ページごとに表示せず、すべてのログを出力(lessコマンドを使用しない)
--since 指定した日付時刻以降のログを表示
--unitl 指定した日付時刻までのログを表示
--vacuum-size= アーカイブジャーナルの総容量が指定したサイズを下回るまで古いジャーナルを削除
--vacuum-time= 指定した期間より古いアーカイブジャーナルを削除

検索条件指定

key content
_PID= プロセス番号の指定
_UID= ユーザーIDの指定
SYSTEMDUNIT= Unit名の指定

newaliases

/etc/aliasesの設定を有効にする

mailq

メールキューの内容を表示

lpr

ファイルを印刷

option content
-#部数 印刷部数を指定
-P 印刷を行うプリンタを指定

lpq

プリントキューの内容を表示

option content
-P プリンタを指定

lprm

プリントキューにある印刷要求を削除

option content
-P プリンタを指定
- 自分の全印刷ジョブを削除

nmcli

Network Managerの管理コマンド

object command content
general
status NetworkManagerの状態を表示
hostname ホスト名を表示、指定したホスト名に変更
networking
on/off ネットワークを有効/無効にする
connectivity [check] ネットワークの状態を表示(checkを指定すると再確認)
radio
wifi Wi-Fiの状態を表示
wifi on/off Wi-Fi接続を有効/無効にする
wwan モバイルブロードバンドの状態を表示
wwan on/off モバイルブロードバンド接続を有効/無効にする
all on/off 全ての無線接続を有効/無効にする
connection
show [--active] 接続情報を表示(--activeが指定されればアクティブな接続のみ)
modify 指定した接続を設定
up 接続を有効にする
down 接続を無効にする
device
status デバイスの状態を表示
show 指定したデバイスの情報を表示
modify 指定したデバイスを設定
connect 指定したデバイスを接続
disconnect 指定したデバイスを切断
delete 指定したデバイスを削除
monitor 指定したデバイスをモニタする
wifi list Wi-Fiアクセスポイントを表示
wifi connect Wi-Fiアクセスポイントに接続
wifi hotspot Wi-Fiホットスポットを作成
wifi rescan Wi-Fiアクセスポイントを再検索

nmcli networking connectivity

status content
full インターネットにアクセス可能なネットワークに接続している
portal インターネットにアクセスする前のcaptive portalの状態である
limited ネットワークに接続しているが、インターネットにアクセスできない
none どのネットワークにも接続していない
unknown 接続状態が見つからない

hostnamectl

ホスト名を管理

subcommand content
status ホスト名と関連情報を表示
set-hostname ホスト名を設定

ping

ICMPパケットを送信、反応を表示

option content
-c 指定した回数だけICMPパケットを送信
-i 指定した間隔(秒)ごとにパケットを送信

IPv6ではping6

traceroute

指定したホストまでパケットが伝わる経路を表示

IPv6ではtraceroute6

tracepath

指定したホストまでパケットが伝わる経路を表示

IPv6ではtracepath6

hostname

ホスト名を表示・変更

netstat

ネットワーク機能に関する様々な情報を表示

option content
-a 全てのソケット情報を表示
-c 状況を1秒ごとにリアルタイム表示
-i ネットワークインターフェースの状態を表示
-n アドレスやポートを数値で表示
-p PIDとプロセス名も表示
-r ルーティングテーブルを表示
-t TCPポートのみ表示
-u UDPポートのみ表示

nc

netcat

option content
-l 指定したポートをリッスン
-p ポート番号を指定
-u UDPを利用(デフォルトはTCP)
-o 指定したファイルに出力

route

ルーティングテーブルを表示・操作

option content
-F カーネルのルーティングテーブルを表示
-C カーネルのルーティングキャッシュを表示
subcommand content
add ルーティングテーブルに新たな経路を追加
del ルーティングテーブルから経路情報を削除

ip

ネットワークインターフェースやルーティングテーブル、ARPテーブル等を管理

target content
link データリンク層
addr IPアドレス
route ルーティングテーブル
subcommand content
show 表示
add 設定

ifconfig

ネットワークインターフェースの状態を表示、設定

parameter content
IPアドレス IPアドレスを設定
netmask サブネットマスク サブネットマスクを設定
up ネットワークインターフェースを有効化
down ネットワークインターフェースを無効化

ifupifdown

host

DNSサーバを使ってホストやドメインに関する情報を表示

option content
-v 詳細情報を表示

dig

DNSサーバに登録されている情報を表示

option content
-x IPアドレスからホスト名を検索
search type content
a IPアドレス
aaaa IPv6アドレス
any 全ての情報
mx メールサーバの情報
ns ネームサーバの情報

ss

ソケットを調査

netstatの後継

option content
-a 全てのソケット情報を表示
-n サービス名の名前解決をしない
-t TCPポートのみ表示
-u UDPポートのみ表示

ftp

リモートホストとファイルを送受信

subcommand content
get ファイルのダウンロード
put ファイルのアップロード
bye, quit 終了

lsof

option content
-i 開いているポートの情報を表示
-i:ポート番号 指定したポート番号が使われている通信を表示

nmap

ポートスキャン

fuser

ポートを開いているプロセスを特定

option content
-k プロセスにSIGKILLを送信
-m マウントされたファイルシステムを指定
-n 検索する領域(名前空間)を指定
-u 検索結果をユーザー名を追加
-v 詳細な情報を表示

chage

パスワードに有効期限を設定

option content
-l パスワードもしくはアカウントの有効期限を表示
-m パスワード変更間隔の最低日数を設定
-M パスワードの最大有効期限日数を設定
-d パスワードの最終更新日を設定
-W パスワードの有効期限切れの警告が何日前から始まるか設定
-I パスワードの有効期限後にアカウントがロックされるまでの日数
-E ユーザーアカウントが無効になる日付を設定

su

一時的に別ユーザーになる

sudo

root権限で実行

option content
-l 許可されているコマンドを表示
-i 変更先ユーザーでシェルを起動(ログイン時の処理を行う)
-s 変更先ユーザーでシェルを起動
-u rootではなく指定したユーザーでコマンドを実行

visudo

sudoの利用設定

ulimit

ユーザーが利用できるリソースを制限

option content
-a 制限の設定値をすべて表示
-c 生成されるコアファイルのサイズを指定
-f シェルが生成できるファイルの最大サイズをブロック単位で指定
-n 同時に開くことのできるファイルの最大数
-u 1人のユーザーが利用できる最大プロセス数を指定
-v シェルとその子プロセスが利用できる最大仮想メモリサイズ

ssh

option content
-p ポート番号を指定
-l 接続するユーザーを指定
-i 秘密鍵ファイルを指定
-o ssh_configで設定できるオプションの指定

ssh-keygen

公開鍵と秘密鍵の鍵ペアを作成

option content
-t 暗号化タイプを指定
-p パスフレーズを変更
-f 鍵ファイルを指定
-R 指定されたホストの鍵をknown_hostsファイルから削除
-b 鍵の長さをビット長で指定

scp

SSHの仕組みを使い、ホスト間で安全にファイルをコピー

option content
-p パーミッションなどを保持したままコピー
-r ディレクトリ内を再帰的にコピー
-P ポート番号を指定

ssh-agent

クライアント側で稼働するsshエージェント

ssh-add

秘密鍵を登録。パスフレーズを入力

gpg

GnuPGを管理

option content
--full-generate-key 鍵ペアを作成
--list-keys 鍵ペアを一覧表示
-o 失効証明書 --gen-revoke メールアドレス 失効証明書を作成
--import 失効証明書 鍵を無効化
-c 共通鍵を使用して暗号化
--decrypt 共通鍵を使用して複合化
-o 出力ファイル名 -a --export メールアドレス 公開鍵をエクスポート
--import 公開鍵 公開鍵をインポート
--sign-key 受け取った公開鍵に署名
-e -a -r 宛先メールアドレス 暗号化するファイル ファイルを暗号化
-o 署名ファイル --sign 対象ファイル ファイルに署名
--verify ファイルの署名を検証

xinetd

スーパーサーバ

setting item content
bind/interface サービスを提供するインターフェースのIPアドレス
disable サービスを無効化するかの設定(yes/no)
instances サーバプログラムの最大起動プロセス数
log_type ログの記録先指定(syslogや記録するログファイルの絶対パス)
no_access サービスへのアクセスを拒否する接続元
only_from サービスへのアクセスを許可する接続元
server サーバプログラムの絶対パス
server_args サーバプログラム起動時に指定する引数
socket_type ストリーム型、データグラム型といったサービスの接続タイプ
user サーバプログラムを起動するユーザー
wait サーバプログラムへの接続処理を待ち合わせるかの設定
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

LPIC 101チートシート

試験前の確認事項としてまとめた内容です。

環境変数

name content
PATH コマンドのパス
EDITOR デフォルトのエディタ
HISTFILE 履歴ファイルのパス
HISTFILESIZE 履歴ファイルの保存履歴数
LD_LIBRARY_PATH 共有ライブラリの検索パス

デバイスファイル

device file content
/dev/sda 1番目のハードディスクドライブ
/dev/sdb 2番目のハードディスクドライブ
/dev/sdc 3番目のハードディスクドライブ
/dev/sr0 1番目のCD/DVDドライブ
/dev/st0 1番目のテープドライブ

ファイルシステム

filesystem content
ext2 Linuxの標準ファイルシステム
ext3 ext2にジャーナリング機能を追加
ext4 ext3を機能拡張
XFS SGI社が開発したジャーナリングファイルシステム
Btrfs 高度な機能
iso9660 CD-ROM
udf DVD-ROM

ディレクトリ・ファイル

path content
/proc 起動中のプロセスやカーネルが認識しているハードウェアの情報が格納されているディレクトリ
/proc/modules ロードされているカーネルモジュールの情報
/proc/cpuinfo CPUに関する情報
/proc/meminfo メモリの使用状況を確認できるファイル
/proc/bus/usb/devices USBデバイスに関する情報
/proc/bus/pci/devices PCIデバイスに関する情報
/proc/interrupts IRQに関する情報
/proc/ioports I/Oポートアドレスの情報
/proc/dma デバイスが使用中のDMAチャンネルに関する情報
/proc/scsi/scsi SCSIデバイスに関する情報
/proc/cmdline ブートローダからカーネルに渡されたパラメータ
/etc システムの設定ファイルなどが格納されているディレクトリ
/etc/inittab
/etc/rc[0-6].d SysVinitでランレベルに応じたスクリプトが格納されるディレクトリ
/etc/systemd/system/
/etc/udev/rules.d/(~.rules) udevが使用するデバイス設定情報
/etc/modprobe.d/(~.conf) modprobeの設定ファイル
/etc/default/grub GRUB2の設定ファイル
/etc/grub.d GRUB2の設定ファイルを配置するディレクトリ
/etc/ld.so.conf ldconfigで/etc/ld.so.cacheを作成するために参照
/etc/ld.so.cache プログラムの実行時に共有ライブラリの場所を検索するために使用
/etc/dpkg/dpkg.cfg dpkgの設定ファイル
/etc/apt/apt/conf.d/ aptの設定ファイル
/etc/apt/sources.list aptのパッケージ取得元を設定するファイル
/etc/yum.conf yumの設定ファイル
/etc/yum.repos.d yumで使用されるパッケージの取得元を設定するファイルを格納するディレクトリ
/etc/machine-id マシンIDが格納されているファイル
/etc/fstab ファイルシステムのマウント設定を記載するファイル
/etc/mtab 現在マウントされているファイルシステムの情報が格納されているファイル
/var
/var/log/messages カーネルのログが記録されるなど、Linuxでメインで使用されるログファイル
/boot
/boot/efi ESP(EFIシステムパーティション)のマウント先
/boot/grub/menu.lst GRUB Legacyの設定ファイル
/boot/grub/grub.conf GRUB Legacyの設定ファイル
/boot/grub/grub.cfg GRUB2の設定ファイル(変更不可)
/usr
/usr/share/man マニュアル

systemdのユニット

unit content
device 各種デバイスを管理するUnit
mount ファイルシステムのマウントを管理するUnit
service サービスを制御するUnit
swap スワップ領域を管理するUnit
target 複数のサービスを一つのグループにするためのUnit

vi

command content
ZZ 保存して終了(:wq)
:e! 最後に保存した内容に復帰
:r ファイル名 ファイルの内容をカレント行以降に読み込む
:!コマンド viを終了せずにシェルコマンドを実行
:r!コマンド シェルコマンドの実行結果を挿入
dw カーソル位置から次の単語までを削除
r カーソル位置の1文字を置換
:%s/A/B/ 最初に見つかった文字列Aを文字列Bに置換
:%s/A/B/g 全ての文字列Aを文字列Bに置換
:set nu (number) 行番号を表示
:set nonu (nonumber) 行番号を非表示
:set ts=タブ幅 (tabstop) タブ幅を指定

正規表現

code content
. 任意の1文字
* 直前の文字の0回以上の繰り返し
[] []内のいずれか1文字(-:範囲、^:除外)
^ 行頭
$ 行末
\ 次の1文字をエスケープ
+ 直前の文字の1回以上の繰り返し(拡張正規表現)
? 直前の文字の0回もしくは1回の繰り返し(拡張正規表現)
\

dpkg

設定ファイル /etc/dpkg/dpkg.cfg

action content
-i (--install) インストール
-r (--remove) 設定ファイルを残してアンインストール
-P (--purge) 完全にアンインストール
-l (--list) インストール済みパッケージを検索
-S (--search) ファイルがどのパッケージからインストールされたか表示
-L (--listFfiles) 指定パッケージからインストールされたファイル一覧を表示
-s (--status) パッケージ情報を表示する
--configure 展開されたパッケージを構成
--unpack パッケージを展開(インストールしない)
option content
-E 同バージョンがインストールされていればインストールしない
-G 新バージョンがインストールされていればインストールしない
-R (--recursive) 再帰処理

apt-get

subcommand content
clean パッケージファイルを削除
dist-upgrade システムを最新にアップグレード
install パッケージをインストールまたはアップグレード
remove パッケージをアンインストール
update パッケージデータベースを更新
upgrade 他のパッケージを削除しないものをアップグレード
option content
-d ファイルをダウンロード(インストールしない)
-s システムを変更せず動作をシミュレート

apt-cache

subcommand content
search キーワードを含むパッケージを検索
show パッケージの一般的な情報を表示
showpkg パッケージの詳細情報を表示
depends パッケージの依存関係を表示

apt

設定ファイル /etc/apt/apt/conf.d/

ソース /etc/apt/sources.list

subcommand content
update パッケージリストを更新
install パッケージをインストール
remove 設定ファイルを残してパッケージを削除
purge パッケージを完全に削除
upgrade システムをアップグレード(ファイル削除は行わない)
full-upgrade システムのメジャーバージョンを最新にアップグレード
show 指定したパッケージに関する情報を表示
list パッケージのリストを表示
list --installed インストールされたパッケージを一覧表示
list --upgradable アップグレード可能なパッケージを表示
search 指定したキーワードでパッケージ情報を全文検索
depends パッケージの依存関係を表示
autoremove 必須とされていないパッケージを自動削除
option content
-C 設定ファイルを指定
-d パッケージのダウンロードのみ行う
-y 自動的にyesを回答
--no-install-reccomends 必須でない推奨パッケージはインストールしない
--install-suggests 提案パッケージもインストール
--reinstall インストール済みパッケージの再インストールを許可

rpm

設定ファイル /usr/lib/rpm/rpmrc

option suboption content
-i (--install) パッケージをインストール
-U (--upgrade) パッケージをアップグレード(なければインストール)
-F (--freshen) パッケージがインストールされていればアップグレード
-v 詳細な情報を表示
-h (--hash) 進行状況を「#」で表示
--nodeps 依存関係を無視してインストール
--force 既存のファイルを新しいものに置き換える
--test 実際にはインストールせずテスト
-e (--erase) パッケージをアンインストール
--nodeps 依存関係を無視してアンインストール
-q 指定したパッケージがインストールされているか照会
-a (--all) インストール済みのすべてのパッケージを表示
-f 指定したファイルを含むパッケージ名を表示
-p 対象としてパッケージファイルを指定
-c (--configfiles) 設定ファイルのみ表示
-d (--docfiles) ドキュメントのみ表示
-i (--info) 指定したパッケージの情報を表示
-l (--list) 指定したパッケージに含まれるファイルを表示
-R (--requires) 指定したパッケージが依存しているファイル等を表示
--changelog 変更履歴を表示

使い方

# インストール
$ rpm -ivh [パッケージ名]

# どのようなファイルがインストールされるか表示
$ rpm -qlp [パッケージ名]

# 依存関係を調べる
$ rpm -qR [パッケージ名]

yum

設定ファイル /etc/yum.conf

パッケージ取得元 /etc/yum.repos.d/

subcommand content
check-update アップデート対象のパッケージリストを表示
update 指定したパッケージをアップデート(指定しない場合は全パッケージ)
install 指定したパッケージをインストール
remove 指定したパッケージをアンインストール
info 指定したパッケージの情報を表示
list 全パッケージ情報をリスト表示
repolist リポジトリ一覧を表示
search パッケージ情報をキーワード検索
search all キーワード検索(パッケージ名、説明文等すべて)
groups list パッケージグループをリスト表示
graoups install 指定したグループのパッケージをインストール

dnf

subcommand content
check-update アップデート対象のパッケージリストを表示
clean キャッシュデータを削除
upgrade (update) システムの全パッケージをアップグレード
upgrade 指定したパッケージをアップグレード
install 指定したパッケージをインストール
remove 指定したパッケージをアンインストール
info 指定したパッケージの情報を表示
list 全パッケージ情報をリスト表示
search パッケージ情報をキーワード検索
history 処理の履歴を表示
updateinfo パッケージのアップデート情報を表示

zypper

option content
install (in) パッケージのインストール
update (up) パッケージのアップデート
remove (rm) パッケージのアンインストール
info パッケージの詳細情報の表示
search (se) 指定したキーワードでパッケージの検索
list-updates (lu) アップデート可能なパッケージの表示
repos (lr) リポジトリの一覧表示
refresh リポジトリの更新

man

section content
1 ユーザーコマンド
2 システムコール
3 ライブラリ
4 デバイスファイル
5 設定ファイル
6 ゲーム
7 その他
8 システム管理コマンド
9 Linuxカーネル用ドキュメント

cp

option content
-f コピー先に同名のファイルがあれば上書きする
-i コピー先に同名のファイルがあれば上書きするか確認
-p コピー元ファイルの属性を保持
-r, -R 再帰的にコピー
-d シンボリックリンクをシンボリックリンクとしてコピー
-a できる限り元ファイルの構成と属性を保持(-dpRと同じ)

tar

option content
-c アーカイブを作成
-x アーカイブからファイルを取り出す
-t アーカイブの内容を確認
-f アーカイブファイル名を指定
-z gzipによる圧縮/展開
-j bzip2による圧縮/展開
-J xzによる圧縮/展開
-v 詳細情報を表示
-u アーカイブ内にある同名のファイルより新しいものだけを追加
-r アーカイブにファイルを追加
-N 指定した日時より新しいデータのみを対象
-M 複数デバイスへの分割
--delete アーカイブからファイルを削除

使い方

# /homeのアーカイブをテープドライブに作成
$ tar cvf /dev/st0 /home

# アーカイブファイルをカレントディレクトリ上に展開
$ tar xvzf software.tar.gz

kill

signal ID content
HUP 1 ハングアップ(端末が制御不能もしくは切断による終了)
INT 2 キーボードからの割り込み
KILL 9 強制終了
TERM 15 終了(デフォルト)
CONT 18 再開
STOP 19 一時停止

killall

プロセス名で指定

grep

option content
-c マッチした行の行数のみ表示
-f 検索パターンをファイルから読み込む
-i 大文字と小文字を区別しない
-n 先頭に行番号をつけて、マッチした行を表示
-v マッチしなかった行を表示
-E 拡張正規表現を使用(egrepコマンドと同様)
-F 検索パターンを正規表現ではなく、固定文字列とする(fgrepコマンドと同様)
type content
grep 正規表現でパターンマッチ
egrep 拡張正規表現
fgrep 正規表現を使わない
pgrep PIDを表示

fdisk

パーティションの作成、削除、変更、情報開示など

subcommand content
l パーティションタイプを一覧表示
n パーティションを作成
d パーティションを削除
p パーティションテーブルを表示
t パーティションタイプを変更
a ブートフラグのON/OFF切り替え
w パーティションテーブルの変更を保存して終了
q パーティションテーブルの変更を保存しないで終了
m ヘルプメニューを表示

gdisk

GPTに対応

parted

MBR、GPTに対応

subcommand content
check ファイルシステムの簡単なチェック
mklabel [gpt\ msdos]
mkpart 指定した種類のパーティションを作成
rm 指定したパーティションを削除
print, p パーティションテーブルを表示
quit, q 終了

fsck

option content
-t ファイルシステムの種類を指定
-A 「/etc/fstab」に記述されている全ファイルシステムに対して実行
-N 実際には実行せず、実行する内容だけ表示
-a 問題を自動的に修復
-r 問題を対話的に修復

e2fsck

option content
-y 全ての問い合わせに対し、自動的に「yes」と回答
-n 全ての問い合わせに対し、自動的に「no」と回答
-p 全ての問題を自動的に修復

nice

nice [-n nice値] コマンド
nice [-nice値] コマンド

option content
-n nice値

renice

renice [-n] nice値 オプション

option content
-u 指定したユーザーが所有する全てのプロセスのnice値を変更
-p 指定したPIDのプロセスのnice値を変更(「-p」は省略可能)

sed

option content
-e 編集コマンドを指定(コマンドが一つの場合は省略可)
-f 編集コマンドを記述したファイルを指定
edit command content
/s/文字列1/文字列2/ 各行の最初に現れる文字列1を文字列2に置換
/s/文字列1/文字列2/g 全ての文字列1を文字列2に置換
/文字列/d 文字列が含まれる行を削除
行番号1,行番号2d 行番号1から行番号2までの行を削除
y/文字1文字2/文字3文字4/ 文字1を文字3に、文字2を文字4に置換

cut

option content
-c 抽出する文字位置を指定
-d 区切り文字を指定(デフォルトはタブ)
-f 抽出するフィールドを指定

mkdir

option content
-m 指定したアクセス権でディレクトリを作成
-p 引数に階層のあるディレクトリを指定した場合、存在しない中間ディレクトリも同時に作成

その他

ldconfig

共有ライブラリのパス構成
/etc/ld.so.conf を /etc/ld.co.cache に反映

nl

行番号をつけて出力

od

バイナリデータとして出力

chown

所有者を変更

chgrp

グループを変更

top

実行中のプロセス監視

free

メモリの利用状況、空き状況

uptime

システムの稼働時間や平均負荷

uname

システムアーキテクチャやOSを確認

nice, renice

プロセスの優先度を変更(-19~20)

lsblk

システムのブロックデバイス一覧

blkid

デバイスファイルとUUIDの関係(/etc/fstabファイル)

locate

あらかじめ作成したDBに基づいてファイルを検索

updatedb

DBを更新
設定ファイル /etc/updatedb.conf

which

コマンドの絶対パスを表示

type

コマンドの種類を表示

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

ネットワーク|TCP/IP

TCP/IPとは

TCP/IP(Transmission Control Protocol/Internet Protocol)は、現在のインターネット通信およびイントラネット通信において最も利用されている通信プロトコル。TCP/IPは複数のプロトコルから成田、中心的な役割を果たすのがTCPとIPであることからTCP/IPと呼ばれている。
※IP通信で使用するプロトコル郡|IP, ICMP, TCP, UDP, HTTP, SMTP, SSH, TELNETなど

TCP/IPの階層モデル

TCP/IPにおける階層モデルは4階層から構成されている。
アプリケーション層、トランスポート層、インターネット層、ネットワークインターフェイス層からなる。

スクリーンショット 2019-10-09 10.16.01.png

TCP/IPプロトコルスタック 各層の役割
アプリケーション層 主にアプリケーションごとの固有の規定。この層ではHTTP,FTP,SMTP,SSHなどのアプリケーション層のプロトコルにより、通信アプリケーションの機能が実現される。
トランスポート層 主にノード間のデータ転送の信頼性を確保するための規定。この層では、TCPまたはUDPのプロトコルを使用する。TCPを使用する場合、信頼性の高い通信を実現する。UDPを使用する場合、信頼性ではなく効率重視のデータ転送を実現する。
インターネット層 主にネットワーク間のEnd-to-Endの通信のための規定。この層では、IPが代表的なプロトコルになる。IPにより、ネットワーク上のノードに対し自分の位置情報となる論理アドレス(IPアドレス)を割り当てられるのでEnd-to-Endの通信を実現する。
ネットワークインターフェイス層 主に直接的に接続されたノード間の通信のための規定。この層ではLANプロトコルはイーサネット、WANプロトコルはPPPが代表的なプロトコル。イーサネットでは、セグメント上のノードに対して、自分の位置情報となる物理アドレス(MACアドレス)を割り当てることができるので、ローカルでのノード間通信を実現することができる。

コンピュータ間で通信する場合、以下のように送信側でカプセル化、受信側で非カプセル化を行なっている。また下位層ではアプリケーション側のプロトコルがHTTPであろうと、FTPであろうとただのデータとしてしか認識しない。
※カプセル化/非カプセル化によるメリットがよくわからないので後ほど調べて記載する。


※参照元
各層でのヘッダとは、各層の制御情報のことを指している。

IPとは

IP(Internet Protocol)は、OSI参照モデルではネットワーク層で動作するプロトコルであり、TCP/IPの階層モデルにおいてはインターネット層で動作するプロトコル。
IPは論理アドレス(IPアドレス)を各ノードに割り当てることで、各ノードを識別することができる。このIPアドレスの宛先を確認することで、あるノードから別ノードへデータ送信することができる。IPアドレスの宛先情報についてはIPヘッダに含まれている。

IPヘッダのフォーマット

IPヘッダは20バイトのサイズ。オプションが追加された場合は最大で60バイトのサイズになる。データはIPヘッダではなくIPペイロードと呼ばれる部分となる。

各フィールド 英語表記 ビット 各フィールドの説明
バージョン version 4bit IPヘッダのバージョン番号の情報。IPv4では「4」の値が入る。
ヘッダ長 IHL 4bit IPヘッダの長さの情報。単位は32ビットであることからオプションを使用しない。IPパケットの場合、「5」の値が入る。32bit×5=160bit=20byte
サービスタイプ Type of Service 8bit IPパケットの優先順位の情報。例えば音声トラフィックとデータトラフィックとでは音声トラフィックのデータを優先して送出することができる。
全長 total length 16bit IPヘッダを含むパケットの全長。
識別番号 identification 16bit 個々のパケットを識別するための情報。パケットが分割された時に分割されたパケットには同じ識別番号にすることで、受信側で複数の分割されたパケットを受信した場合においても、この識別番号に基づき正しく組み立て処理できる。
フラグ Flags 3bit
フラグメントオフセット Flagment Offset 13bit フラグメントされたパケットが元のパケットのどの位置であったかを示す情報
生存時間 time to live(TTL) 8bit パケットの生存時間を示す情報。
プロトコル Protocol 8bit
ヘッダチェックサム Header Checksum 16bit IPヘッダのチェックサムを表す情報。IPヘッダにエラーがないかを確認するために利用。
送信元IPアドレス Source Address 32bit 32bit(4byte)で構成された送信元のIPアドレスの情報
宛先IPアドレス Destination Address 32bit 32bit(4byte)で構成された宛先のIPアドレスの情報
オプション Options 可変長 通常は使用されないが、デバッグやテストを行う際に利用される情報
パティング Padding 可変長 通常は使用されないが、上記のオプションを使用した場合に、IPヘッダ長が32ビットの整数倍にならない場合がある。32ビットの整数倍にするために詰め物として空のデータの0の値を入れることにより調整する。

IPヘッダのフィールドにある「フラグ」の値には以下の3bitの組み合わせが値として入る

ビット 意味
先頭ビット 0 未使用 0
中央ビット 1 パケットのフラグメントを許可する
パケットのフラグメントを許可しない
0
1
最終ビット 1 分割された最後のフラグメントである
分割された途中のフラグメントである
0
1

IPヘッダのフィールドにある「プロトコル」の値

プロトコル番号 略称 プロトコル名
1 ICMP Internet Control Message Protocol
6 TCP Transmission Control Protocol
17 UDP User Datagram Protocol
88 EIGRP Enhanced Interior Gateway Routing Protocol
89 OSPF Open Shortest Path First

IPプロトコルの特徴

IPプロトコルには特筆すべき3つの特徴がある。IPプロトコル自体には信頼性のあるものではない。信頼性のある通信にするかは上位層に任せてあり、TCPを使用すれば信頼性の高いTCP/IPの通信となる。UDPを使用した場合は、効率性の高いUDP/IPの通信となる。

IPプロトコルの特徴 説明
コネクションレス型通信 ネットワーク通信に際して、事前にネットワーク間でコネクションを確立しないでいきなりデータ伝送をはじめる通信のこと。ただし、上位層プロトコルにTCPを使用した場合、コンピュータ間の通信で見ればコネクション型の通信となる。
ベストエフォート型通信 ネットワーク通信に際して、最善の努力は尽くすが、必ずしも十分な品質は保証しない通信のことを指す。しかし、上位層プロトコルにTCPを使用することで、IPを使用した通信でもパケット損失がないように見せることができる。
階層型アドレッシング IPプロトコルにより割り当てられる論理アドレス(IPアドレス)はコンピュータが所属しているグループ(ネットワーク部)と、そのネットワークに接続されているコンピュータを識別する(ホスト部)のこれら2階層により構成されている。

TCPとは

TCP(Transmission Control Protocol)はトランスポート層で動作するプロトコル。
TCPの特徴は、信頼性の高い通信を実現するために3way handshake、確認応答、順序制御、再送制御、ウィンドウ制御、フロー制御などの機能を利用している。

TCPのヘッダのフォーマット

各フィールド ビット数 各フィールドの説明
送信元ポート番号 16bit 送信元のポート番号の値
宛先ポート番号 16bit 宛先のポート番号の値
シーケンス番号 32bit 送信したデータの順序を示す値
確認応答番号 32bit 確認応答番号の値
データオフセット 4bit TCPヘッダの長さを示す値
予約 6bit 全ビット「0」が入る
コントロールフラグ 6bit URG, ACK, PSH, RST, SYN, FINの6ビットで構成される。これらのビットは「1」の値が入る場合に意味をなす
ウィンドウサイズ 16bit 受信側が一度に受信することができるデータ量を送信側に通知するために使用される。送信側は、この値のデータ量を超えて送信することはできない
チェックサム 16bit TCPヘッダとデータ部分のエラーチェックを行うために使用される値が入る
緊急ポインタ 16bit コントロールフラグのURGの値が「1」である場合にのみ使用されるフィールド。緊急データの開始位置を示す情報が入る
オプション 可変長 TCP通信において、性能を向上させるために利用する。例えば、TCPコネクションの際に、MSSを決定するために使用される。
パディング 可変長 TCPヘッダの長さを32ビットの整数にするために詰め物として空のデータの「0」の値を入れることにより調整する
  • コントロールフラグの詳細
ビット 値が「1」である時の意味
URG(Urgent) 緊急に処理すべきデータが含まれていることを意味する
ACK(Acknowledgement) 確認応答番号のフィールドが有効であることを意味する。コネクション確立以外は値が「1」
PSH(Push) 受信したデータをバッファリングせずに、即座にアプリケーションに渡すことを意味する
RST(Reset) コネクションが強制的に切断されることを意味する。何らかの異常を検出した場合に送信される
SYN(Synchronize) コネクションの確率を要求することを意味する
FIN(Fin) コネクションの正常な終了を要求することを意味する

バッファリングとは?

ポート番号とは

コンピュータが通信を行うために通信先のアプリケーションプロセスを特定するための番号。コンピュータ間の通信で通信する宛先のIPアドレスが分かれば、そのIPアドレスにデータを送信できるが、そのデータを受信したコンピュータが、どのアプリケーションでデータを受信するか判断する上で必要となる。

ポート番号は「0〜65535」の範囲で割り当てられている。このポート番号は3つに分類できる。

ポート番号のタイプ ポート番号の範囲 説明
well-knownポート番号 0〜1023 IANAで管理。サーバーのアプリケーションに割り当てられるポート番号
登録済みポート番号 1024〜49151 IANAで管理。独自に作成したアプリケーションに割り当てられるポート番号。
Dynamicポート番号 49152〜65535 クライアント側のアプリケーションに自動的に割り当てられるポート番号

UDPとは

UDP(User Datagram Protocol)は、トランスポート層で動作するプロトコル。
UDPの特徴は、TCPのように3way handshake、確認応答、順序制御、再送制御、ウィンドウ制御、フロー制御などの機能はなく、ほとんど何もしない。何もしないため信頼性は高くないが、速さやリアルタイム性を求める通信に利用される。

UDPのヘッダのフォーマット

各フィールド ビット数 各フィールドの説明
送信元ポート番号 16bit 送信元のポート番号の値
宛先ポート番号 16bit 宛先のポート番号の値
パケット長 16bit 「UDPヘッダ」の長さと「UDPデータ」の長さの合計サイズ
チェックサム 16bit UDPヘッダとデータ部分のエラーチェックを行うために使用される値

UDPの用途

  1. 音声や映像などのリアルタイム性のあるデータを転送する場合
  2. 複数の相手に同じデータを同時に転送する場合
  3. 信頼性が必要なく、少量のデータ転送をしたい場合

など

TCPとUDPの比較

プロトコル TCP UDP
通信方式 コネクション型 コネクションレス型
信頼性 高い 低い
転送速度 低速 高速
上位プロトコル http, telnet, ftp, pop... DNS, NTP, DHCP, SNMP...
主な用途 Webの閲覧、メールの送受信、ファイル転送、共有 音声通話、Videoストリーミング、マルチキャスト通信、ブロードキャスト通信、少量のデータ転送
主な特徴 ・ポート番号を利用した上位プロトコルへのデータ受け渡し
・コネクションの確率(3way hand shake)、維持、切断
・順序制御、再送制御、ウィンドウ制御、フロー制御
・ポート番号を利用した上位プロトコルへのデータ受け渡し
・オーバーヘッドが少ない(ヘッダが8byte)
・信頼性がない(パケットロスしても再送しない)

ICMPとは?

ICMP(Internet Control Message Protocol)は、IPプロトコルの「エラー通知」や「制御メッセージ」を転送するためのプロトコル。TCP/IPが実装されたコンピュータ間で、通信状態を確認するために使用される。ICMPはインターネット層で動作するプロトコル。

ICMPのフォーマット

ICMPメッセージは「タイプ」「コード」「チェックサム」「データ」の4つフィールドにより構成される。

各フィールド 英語表記 ビット数 各フィールドの説明
タイプ Type 8bit ICMPメッセージの機能タイプの値が入る。
コード Code 8bit ICMPメッセージの詳細な機能コードの値が入る。
チェックサム Checksum 16bit エラーがないかどうかチェック
データ Data 可変長 ICMPの「タイプ」により長さが異なる

ICMPの2種類のメッセージ

ICMPメッセージには大きく分類して2種類ある。
1. 問い合わせ(Querry)のメッセージ
 QUerryにより、あるノードから特定のノードに対する通信状態を確認することができる。(ping, traceroute)
2. エラー通知(Error)のメッセージ
 ノード間の通信で経路途中でパケットが廃棄された場合に、その原因を送信元のノードにエラー通知する。

  • ICMPメッセージのタイプ一覧
タイプ 内容意味 種類
0 Echo Reply エコー応答
3 Destination Unreachable Error
5 Redirect Error
8 Echo Request Query
11 Time Exceeded Error
  • ICMPメッセージのコード一覧

タイプが「0」= 「Echo Reply」の時

コード 内容 意味 種類
0 Echo Reply エコー応答

タイプが「3」= 「Destination Unreachable」の時

コード 内容 意味 種類
0 Net Unreachable 宛先ネットワークに到達できない Error
1 Host Unreachable 宛先ホストに到達できない
2 Protocol Unreachable プロトコルに到達できない Error
3 Port Unreachable ポートに到達できない Error
4 Fragment Needed and DF was Set パケットの分割が必要であるが分割禁止フラグ(DF)が立っているので、パケットを破棄 Error
5 Source Route Failed ソースルーティングが失敗 Error
6 Destination Network Unknown 宛先ホストが不明 Error
7 Source Host Unknown 送信元ホストが使用されていない Error
8 Source Host Isolated 送信元ホストが使用されていない Error
9 Communication with Destination Network is Administratively Prohibited 宛先ネットワークとの通信が管理上禁止されている Error
10 Communication with Destination Host is Administratively Prohibited 宛先ホストとの通信が管理上禁止されている Error
11 Destination Network Unreachable for ToS 指定された優先制御値では、宛先ネットワークに到達できない Error
12 Destination Host Unreachable for ToS 指定された優先制御値では、宛先ホストに到達できない
13 Communication Administratively Prohibited 通信が管理上禁止されている Error
14 Host Precedence Violation ホストの優先度が違反している Error
15 Precedence cutoff in effect 優先制御が事実上切断された Error

タイプが「5」= 「Redirect」の時

コード 内容 意味 種類
0 Redirect Datagram for the Network ネットワークへの最適経路変更を通知 Error
1 Redirect Datagram for the Host ホストへの最適経路変更を通知 Error
2 Redirect Datagram for the ToS and Network 優先制御でネットワークへの最適経路を通知 Error
3 Redirect Datagram for the ToS and Host 優先制御でホストへの最適経路を通知 Error

タイプが「8」= 「Echo Request」の時

コード 内容 意味 種類
0 Echo Request エコー要求 Query

タイプが「11」= 「Time Exceeded」の時

コード 内容 意味 種類
0 Time to Live exceeded in Transit 転送中にTTLの値が超過した Error
1 Fragment Reassemly Time Exceeded 分割パケットを組み立て中に時間が超過した Error

ヘッダ比較

TCPヘッダ

UDPヘッダ

ICMPフォーマット

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む