web-dev-qa-db-ja.com

nftablesの事前ルーティングのソルト構成

サーバーから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
    }

    ...

}
1
jbakker

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
1
jbakker