0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Linux ネットワーク

Last updated at Posted at 2025-03-01

LPIC 学習記録として

用語

ソケット

$ netstat で表示されるソケット情報の「ソケット」とは、プロセス間通信(IPC: Inter-Process Communication)を行うためのエンドポイント(接続点)を指す。

具体的には IPアドレス + ポート番号(プロトコル) の組み合わせがソケットとして定義されることが多い。

Linux では /proc/ ディレクトリの 仮想ファイル として管理される。

デフォルトゲートウェイ

パケットの宛先がルーティングテーブル中で見つからない場合に使用される送信先。

ルーティングテーブル destination0.0.0.0 として設定される。

NetworkManager

ネットワーク設定を簡単に管理するための デーモン

無線 LAN、イーサネット接続、VPN など、さまざまなネットワークインターフェースを $ nmcli によって統合して管理できる。

DISCARD

ネットワーク機器やソフトウェアのテストやデモ用途で使用されるプロトコル。

ポート番号は 9

送信されたデータをそのまま捨て(discard)、レスポンスは一切返さない。

送信処理が正常にできているかだけを確認したいとき(受信結果は無視)や、パケットを大量に送り、スループット(一定時間内に処理できる量)を測定したい時などに利用される。

設定ファイル

/etc/services

ポート番号と サービス の対応関係が記述されたファイル。

ポート番号 はコンピュータ(ホスト)内でアプリケーションを識別するために使用される。

エントリ
サービス  ポート番号/プロトコル  別名
/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
...

別名はスペース区切りで複数定義することができる。

sinknullDISCARD プロトコルの別名。

/etc/hostname

自身のマシンの持つホスト名が記述された設定ファイル。

マシンに対して 1 つしか存在しないため、/etc/hosts で設定されるホスト名、別名と区別して canonical hostname (正規ホスト名)と表現されることがある。

ホスト名はネットワーク上で通信相手を識別するために利用される。

/etc/hostname
my_server

$ hostname で変更することができる。

/etc/hosts

IP アドレスとホスト名の対応関係が記述された設定ファイル。

/etc/hostname と異なり、自身のホスト以外の情報も含まれている。

小規模なネットワークにおける名前解決に利用されるが、管理に手間がかかるため、大規模なネットワークでは DNS が利用される。

/etc/hosts
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 と呼ばれるアクセス制御システムで使用される設定ファイル。

特定の サービス に対する接続を許可または拒否するために使用される。

/etc/hosts.allow, /etc/hosts.deny
サービス名: ホスト
サービス名: IPアドレス

/etc/hosts.allow が読み込まれた後に /etc/hosts.deny が読み込まれる。どちらにも記載がないものは 許可 になる。

そのため許可するものを /etc/hosts.allow に記載しておき、/etc/hosts.deny では全てを拒否対象としておく設定が一般的。

全てを拒否対象にする(/etc/hosts.deny)
ALL: ALL

/etc/network/interfaces

Debian 系のディストリビューションにおけるネットワークのインターフェース設定ファイル。

IP アドレスに関わる設定やデフォルトゲートウェイなどの設定が行われる。

/etc/sysconfig/network-scripts/

Red Hat 系ディストリビューションにおけるネットワークの設定ファイルが配置されたディレクトリ。

/etc/resolv.conf

参照先の DNS サーバの設定ファイル。

/etc/resolv.conf
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

ローカルドメイン名を指定する。ドメインを含まないホスト名を検索する場合に検索対象となる。
domainsearch はどちらか一方しか設定することはできず、両方が記述された場合、より下に記述された設定が使用される。

domain example.com

search

検索対象のドメインをリスト形式で記述する。
search を設定しておくと、ホスト名以降のドメイン(ドット . 以降の部分)が無くても、補完して名前解決をしてくれる。例えば example というホスト名を解決しようとしたとき、example.comexample.local をサーチドメインに設定しておくことでこれらのドメインが検索対象に追加される。

search example.com example.local

と設定しておくと、example というホスト名に対して、まず example.com が、次に example.local の名前解決を試みることになる。

options

タイムアウト時間や最大再試行回数などの DNS クエリに関する設定を追加する。

/etc/nsswitch.conf

Name Service Switch

名前解決の順序を制御する設定ファイル。

例えば、ホスト名を名前解決する際に、最初に /etc/hosts ファイルを確認し、その後 DNS サーバに問い合わる、などの順序が設定できる。

files となっている項目は、ローカルファイルが最初に検索対象になる。

/etc/nsswitch.conf
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 に依存しない仕組みになっている。

/etc/systemd/resolved.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 アドレスからホスト名)に利用される。

IP アドレスを問い合わせる
$ host ホスト名
ホスト名を問い合わせる(逆引き)
$ host IPアドレス

$ dig

Domain Information Groper(grope=探る)

DNS サーバに問い合わせを行い情報を取得するツール。

$ host よりも詳細な情報が取得できる。

IP アドレスを問い合わせる
$ 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)があるかどうかで接続を確認するためのツール。

指定した宛先に ICMP パケットを送信する
$ ping ホスト名
$ ping IPアドレス
送信パケット数を指定する(count)
$ ping -c パケット数 ホスト名 # デフォルトは Ctrl + C で終了するまで延々と送り続ける
送信間隔を指定する(interval)
$ 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アドレス
OS を推定する
$ 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アドレス ポート番号
80番ポート(HTTP)と443番ポート(HTTPS) の状態を確認する
$ 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 アドレスを表示する
$ ip addr show
特定のインターフェースの IP アドレスを表示する
$ ip addr show インターフェース名
IP アドレスを追加する
$ ip addr add IPアドレス dev インターフェース名
IP アドレスを削除する
$ 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

ARP テーブルを表示する
$ ip neigh show

ARP テーブル

ARP テーブルを追加する
$ ip neigh add IPアドレス lladdr MACアドレス dev インタフェース名
ARP テーブルを削除する
$ ip neigh del IPアドレス lladdr MACアドレス dev インターフェース名
$ ip neigh del IPアドレス dev インターフェース名

$ curl

Client URL

URL を指定してネットワークからデータを取得、送信するコマンド。

HTTP(S)、FTPSMTP など、さまざまなプロトコルをサポートしている。

URL のデータを取得
$ curl URL
取得データをローカル環境にファイルとして保存する(output)
$ curl -o ファイル名 URL
ネットワーク上のファイルをローカル環境(カレントディレクトリ)に保存する(output)
$ curl -O URL
指定した URL からのリダイレクトに従う
$ curl -L URL
HTTP ヘッダーだけ取得する
$ curl -I URL
POST リクエストでデータを送信する(data)
$ curl -d 送信データ URL
HTTPリクエストメソッド(GET、POST、PUT、DELETE など)を指定する
$ curl -X リクエストメソッド URL
HTTP ヘッダーを追加で指定する(header)
$ 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 ネットワークの状態を監視
NetworkManger の状態を表示する
$ nmcli general status
ホスト名を表示する
$ nmcli general hostname
インターフェースの状態を表示する
$ nmcli device
$ nmcli device status
利用可能な Wi-Fi ネットワークのリストを表示する
$ nmcli device wifi list
Wi-Fi ネットワークに接続する
$ nmcli device wifi connect "SSID" password "パスワード"
指定したネットワークインターフェースを切断する
$ nmcli device disconnect インターフェース名
現在設定されているネットワーク接続情報を表示する
$ nmcli conection show
ネットワーク機能全体を無効化する
$ nmcli networking off
ネットワーク機能全体を有効化する
$ nmcli networking on
ネットワークのイベントを監視する
$ nmcli monitor
0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?