6.6. nftables を使用したポート転送の設定
ポート転送を使用すると、管理者は特定の宛先ポートに送信されたパケットを、別のローカルまたはリモートポートに転送できます。
たとえば、Web サーバーにパブリック IP アドレスがない場合は、ファイアウォールのポート
80
および 443
で着信パケットを Web サーバーに転送するファイアウォールにポート転送ルールを設定できます。このファイアウォールルールを使用すると、インターネットのユーザーは、ファイアウォールの IP またはホスト名を使用して Web サーバーにアクセスできます。
6.6.1. 着信パケットの別のローカルポートへの転送
本セクションでは、ポート
8022
の着信 IPv4 パケットをローカルシステムのポート 22
に転送する方法を説明します。
手順6.17 着信パケットの別のローカルポートへの転送
- IP アドレスファミリーを使用して、
nat
という名前のテーブルを作成します。# nft add table ip nat
- テーブルに
prerouting
およびpostrouting
チェーンを追加します。# nft -- add chain ip nat prerouting { type nat hook prerouting priority -100 \; }
注記nft コマンドに--
オプションを渡して、シェルが優先度の負の値を nft コマンドのオプションとして解釈しないようにします。 8022
ポートの着信パケットをローカルポート22
にリダイレクトするルールをprerouting
チェーンに追加します。# nft add rule ip nat prerouting tcp dport 8022 redirect to :22
6.6.2. 特定のローカルポートで着信パケットを別のホストに転送
宛先ネットワークアドレス変換 (DNAT) ルールを使用して、ローカルポートの着信パケットをリモートホストに転送できます。これにより、インターネット上のユーザーは、プライベート IP アドレスを持つホストで実行しているサービスにアクセスできるようになります。
この手順では、ローカルポート
443
の着信 IPv4 パケットを、IP アドレス 192.0.2.1
を持つリモートシステムの同じポート番号に転送する方法を説明します。
前提条件
- パケットを転送するシステムに
root
ユーザーとしてログインしている。
手順6.18 特定のローカルポートで着信パケットを別のホストに転送
- IP アドレスファミリーを使用して、
nat
という名前のテーブルを作成します。# nft add table ip nat
- テーブルに
prerouting
およびpostrouting
チェーンを追加します。# nft -- add chain ip nat prerouting { type nat hook prerouting priority -100 \; } # nft add chain ip nat postrouting { type nat hook postrouting priority 100 \; }
注記nft コマンドに--
オプションを渡して、シェルが優先度の負の値を nft コマンドのオプションとして解釈しないようにします。 - ポート
443
の着信パケットを192.0.2.1
の同じポートにリダイレクトするルールをprerouting
チェーンに追加します。# nft add rule ip nat prerouting tcp dport 443 dnat to 192.0.2.1
postrouting
チェーンにルールを追加して、送信トラフィックをマスカレードします。# nft add rule ip nat postrouting ip daddr 192.0.2.1 masquerade
- パケット転送を有効にします。
# echo "net.ipv4.ip_forward=1" > /etc/sysctl.d/95-IPv4-forwarding.conf # sysctl -p /etc/sysctl.d/95-IPv4-forwarding.conf