サーバーからLXCコンテナーにトラフィックを転送するためのnftables-ruleを構成しようとしていますが、dport
のsaltstatesモジュールが指定された値をレンダリングする方法がnftablesで受け入れられません。どうすればよいですか?
塩の構成:
kevin-container-web-port-http:
nftables.append:
- family: ip
- table: nat
- chain: PREROUTING
- priority: 100
- iif: eth0
- dport: '80, 443'
- proto: tcp
- to: '10.0.3.32'
- jump: dnat
state.apply
からの出力:
ID: kevin-container-web-port-http
Function: nftables.append
Result: False
Comment: Failed to set nftables rule for kevin-container-web-port-http.
Attempted rule was tcp dport { 80, 443 } dnat for ip.
Failed to add rule "tcp dport { 80, 443 } dnat" chain PREROUTING in table nat in family ip.
Started: 17:36:42.821866
Duration: 154.261 ms
Changes:
ルールを手動で追加しようとする場合:
$ nft add rule nat prerouting iif eth0 tcp dport 80 dnat 10.0.3.32
$ nft list table nat
table ip nat {
chain PREROUTING {
type nat hook prerouting priority -100; policy accept;
iif "eth0" tcp dport { http, https } dnat to 10.0.3.32
}
...
}
Nftablesのマニュアルページをよく読んだ後、jump引数にtoフィールドを追加してみることにしました。構成は、次のセットアップで機能します。
kevin-container-web-port-http:
nftables.append:
- family: ip
- table: nat
- chain: PREROUTING
- iif: eth0
- dport: 80
- proto: tcp
- jump: dnat to 10.0.3.32:80