私はフォローしています公式 Debian Wiki チュートリアルDebian 11 で VPN サーバーを設定します。
Forward traffic to provide access to the Internet
最後の段落を除いて、すべてが順調に進んだ。
次の行は機能しません。
IF_MAIN=eth0
IF_TUNNEL=tun0
YOUR_OPENVPN_SUBNET=10.9.8.0/24
#YOUR_OPENVPN_SUBNET=10.8.0.0/16 # if using server.conf from sample-server-config
nft add rule ip filter FORWARD iifname "$IF_MAIN" oifname "$IF_TUNNEL" ct state related,established counter accept
nft add rule ip filter FORWARD oifname "$IF_MAIN" ip saddr $YOUR_OPENVPN_SUBNET counter accept
nft add rule ip nat POSTROUTING oifname "$IF_MAIN" ip saddr $YOUR_OPENVPN_SUBNET counter masquerad
出力は次のとおりです。
root@server:/home/user# nft add rule ip filter FORWARD iifname "$IF_MAIN" oifname "$IF_TUNNEL" ct state related,established counter accept
Error: Could not process rule: No such file or directory
add rule ip filter FORWARD iifname enp1s0 oifname tun0 ct state related,established counter accept
^^^^^^
3つのコマンドで同様のエラーが発生します。何か抜けましたか?チュートリアルから抜けた内容はありますか?
答え1
iptables-nft
Debian Wiki のガイドラインは、Debian 10 以降のデフォルトバージョン (またはパッケージに含まれるデフォルトスタブ) によって生成された互換性テーブルとチェーンの上に作成されたようです。/etc/nftables.conf
nftables
iptables
完全に空の構成で始まる場合は、nftables
ルールを追加する前にまずテーブルとチェーンを作成する必要があります。
IF_MAIN=eth0
IF_TUNNEL=tun0
YOUR_OPENVPN_SUBNET=10.9.8.0/24
# Create a rules table for IPv4, named "custom":
nft create table ip custom
# Create a forward filter chain with the standard priority and
# iptables-resembling name "FORWARD", into the "custom" table
# created above:
# (priority filter == priority 0, see "man nft")
nft add chain ip custom FORWARD { type filter hook forward priority filter\; }
# Create a NAT filter chain with the iptables-like name "POSTROUTING" too:
nft add chain ip custom POSTROUTING { type nat hook postrouting priority srcnat\; }
# now you can start adding your filter rules
nft add rule ip custom FORWARD iifname "$IF_MAIN" oifname "$IF_TUNNEL" ct state related,established counter accept
nft add rule ip custom FORWARD oifname "$IF_MAIN" ip saddr $YOUR_OPENVPN_SUBNET counter accept
nft add rule ip custom POSTROUTING oifname "$IF_MAIN" ip saddr $YOUR_OPENVPN_SUBNET counter masquerade
これにより、すべてのカスタムルールがという名前のテーブルに保存されますcustom
。後で独自のnftablesルールを生成する別のソフトウェアを追加すると、独自のテーブルを使用する可能性が高く、誤ってカスタムルールを削除する可能性がなくなります。他のテーブルのルールチェーンが合理的な順序で処理されるようにフック優先順位を確認し、必要に応じて調整します。
注:custom
ここFORWARD
にはPOSTROUTING
名前のみが記載されています。好きな名前に変更できます。その他すべての項目には特定の意味があります。
単一のコマンドですべてのカスタムルールをすぐに削除したり一時的に無効にしたりすることもできます。
nft add table ip custom { flags dormant; } # temporary disable
nft add table ip custom # re-enable
nft delete table ip custom # wipe custom rules completely
これは、ルールセットの問題を解決するのに役立ちます。
ルールを永続化するには、次の手順に従ってください。
nft list ruleset > /etc/nftables.conf # save the current rules
systemctl enable nftables.service # enable loading rules at boot
答え2
nftables
するいいえすべてのテーブルまたはルールはデフォルトで含まれており、手動で作成する必要があります。
ここのマニュアルに従ってください。