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 で表示されるソケット情報の「ソケット」とは、通信を行うための エンドポイント(接続点)を指し、具体的には IPアドレス + ポート番号(プロトコル) の組み合わせのことを指す。

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

デフォルトゲートウェイ

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

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

NetworkManager

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

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

設定ファイル

/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
...

/etc/hostname

ホスト名が記述された設定ファイル。

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

/etc/hostname
my_server

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

/etc/hosts

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

あくまでも対応関係の設定であり、ホスト名の設定は /etc/hostname にて行う。

/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 系のディストリビューションにおけるネットワークのインターフェース設定ファイル。

/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

このように複数設定した場合は上から順に使用される。

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 サーバに問い合わる、などの順序が設定できる。

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

/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

~/.ssh/known_hosts

$ ssh で必要になるクライアント側に保存される、サーバの公開鍵情報が格納されたファイル。

~/.ssh/authorized_keys

SSH においてサーバ側に配置する公開鍵。

$ ssh-keygen を参照

コマンド

$ 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 によるホスト名の変更は一時的なもので、再起動によって変更が元に戻ってしまう。恒久的に変更したい場合、以下を実行する必要がある。

恒久的にホスト名を変更する
$ sudo systemctl set-host-name 新ホスト名

$ ping / $ ping6

指定された IP アドレスに対して ICMP Echo Request(パケット) を送信し、そのホストから応答(Echo Reply)があるかどうかで接続を確認するためのツール。

指定した IP アドレスに ICMP パケットを送信する
$ ping ホスト名
$ ping IPアドレス
送信パケット数を指定する(count)
$ ping -c パケット数 ホスト名 # デフォルトは Ctrl + C で終了するまで延々と送り続ける
送信間隔を指定する(interval)
$ ping -i 秒数 ホスト名 # デフォルトは 1 秒

IPv6 では $ ping6 を使用する。利用方法は $ ping と同じ。

$ traceroute / $ traceroute6

指定された IP アドレスまでの経路を調査する
$ traiceroute ホスト名
$ traiceroute IPアドレス

IPv6 では $ traceroute6 を使用する。

※ 仕組みついては こちら

$ tracepath / $ tracepath6

指定された IP アドレスまでの経路を調査する
$ tracepath ホスト名
$ tracepath IPアドレス

IPv6 では $ tracepath6 を使用する。

$ lsof

List Open Files

システム内で開かれているファイルやソケットを一覧表示する。

システム上のすべての開いているファイルを一覧表示する
$ lsof
特定のプロセスが開いているファイルを調べる
$ lsof -p PID
特定のユーザが開いているファイルを調べる
$ lsof -u ユーザ名
特定のファイルを開いているプロセスを調べる
$ lsof ファイル名
特定のポートを使用しているプロセスを調べる
$ lsof -i:ポート番号

$ 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 IPアドレス

$ nmcli

NetworkManager の制御を行うコマンド。

基本構文
$ nmcli 操作対象 サブコマンド
操作対象 説明
device ネットワークインターフェースの表示、管理
connection ネットワーク接続の管理(接続の確立、編集、切断)
networking ネットワークの状態を表示、機能の有効化、無効化
radio ワイヤレスデバイス(Wi-Fi、Bluetooth)の管理
agent ネットワークの認証エージェントを管理
monitor ネットワークの状態を監視
インターフェースの状態を表示する
$ nmcli device
$ nmcli device status
現在設定されているネットワーク接続情報を表示する
$ nmcli conection show
利用可能な Wi-Fi ネットワークのリストを表示する
$ nmcli device wifi list
Wi-Fi ネットワークに接続する
$ $ nmcli device wifi connect "SSID" password "パスワード"
指定したネットワークインターフェースを切断する
$ nmcli device disconnect インターフェース名
ネットワーク機能全体を無効化する
$ nmcli networking off
ネットワーク機能全体を有効化する
$ nmcli networking on
ネットワークのイベントを監視する
$ nmcli monitor

$ ssh

Secure Shell

ネットワーク上(リモート)のコンピュータに暗号化された通信によって接続することにより、安全に操作する。

指定した IP アドレスに接続する
$ ssh IPアドレス
ポート番号を指定する
$ ssh -p ポート番号 IPアドレス
ート番号を指定する
$ ssh -p ポート番号 IPアドレス
SSH 認証用の秘密鍵のパスを指定する(identity file)
$ ssh -i パス IPアドレス 

※ デフォルトの秘密鍵パスは ~/.ssh/id_rsa

初回接続時に ~/.ssh.known_hosts ファイルにサーバの公開鍵が保存される。

※ 関連事象: 仮想環境を再インストールしたら SSH 接続に失敗する

$ ssh -X / X転送

リモートサーバ上の GUI アプリケーションを $ ssh コマンドを実行したローカル環境で表示し、ローカル環境上で GUI 操作できるようにする機能を X 転送 と言うこと。

X 転送は X Window System 上で動作する。

X 転送を行う
$ ssh -X IPアドレス

-X と同様に X 転送を行うオプションに -Y がある。-X よりもセキュリティが弱いものの、アプリケーションの動作上は障害が発生しづらく、信頼性が高い。

$ ssh-keygen

SSH プロトコルで使用される鍵ペア(公開鍵と秘密鍵)を生成する。

  • 公開鍵
    • サーバーへ配置することになる鍵
    • デフォルトではローカル環境の ~/.ssh/id_rsa として生成される
    • サーバーの ~/.ssh/authorized_keys に配置することで、公開鍵認証が有効になる($ ssh-copy-id を使用して配置する)
  • 秘密鍵
    • ローカル環境で安全に保存する必要がある鍵
    • デフォルトでは ~/.ssh/id_rsa として生成される
秘密鍵を生成する
$ ssh-keygen 

実行後はパスフレーズの入力を求められる(空文字でも良い)。

鍵の保存先を指定する
$ ssh-keygen -f ファイルパス
鍵の種類(アルゴリズム)を指定する(type)
$ ssh-keygen -t 種類

種類:rsaecdsaed25519(推奨)、dsa(非推奨)

$ ssh-copy-id

ローカル環境の SSH 公開鍵(~/.ssh/id_rsa)をリモートサーバーの ~/.ssh/authorized_keys ファイル末尾に追加する。

ローカル環境の公開鍵をサーバに配置する
$ ssh-copy-id サーバのIPアドレス

$ ssh-agent / $ ssh-add

ssh-agent は、SSH の秘密鍵をメモリ上に一時的に保持し、SSH 接続のたびにパスフレーズを入力する手間を省くための デーモン

現在のシェルで起動する方法と、新しいシェルセッション(サブシェル)で一時的に起動する方法がある。

現在のシェルで起動する場合、現在のシェルを $ exit しない限り、ssh-agent は有効(長時間の使用向き)。一方、サブシェルを使用した場合、サブシェルを $ exit すれば ssh-agent は終了する。

ssh-agent は、$ ssh-agent の実行によって 環境変数$SSH_AUTH_SOCK$SSH_AGENT_PID) を設定する必要があるが、現在のシェルで有効な環境変数を設定するtために、このような違いがある。

現在のシェルで起動する
$ eval $(ssh-agent)
サブシェルで起動する
$ ssh-agent bash

ssh-agent が起動したら、秘密鍵を登録する。

秘密鍵を登録する
$ ssh-add ~.ssh/id_rsa

ここでパス付レースを入力することで、以降の SSH 接続で入力する必要がなくなる。

登録済みの秘密鍵を確認する
$ ssh-add -l
登録済みの鍵を全て削除する
$ ssh-add -D

$ scp

Secure Copy

ファイルやディレクトリをローカル - リモート、または異なるリモートホスト同士で転送する。

SSH が使用されるため、転送されるデータは暗号化される。

ファイルを SSH で転送する
$ scp 送信元ホスト名:ファイルパス 送信先ホスト名:ファイルパス
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?