nftables
(v0.9.6)を使ってファイアウォール+ NATを設定しています。このツールは、広範なルールの重複を防ぐためにコレクションとマッピングを提供します。
共通データ構造(セットまたはマップ)を使用してDNATおよびフィルタリング規則(配信)を構築したいと思います。
()しようとするとnft --check -f example.conf
常にエラーが発生します。これを行う方法を知っていますか?繰り返す必要はありませんNATは2つのデータ構造(マップとセット)にマッピングされますか?
以下は私が使用する例です(大文字のコメントを参照)。
これらは地図と設定:
table inet filter {
map mymap {
type inet_service : ipv4_addr
elements = {
12345 : 192.168.0.66,
4321 : 192.168.0.77
}
}
set myset {
type ipv4_addr . inet_service
elements = {
192.168.0.66 . 12345,
192.168.0.77 . 4321
}
}
これらはルール:
chain natprerouting {
type nat hook prerouting priority dstnat; # =-100
# ACCEPTED:
dnat ip to tcp dport map @mymap
# ERROR AT PARSING (unexpected string: @myset):
dnat ip addr . port to @myset
}
chain forward {
type filter hook forward priority filter; # =0
# ERROR AT PARSING (unexpected dport):
ip daddr tcp dport map @mymap accept
# ACCEPTED:
ip daddr . tcp dport @myset accept
}
}
dnat to
許容できる場合は動作します。置く。一つ変換できます。地図になる置く(あるいはその逆も)?どのような方法がありますか?
答え1
それぞれのDNATed結合を明示的に受け入れる必要はありません。前方鎖では、連結トレースのためにDNATが既に知られている。
ct status dnat accept
次のように使用してください。
table inet filter {
chain forward {
type filter hook forward priority filter; # =0
# THIS ONE AUTOMATICALLY ACCEPTS ALL OUR DNATed PACKETS
ct status dnat accept
}
}
一部のクレジットは次のとおりです。netfilterメーリングリストのトレントバック。