変更要約: 初版(主題2.03・副主題2.03.1〜2.03.3に対応)
3.2高度なネットワーク構成
sysctlによるカーネルパラメータ調整(特にIPフォワードの有効化)、疎通確認のping・ping6、任意ポートでの通信検証に使うnetcat(nc/ncat)、パケットキャプチャのtcpdump、ポートスキャンのnmap、接続状況確認のss・netstat を学びます。
サーバーをルーターやゲートウェイとして働かせる、通信経路の途中を覗く、任意のポートが本当に開いているか確かめる——こうした「一歩踏み込んだ」ネットワーク作業には、sysctlによるカーネル調整と、ping・nc・tcpdump・nmap・ssといった診断ツール群が欠かせません。
3.2.1sysctl とIPフォワード
- sysctl=カーネルパラメータ(/proc/sys 配下)を実行時に読み書きするコマンド。
sysctl net.ipv4.ip_forwardで確認、sysctl -w net.ipv4.ip_forward=1で一時的に有効化。 - 恒久化=/etc/sysctl.conf(または /etc/sysctl.d/ 以下)に
net.ipv4.ip_forward = 1を記述し、sysctl -pで反映。IPフォワードを有効にすると、サーバーは複数インターフェース間でパケットを中継するルーターとして動作できる。
3.2.2疎通・通信・キャプチャの診断ツール
- ping/ping6=ICMP echo request で相手ホストの疎通を確認(IPv4/IPv6)。応答時間・パケットロス率から経路や輻輳の兆候を読み取る。
- netcat(nc/ncat)=任意のTCP/UDPポートへ接続・待受できる汎用ツール。
nc -zv host 22でポート開放確認、nc -l -p 8080で簡易リスナー起動。 - tcpdump=インターフェースを流れるパケットをキャプチャ・表示する。
tcpdump -i eth0 port 80のようにインターフェースとフィルタ条件を指定。実際に何が流れているかを確認する最終手段。 - nmap=対象ホストの開いているポートやサービスを走査するスキャナ。
nmap -p 1-1000 hostのように範囲指定。セキュリティ診断・構成確認の両方で使う。 - ss/netstat=ソケットの接続状態一覧。
ss -tuln(TCP/UDP・listen中・数値表示)が現行の主流、netstat(netstat -tuln)は同等機能を持つ旧世代ツール。
「IPフォワードの永続化は /etc/sysctl.conf に net.ipv4.ip_forward=1」「ss は netstat の後継(同等機能・より高速)」「nc はポート疎通確認・簡易サーバー両方に使える」「tcpdump は実際のパケット内容を見る唯一の手段」 が定番の対比です。ping は ICMP、nc は TCP/UDP というプロトコル層の違いも問われます。
「クライアントから特定サービスにつながらない」という報告を受けたときの切り分けは、疎通→ポート→内容の順で段階的に絞り込むのが定石です。まず ping で相手ホストまでの経路がそもそも生きているかを見ます(ICMP自体がフィルタされている環境もあるため、応答が無くても即座に断線とは断定しません)。次に nc -zv host 443 や nmap -p 443 host で目的のポートが開いているかを確認します。ここで閉じていれば、サービス側の起動状況やファイアウォール設定(後の章のトピック)を疑います。ポートは開いているのに通信内容がおかしい場合は tcpdump -i eth0 host <client-ip> and port 443 のように条件を絞ってキャプチャし、SYN が返っているか・途中でリセットされていないかを実際のパケットで確認します。サーバーの現在のリスン状況全体を俯瞰したいときは ss -tuln が最短で、netstat -tuln でも同じ情報が得られますがssの方が大規模接続下で高速です。ルーター的役割(複数NIC間の中継、VPNゲートウェイ等)を持たせるサーバーでは、sysctl net.ipv4.ip_forward が 0 のままだと転送が起きず疎通できない典型的な見落としになるため、要件に応じて有効化と/etc/sysctl.confへの恒久化を忘れないようにします。
| 目的 | コマンド例 | 層・特徴 |
|---|---|---|
| 疎通確認 | ping host / ping6 host | ICMP echo |
| ポート開放確認 | nc -zv host 443 | TCP/UDP・接続試行 |
| ポートスキャン | nmap -p 1-1000 host | 複数ポート一括走査 |
| パケット内容の確認 | tcpdump -i eth0 port 80 | 実データをキャプチャ |
| リスン状況の一覧 | ss -tuln | netstat の後継・高速 |
ひっかけ: 「ping が失敗した=そのポートのサービスが停止している」は誤りです。ping はICMPでの疎通確認にすぎず、TCPサービスの生死とは無関係です(ICMPがファイアウォールで遮断されているだけの場合もあります)。また「IPフォワードは sysctl -w で有効化すれば恒久的に有効」も誤り=sysctl -w はその場限りの変更で、再起動で消えるため/etc/sysctl.confへの記述が必要です。
3.2.3この節のまとめ
- IPフォワードの恒久化=/etc/sysctl.conf に net.ipv4.ip_forward=1(sysctl -p で反映)。sysctl -w は一時的
- 診断はping(疎通)→nc/nmap(ポート)→tcpdump(内容)→ss(リスン一覧)の順。ss は netstat の高速な後継
進捗の記録にはログインが必要です。
理解度チェック
(軽い確認用)Q1. サーバーを複数NIC間のルーターとして動作させたい。IPフォワードを再起動後も有効な状態で設定するには?
Q2. クライアントから特定サーバーの443番ポートに接続できないと報告があった。ping には応答がある。次に確認すべき適切な手段は?
Q3. サーバー上で現在リスン中のTCP/UDPポート一覧を、数値表示で高速に確認したい。適切なコマンドは?

