LPIC 学習記録として
用語
ソケット
$ netstat
で表示されるソケット情報の「ソケット」とは、プロセス間通信(IPC: Inter-Process Communication)を行うためのエンドポイント(接続点)を指す。
具体的には IPアドレス + ポート番号(プロトコル) の組み合わせがソケットとして定義されることが多い。
Linux では /proc/
ディレクトリの 仮想ファイル として管理される。
デフォルトゲートウェイ
パケットの宛先がルーティングテーブル中で見つからない場合に使用される送信先。
ルーティングテーブル destination
が 0.0.0.0
として設定される。
NetworkManager
ネットワーク設定を簡単に管理するための デーモン。
無線 LAN、イーサネット接続、VPN など、さまざまなネットワークインターフェースを $ nmcli
によって統合して管理できる。
DISCARD
ネットワーク機器やソフトウェアのテストやデモ用途で使用されるプロトコル。
ポート番号は 9
。
送信されたデータをそのまま捨て(discard)、レスポンスは一切返さない。
送信処理が正常にできているかだけを確認したいとき(受信結果は無視)や、パケットを大量に送り、スループット(一定時間内に処理できる量)を測定したい時などに利用される。
設定ファイル
/etc/services
ポート番号と サービス の対応関係が記述されたファイル。
ポート番号 はコンピュータ(ホスト)内でアプリケーションを識別するために使用される。
サービス ポート番号/プロトコル 別名
tcpmux 1/tcp
echo 7/tcp
echo 7/udp
discard 9/tcp sink null
discard 9/udp sink null
systat 11/tcp users
daytime 13/tcp
daytime 13/udp
netstat 15/tcp
...
別名はスペース区切りで複数定義することができる。
sink
や null
は DISCARD プロトコルの別名。
/etc/hostname
自身のマシンの持つホスト名が記述された設定ファイル。
マシンに対して 1 つしか存在しないため、/etc/hosts
で設定されるホスト名、別名と区別して canonical hostname (正規ホスト名)と表現されることがある。
ホスト名はネットワーク上で通信相手を識別するために利用される。
my_server
$ hostname
で変更することができる。
/etc/hosts
IP アドレスとホスト名の対応関係が記述された設定ファイル。
/etc/hostname
と異なり、自身のホスト以外の情報も含まれている。
小規模なネットワークにおける名前解決に利用されるが、管理に手間がかかるため、大規模なネットワークでは DNS が利用される。
127.0.0.1 localhost
127.0.1.1 my_server
# The following lines are desirable for IPv6 capable hosts
::1 ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
/etc/hosts.allow
/ /etc/hosts.deny
TCP Wrappers と呼ばれるアクセス制御システムで使用される設定ファイル。
特定の サービス に対する接続を許可または拒否するために使用される。
サービス名: ホスト
サービス名: IPアドレス
/etc/hosts.allow
が読み込まれた後に /etc/hosts.deny
が読み込まれる。どちらにも記載がないものは 許可 になる。
そのため許可するものを /etc/hosts.allow
に記載しておき、/etc/hosts.deny
では全てを拒否対象としておく設定が一般的。
ALL: ALL
/etc/network/interfaces
Debian 系のディストリビューションにおけるネットワークのインターフェース設定ファイル。
IP アドレスに関わる設定やデフォルトゲートウェイなどの設定が行われる。
/etc/sysconfig/network-scripts/
Red Hat 系ディストリビューションにおけるネットワークの設定ファイルが配置されたディレクトリ。
/etc/resolv.conf
参照先の DNS サーバの設定ファイル。
nameserver 8.8.8.8
nameserver 8.8.4.4
search example.com
options timeout:1 attempts:2
DHCP や NetworkManager が自動的にファイルを更新するため、手動で変更しても上書きされることがある。
nameserver
使用する DNS サーバを指定する。
nameserver 8.8.8.8
nameserver 8.8.4.4
このように複数設定した場合は上から順に使用される。
domain
ローカルドメイン名を指定する。ドメインを含まないホスト名を検索する場合に検索対象となる。
domain
と search
はどちらか一方しか設定することはできず、両方が記述された場合、より下に記述された設定が使用される。
domain example.com
search
検索対象のドメインをリスト形式で記述する。
search
を設定しておくと、ホスト名以降のドメイン(ドット .
以降の部分)が無くても、補完して名前解決をしてくれる。例えば example
というホスト名を解決しようとしたとき、example.com
や example.local
をサーチドメインに設定しておくことでこれらのドメインが検索対象に追加される。
search example.com example.local
と設定しておくと、example
というホスト名に対して、まず example.com
が、次に example.local
の名前解決を試みることになる。
options
タイムアウト時間や最大再試行回数などの DNS クエリに関する設定を追加する。
/etc/nsswitch.conf
Name Service Switch
名前解決の順序を制御する設定ファイル。
例えば、ホスト名を名前解決する際に、最初に /etc/hosts
ファイルを確認し、その後 DNS サーバに問い合わる、などの順序が設定できる。
files
となっている項目は、ローカルファイルが最初に検索対象になる。
passwd: files systemd
group: files systemd
shadow: files systemd
gshadow: files systemd
hosts: files dns
networks: files
protocols: db files
services: db files
ethers: db files
rpc: db files
netgroup: nis
passwd
ユーザ情報に関する設定。
ユーザ名をユーザ ID(UID)へ変換する際に利用される。
passwd: files systemd
となっていた場合、最初に files
(/etc/passwd
)、次に systemd が検索される。
group
グループ情報に関する設定。
グループ名をグループ ID(UID)へ変換する際に利用される。
shadow
ユーザーのパスワード情報に関する設定。
ユーザーのパスワードが格納されたファイルを指定する。
files
は /etc/shadow
のこと。
hosts
ホスト名解決に関する設定。
ホスト名(hostname
)を IP アドレスに変換する際に利用される。
hosts: files dns
となっていた場合、ホスト名を解決する際は /etc/hosts
ファイル → DNS サーバの順に検索が行われる。
/etc/systemd/resolved.conf
systemd の サービスの一つである systemd-resolved.service
で DNS 名前解決に利用される設定ファイル。
/etc/resolv.conf
に依存しない仕組みになっている。
[Resolve]
#DNS=
#FallbackDNS=
#Domains=
#DNSSEC=no
#DNSOverTLS=no
#MulticastDNS=no
#LLMNR=no
#Cache=no-negative
#CacheFromLocalhost=no
#DNSStubListener=yes
#DNSStubListenerExtra=
#ReadEtcHosts=yes
#ResolveUnicastSingleLabel=no
#StaleRetentionSec=0
コマンド
$ host
DNS の問い合わせを行うためのツール。
ホスト名の IP アドレス解決や、逆引き(IP アドレスからホスト名)に利用される。
$ host ホスト名
$ host IPアドレス
$ dig
Domain Information Groper(grope=探る)
DNS サーバに問い合わせを行い情報を取得するツール。
$ host
よりも詳細な情報が取得できる。
$ dig ホスト名
$ dig IPアドレス
$ hostname
$ sudo hostname
$ sudo hostname 新ホスト名
$ hostname
によるホスト名の変更は一時的なもので、再起動によって変更が元に戻ってしまう。恒久的に変更したい場合、$ hostnamectl
を実行する必要がある。
$ hostnamectl
$ hostnamectl
$ hostnamectl status
$ sudo hostnamectl set-hostname 新ホスト名
$ ping
/ $ ping6
指定された宛先に対して ICMP Echo Request(パケット) を送信し、そのホストから応答(Echo Reply)があるかどうかで接続を確認するためのツール。
$ ping ホスト名
$ ping IPアドレス
$ ping -c パケット数 ホスト名 # デフォルトは Ctrl + C で終了するまで延々と送り続ける
$ ping -i 秒数 ホスト名 # デフォルトは 1 秒
IPv6 では $ ping6
を使用する。利用方法は $ ping
と同じ。
$ traceroute
/ $ traceroute6
$ traiceroute ホスト名
$ traiceroute IPアドレス
IPv6 では $ traceroute6
を使用する。
※ 仕組みついては こちら
$ tracepath
/ $ tracepath6
$ tracepath ホスト名
$ tracepath IPアドレス
IPv6 では $ tracepath6
を使用する。
$ nmap
Network Mapper
ネットワークのスキャンを行うためのツールで、オープンポートの検出(ポートスキャン)、サービスの確認、OSの推定などを行うことができる。
ネットワーク管理者がセキュリティ診断やトラブルシューティングに利用するほか、攻撃者が脆弱性を探るためにも使われる。
$ nmap IPアドレス
$ nmap -O IPアドレス
$ nc
netcat
ネットワーク接続を確立し、データの送受信を行うためのツール。
様々な用途に使用することができる。
- ポートスキャン
- 指定した IP アドレスのポートが開いているか確認する
- TCP / UDP 通信
- サーバーとクライアント間でデータを送受信する
- 簡易 Web サーバー
- 一時的に HTTP サーバーを起動する
- ファイル転送
- リモートマシンとの間でファイルを転送する
オプション | 説明 |
---|---|
-l |
指定したポートをリッスンする(listen) |
-p ポート番号 |
使用するポート番号を指定する(port) |
-v |
詳細情報を表示する(verbose) |
-n |
ホスト名ではなく IP アドレスを使う(numeric) |
-z |
接続テストのみ。データ送受信しない。(zero-I/O) ポート番号をスペース区切りで複数指定できる。 |
-u |
UDP を使用する(デフォルトはTCP) |
-p
オプションはクライアント側の送信元ポートを指定する。サーバ側のリッスン用ポートの指定には -l
を使用する。
$ nc [-option] ホスト名 ポート番号
$ nc [-option] IPアドレス ポート番号
$ nc -zv example.com 80 443
クライアントとサーバ側でそれぞれ利用することができる。
$ nc -l -p ポート番号
$ nc サーバのIPアドレス サーバのポート番号
$ ip
ネットワーク設定を管理するための標準コマンド。
従来の $ ifconfig
、$ route
、$ netstat
などに換わる新しいツール(iproute2
パッケージ)として提供される。
$ ip 操作対象 サブコマンド オプション dev デバイス名
$ ip 操作対象 サブコマンド オプション # デバイス名を省略するとすべてのインターフェースが対象
操作対象 | 説明 |
---|---|
addr |
IPアドレス |
link |
データリンク層 のインターフェース |
route |
ルーティング |
neigh |
ARP テーブル |
tunnel |
トンネル設定 |
サブコマンド | 説明 |
---|---|
show |
表示する |
add |
追加する |
del |
削除する |
set |
設定する |
up |
有効化する |
down |
無効化する |
$ ip addr
$ ip addr show
$ ip addr show インターフェース名
$ ip addr add IPアドレス dev インターフェース名
$ ip addr del IPアドレス dev インターフェース名
$ ip link
$ ip -s link
$ ip -s link show
$ ip -s link show dev インターフェース名
RX
= Receive(受信)
TX
= Transmit(送信)
$ ip link set up dev インターフェース名
$ ip link set dev インターフェース名 up
$ ip link set インターフェース名 up
$ ip link set down dev インターフェース名
$ ip link set dev インターフェース名 down
$ ip link set インターフェース名 down
$ ip route
$ ip route show
$ ip route add IPアドレス via ゲートウェイのIPアドレス dev インターフェース名
PCに設定されるゲートウェイは、ルータの場合「ネクストホップ」と呼ばれる。
$ ip route add default via IPアドレス dev インターフェース名
$ ip route del IPアドレス
$ ip route del default via ゲートウェイのIPアドレス
$ ip route del default
$ ip neigh
$ ip neigh show
$ ip neigh add IPアドレス lladdr MACアドレス dev インタフェース名
$ ip neigh del IPアドレス lladdr MACアドレス dev インターフェース名
$ ip neigh del IPアドレス dev インターフェース名
$ curl
Client URL
URL を指定してネットワークからデータを取得、送信するコマンド。
HTTP(S)、FTP、SMTP など、さまざまなプロトコルをサポートしている。
$ curl URL
$ curl -o ファイル名 URL
$ curl -O URL
$ curl -L URL
$ curl -I URL
$ curl -d 送信データ URL
$ curl -X リクエストメソッド URL
$ curl -H ヘッダー情報 URL
Net-Tools
1990年代の設計による古いネットワークに関するツール群(パケーじ)。
新しいコマンドに置き換わり、メンテナンスがされていない可能性があるため現在では *非推奨。
Linux ディストリビューションによっては標準搭載されていない。
$ ifconfig
Interface Configuration
現在では、より新しく高機能な $ ip
を使用することが推奨されている。
ネットワークインターフェースの設定や状態を確認するコマンド。
$ ifconfig
$ ifconfig -a
$ ip a # 推奨
$ ifconfig インターフェース名
$ ifconfig インターフェース名 up
$ ip link set インターフェース名 up # 推奨
$ ifconfig インターフェース名 down
$ ip link set インターフェース名 down # 推奨
$ ifup
/ $ ifdown
interface up / interface down
$ ifup ネットワークインターフェース名
$ ifdown ネットワークインターフェース名
$ netstat
Network Statistics
現在では、より新しく高機能な $ ss
を使用することが推奨されている。
開いているポート、アクティブな接続、ルーティングテーブル、インターフェースの状態などネットワークの統計情報を表示する。
Net-Tools($ ifconfig
、$ route
などと同じ、古いツール群)の一部。
$ netstat
接続待ちの状態(state)を LISTEN
、接続が確立した状態を ESTABLISHED
で表現する。
オプション | 説明 |
---|---|
-a --all
|
すべての ソケット 情報を表示する |
-l --listening
|
接続待ちのソケット情報を表示する |
-p --program
|
ソケット、ポートをオープンしているプロセスを表示する |
-t --tcp
|
TCP 接続用ソケットのみ表示する |
-u --udp
|
UDP 接続用ソケットのみ表示する |
-i --interface
|
ネットワークインターフェースの状態を表示する$ ip -s link と同じ |
-r --route
|
ルーティングテーブルを表示する$ ip route show と同じ |
$ route
現在では、より新しく高機能な $ ip
を使用することが推奨されている。
ルーティングテーブルを表示したり、操作することができる。
Net-Tools($ ifconfig
、$ netstat
などと同じ、古いツール群)の一部。
$ route # ホスト名で表示する
$ route -n # IP アドレスで表示する
オプション | 説明 |
---|---|
-n |
ホスト名ではなく IP アドレスを表示する(numeric) |
add |
新しいルートを追加する |
del |
ルートを削除する |
default |
デフォルトゲートウェイを設定する |
netmask |
サブネットマスクを指定する |
$ route add default gw デフォルトゲートウェイ
$ nmcli
NetworkManager の制御を行うコマンド。
$ nmcli 操作対象 サブコマンド
操作対象 | 説明 |
---|---|
general |
NetworkManager の管理 |
device |
ネットワークインターフェースの表示、管理 |
connection |
ネットワーク接続の管理(接続の確立、編集、切断) |
networking |
ネットワークの状態を表示、機能の有効化、無効化 |
radio |
ワイヤレスデバイス(Wi-Fi、Bluetooth)の管理 |
agent |
ネットワークの認証エージェントを管理 |
monitor |
ネットワークの状態を監視 |
$ nmcli general status
$ nmcli general hostname
$ nmcli device
$ nmcli device status
$ nmcli device wifi list
$ nmcli device wifi connect "SSID" password "パスワード"
$ nmcli device disconnect インターフェース名
$ nmcli conection show
$ nmcli networking off
$ nmcli networking on
$ nmcli monitor