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