- 投稿日:2019-10-09T16:44:01+09:00
個人的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.confsecurity.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>
- 投稿日:2019-10-09T13:54:50+09:00
xtUMLを導入する(linux編)未完
xtUMLを導入する(Mac編)未解決
https://qiita.com/kaizen_nagoya/items/dcb517f5d903ab079ec2Macでうまくいっていなかったので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/213712xtuml2waslRel17 workspace
https://www.youtube.com/watch?v=xijEIH8iaR8
wasl2xtumlRel17
https://www.youtube.com/watch?v=puAT5NDVFRU
自己参考資料(self reference)
Ubuntuでスクリーンショット(Mac keyboard編)
https://qiita.com/kaizen_nagoya/items/e165f571a3708e1e6999ubuntu導入
https://qiita.com/kaizen_nagoya/items/25b6c7e2e2457d506f5e文書履歴(document history)
ver. 0.01 初稿 20191008
ver. 0.02 参考資料追記 20191009
- 投稿日:2019-10-09T11:30:29+09:00
UbuntuでPDF編集
- 投稿日:2019-10-09T10:56:54+09:00
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 ネットワークインターフェースを無効化
ifup
、ifdown
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 サーバプログラムへの接続処理を待ち合わせるかの設定
- 投稿日:2019-10-09T10:48:33+09:00
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.gzkill
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.confwhich
コマンドの絶対パスを表示
type
コマンドの種類を表示
- 投稿日:2019-10-09T10:44:18+09:00
ネットワーク|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階層から構成されている。
アプリケーション層、トランスポート層、インターネット層、ネットワークインターフェイス層からなる。
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
1IPヘッダのフィールドにある「プロトコル」の値
プロトコル番号 略称 プロトコル名 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の用途
- 音声や映像などのリアルタイム性のあるデータを転送する場合
- 複数の相手に同じデータを同時に転送する場合
- 信頼性が必要なく、少量のデータ転送をしたい場合
など
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 ヘッダ比較