WEB TECKS - WEBサイト構築知識いろいろ

iptables設定形式を使用してnftablesを起動する方法 (iptablesからnftablesへの変換方法)

更新日:2024-03-23 16:44:30 登録日:2024-03-14 16:54:52
[確認環境]
Amazon Linux 2

 iptablesはLinuxで長年使用されてきたファイアーウォールツールですが、新しいディストリビューションでは、nftablesへ移行が推奨されています。
 そこで、ルール記述は、慣れ親しんだiptablesの記述形式で行い、その後nftablesの形式に変換して、nftablesを起動する手順を示します。

nftablesとiptables-nftのインストール

 iptables-nftは、nftablesのツールの一つで、これを利用することにより、iptablesのルール記述形式をnftables形式に変換することができますので、nftablesと一緒にインストールします。

# yum install nftables
# yum install iptables-nft

iptablesルール設定ファイルの記述

以下は記述例です。

# vi /etc/sysconfig/iptables

*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
:RH-Firewall-1-INPUT - [0:0]
-A INPUT -j RH-Firewall-1-INPUT
-A FORWARD -j RH-Firewall-1-INPUT
-A RH-Firewall-1-INPUT -i lo -j ACCEPT
-A RH-Firewall-1-INPUT -p icmp --icmp-type any -j ACCEPT
-A RH-Firewall-1-INPUT -p 50 -j ACCEPT
-A RH-Firewall-1-INPUT -p 51 -j ACCEPT
-A RH-Firewall-1-INPUT -p udp --dport 5353 -d 224.0.0.251 -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 20 -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 21 -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 25 -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 123 -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 110 -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 443 -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 587 -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 60000:60030 -j ACCEPT
-A RH-Firewall-1-INPUT -j REJECT --reject-with icmp-host-prohibited
-A RH-Firewall-1-INPUT -i eth1 -j ACCEPT
COMMIT

nftablesへの取込

# cd /etc/sysconfig

# # iptablesのルール形式からnftablesルール形式に変換、ファイルに出力
# iptables-restore-translate -f iptables > nftables_from_iptables.txt

# # nftコマンドで、変換されたルール設定を取り込む
# nft -i < nftables_from_iptables.txt

# # 念の為、設定ファイルをバックアップ
# cp -p nftables.conf nftables.conf_20240314

# # 現在のルール設定情報を、設定ファイルに出力
# nft list ruleset > nftables.conf

nftablesの有効化・起動

systemctl enable nftables
systemctl restart nftables

設定情報の確認

# nft list ruleset

nftablesとは

 nftablesは、Linuxカーネルのネットワークファイアウォールサブシステムの一部です。iptablesの後継として開発されました。nftablesは、Linuxのネットワークパケットのフィルタリングとネットワークアドレス変換を行うための柔軟で効率的な仕組みを提供します。

 nftablesの主な特徴は以下のとおりです:

 柔軟性と効率性: nftablesは、iptablesよりも柔軟性が高く、複雑なネットワークフィルタリングやアドレス変換のルールを定義できます。また、nftablesは処理の効率性が高く、大規模なネットワーク環境でも高速に動作します。

 単一のフレームワーク: nftablesは、さまざまなネットワークファイアウォール機能(フィルタリング、NAT、ルーティングなど)を統合した単一のフレームワークを提供します。これにより、異なる機能を統一された方法で管理できます。

 表とチェーン: nftablesの設定は、表(tables)とチェーン(chains)という2つの基本要素で構成されます。表はフィルタリングやNATなどの特定の機能を実現し、チェーンはパケット処理の流れを制御します。

 ユーザーフレンドリーな構文: nftablesの設定は、直感的でわかりやすい構文を使用して記述できます。これにより、ルールの作成や管理が容易になります。

 nftablesは、iptablesとの後方互換性を持っており、従来のiptablesルールを変換してnftablesのルールに移行することができます。しかし、nftablesはより柔軟で効率的なネットワークファイアウォール機能を提供し、現代のネットワーク環境における要件に対応するためのツールとして広く採用されています。

iptables-nftとは

 iptables-nftは、nftablesをベースにした新しいiptables互換のツールです。従来のiptablesコマンドは、Linuxのネットワークファイアウォール機能を制御するための非常に一般的なツールでした。しかし、nftablesはiptablesよりも柔軟性が高く、効率的なネットワークファイアウォール機能を提供します。

 iptables-nftは、従来のiptablesのルールセットをnftables形式に変換するための互換レイヤーとして機能します。これにより、従来のiptablesルールを維持しつつ、新しいnftables機能を利用できます。

 一部のLinuxディストリビューションでは、従来のiptablesコマンドがiptables-nftとして提供されるようになっています。これにより、ユーザーは従来のiptablesのコマンドを使いつつ、実際にはnftablesがベースとなっている機能を利用することができます。

 したがって、iptables-nftは従来のiptablesと同様の目的で使用されますが、内部的にはnftablesを使用しています。