Categories: linux

iptables -Lコマンドの使い方を徹底解説!Linuxでファイアウォールルールを確認する方法

Linuxでセキュリティ対策を行ううえで欠かせないのが「ファイアウォール」の設定です。
その中でも、現在のファイアウォールルールを確認するために使われる基本的なコマンドが iptables -L です。

このコマンドを使えば、システムにどのような通信ルールが設定されているかを把握できます。
本記事では、iptables -L コマンドの基本的な使い方からオプションの活用方法、実用的な確認方法までをわかりやすく解説します。
Linux初心者の方でも理解できるように、実行例やポイントを交えて丁寧に紹介します。


iptablesとは何か?

iptables は、Linuxにおけるパケットフィルタリングを実現するツールです。
ネットワーク通信に対するルールを定義し、不正アクセスのブロックや、特定のポート制限などを設定することで、システムの安全性を保つ役割を担います。

iptablesは、以下のような「チェイン(Chain)」にルールを設定することで動作します:

  • INPUT:外部からの通信に対する処理
  • OUTPUT:内部から外部への通信に対する処理
  • FORWARD:中継されるパケットに対する処理

これらのチェインにルールを追加したり、確認したりする際に使われるのが iptables -L コマンドです。


iptables -L コマンドの基本構文

iptables -L は、現在のファイアウォールルールを一覧表示するためのコマンドです。
非常に基本的なコマンドですが、正しく使いこなすことでシステムの状態を把握しやすくなります。

sudo iptables -L

このコマンドを実行すると、各チェインに設定されているルールが表示されます。
表示される内容は以下のようになります:

Chain INPUT (policy ACCEPT)
target prot opt source destination
ACCEPT all -- anywhere anywhere state RELATED,ESTABLISHED
DROP tcp -- anywhere anywhere tcp dpt:ssh

Chain FORWARD (policy ACCEPT)
target prot opt source destination

Chain OUTPUT (policy ACCEPT)
target prot opt source destination

ここでは、「ACCEPT」「DROP」といったアクションや、対象プロトコル、ポート番号などが確認できます。


iptables -L によく使うオプション

iptables -L にもいくつかの便利なオプションがあります。
それぞれのオプションの意味を知っておくと、より詳細な確認が可能になります。

-n(数値表示)

DNS名やサービス名を使わず、IPアドレスやポート番号をそのまま数値で表示します。
大量のルールがある環境では、名前解決に時間がかかるため、-n を使うことで表示が高速になります。

sudo iptables -L -n

-v(詳細表示)

各ルールに対するパケット数やバイト数など、より詳しい情報を表示します。

sudo iptables -L -v

--line-numbers(ルール番号を表示)

ルールごとに番号を表示するオプションです。
特定のルールを削除したり変更したりする際に便利です。

sudo iptables -L --line-numbers

複数のオプションを組み合わせる

複数のオプションを同時に使うこともできます。たとえば、以下のようにすれば、数値形式+詳細情報+行番号が表示されます:

bashコピーする編集するsudo iptables -L -n -v --line-numbers

チェインを指定してルールを表示する

特定のチェインだけを確認したい場合は、チェイン名を指定することで目的の情報だけを表示できます。

例:INPUTチェインだけを確認

sudo iptables -L INPUT

FORWARD や OUTPUT など、他のチェインも同様に指定できます。


実際の使用例と出力結果の読み方

ここで、具体的な例を見てみましょう。

sudo iptables -L -n -v --line-numbers

出力結果:

Chain INPUT (policy DROP)
num target prot opt in out source destination
1 ACCEPT all -- lo * 0.0.0.0/0 0.0.0.0/0
2 ACCEPT tcp -- * * 192.168.1.0/24 0.0.0.0/0 tcp dpt:22
3 DROP all -- * * 0.0.0.0/0 0.0.0.0/0

読み方のポイント:

  • num:ルール番号。後で削除や編集する際に使用
  • target:ACCEPT(許可)、DROP(拒否)などのアクション
  • prot:プロトコル(tcp, udp, icmp など)
  • source / destination:送信元/宛先IPアドレス
  • dpt:宛先ポート(この例では22=SSH)

iptables -L の注意点

iptables -L を使う際には、以下の点に注意しましょう。

  • 実行にはroot権限が必要:多くのLinux環境では、sudo を使わないとファイアウォールルールを確認できません。
  • IPv6には対応していないiptables はIPv4に対応しています。IPv6のルールは ip6tables を使って確認しましょう。
  • nftablesへの移行:近年のLinuxディストリビューションでは nftables という後継システムに移行が進んでおり、iptables コマンドの使用環境によってはエミュレーションで動いている可能性もあります。

iptables -L でトラブルシューティングをする

ファイアウォールが原因で通信できないとき、iptables -L を使って現在のルールを確認するのが第一歩です。
例えば、SSHが接続できない場合、INPUTチェインに tcp dpt:22 を許可するルールがあるかどうか確認しましょう。

また、意図しない DROP ルールがあれば、それが通信を妨げている原因の可能性もあります。


まとめ:iptables -Lを使いこなしてネットワークを守る

iptables -L コマンドは、Linuxのファイアウォール設定を確認するための非常に基本かつ重要なツールです。
オプションを使いこなすことで、より詳しい情報を取得し、セキュリティトラブルの原因を特定する助けになります。

初めてLinuxサーバーを扱う方も、まずは iptables -L を使って現在のルールを把握するところから始めてみましょう。
ファイアウォールの理解が深まれば、より安全で安定したサーバー運用が可能になります。

upandup

Web制作の記事を中心に、暮らし、ビジネスに役立つ情報を発信します。 アフィリエイトにも参加しています。よろしくお願いいたします。