libvirt nwfilter、複数のパラメータ

libvirt nwfilter、複数のパラメータ

「parameter」キーワードを使用して、複数のパラメーターを「filterref」に渡すことができます。このように:

<filterref filter='no-ip-spoofing'>
   <parameter name='IP' value='10.0.0.1'/>
   <parameter name='IP' value='10.0.0.2'/>
</filterref>

そして、「rule」ステートメント内で「no-ip-spoofing」と一緒に使用してください。

<rule action='return' direction='out' priority='500'>
  <ip srcipaddr='$IP'/>
</rule>

「ルール」ステートメント各IP(10.0.0.1、10.0.0.2)は独立して処理されます。

Q:しかし、パラメータを複雑な構造に渡すことは可能ですか?
たとえば、IPを「no-ip-spoofing」に送信したいだけでなく、MASKも「no-ip-spoofing」に送信したいと思います。次のようなものです(もちろん、次のリストは正しいxml構造ではありません)。

<filterref filter='no-ip-spoofing'>
   <parameter name='IP' value='10.0.0.1', name='MASK' value='255.255.255.0'/>
   <parameter name='IP' value='10.0.0.2', name='MASK' value='255.255.255.0'/>
</filterref>

次のように処理します。

<rule action='return' direction='out' priority='500'>
  <ip srcipaddr='$IP' srcipmask='$MASK'/>
</rule>

どうすればいいですか?

答え1

これをRTFMと考えないでください。しかし、文書はそのような目的にぴったりです(https://libvirt.org/formatnwfilter.html#usage-of-variables-in-filters)。 2つのパラメータ配列と1つのイテレータを使用するだけで十分です。

Accessing the same variables using a single iterator, for example by
using the notation $SRCIPADDRESSES[@1] and $DSTPORTS[@1], would result
in parallel access to both lists and result in the following combinations:

ただし、フィルタにパラメータを渡すことについてまだ頭を傷つけているので、これらのパラメータを提供する方法はわかりません。このトピックに関するご意見をいただきありがとうございます。

注:同じ章では、各パラメータに対して別々のイテレータを使用してパラメータ行列を取得することが可能であることを示しました。

編集する: パラメータ配列は、質問の上部に示すようにストリーム形式で提供する必要があります。 2つのアレイの場合は、2つの別々のストリームを提供できます。

<filterref filter='no-ip-spoofing'>
   <!-- Array of IP values -->
   <parameter name='IP' value='10.0.0.1'/>
   <parameter name='IP' value='10.0.0.2'/>
   <!-- Array of MASK values -->
   <parameter name='MASK' value='255.255.255.0'/>
   <parameter name='MASK' value='255.255.255.0'/>
</filterref>

これで、ルールを並列(単一ループ)で繰り返すように変更する必要があります。

<rule action='return' direction='out' priority='500'>
  <ip srcipaddr='$IP[@1]' srcipmask='$MASK[@1]'/>
</rule>

[自己プロモーション] nwfiltersに多少関連する紹介チュートリアルを投稿しました。https://blog.cbugk.com/post/kvm-guest-network-isolation/

関連情報