web-dev-qa-db-ja.com

特定のIPv6アドレスに対するサーバー応答の遅延

IPv6アドレスで構成された3つのサーバーがあり、S1とS3などのいくつかのサーバーに遅延を追加したいと思います。 IPv4の場合、「tc」コマンドを使用していますが、正常に機能しています。

IPv4アドレスに使用するコマンド:

tc qdisc ls dev eth1 
tc qdisc add dev eth1 root handle 1: prio
tc qdisc add dev eth1 parent 1:1 handle 2: netem delay 1000ms
tc filter add dev eth1 parent 1:0 protocol ip pref 55 handle ::55 u32 match ip 
   src 20.1.1.1 flowid 2:1
 tc filter add dev eth1 parent 1:0 protocol ip pref 55 handle ::55 u32 match 
   ip src 20.1.1.3 flowid 2:1

同じポリシーをIpv6アドレスに追加したいと思います。どんな助けでもいただければ幸いです。前もって感謝します

1
alpha

これらのフィルターは発信パケットに適用され、送信元IPに一致します。また、同じハンドルを再利用するために最後の2つのtcコマンドが衝突するため、ルールが各サーバーに直接追加されるか、ハンドルが変更された場合はルーターに追加されることを理解しています。ハンドルが指定されないので、システムにそれらを選択させるという答えでは問題ではありません。

同等のIPv6ルールに切り替えるのは非常に簡単です。protocol ipprotocol ipv6に置き換えられ、match ipmatch ip6に置き換えられます。矛盾をありがとう!プロトコルを切り替えるときに同じ設定/プリオを使用することはできません。前の2つのポイントの参照: IPv6およびIPv4でのtcの使用 。必要に応じてハンドルを追加するだけです(同じ設定内で一意の:: nodeidを使用)。

したがって、2つの追加アドレス2001:db8::102001:db8::20に遅延を追加するには、質問の前のすべてのルールを保持し、これら2つのルールを追加します。

tc filter add dev eth1 parent 1:0 protocol ipv6 pref 56 u32 match ip6 src 2001:db8::10 flowid 2:1
tc filter add dev eth1 parent 1:0 protocol ipv6 pref 56 u32 match ip6 src 2001:db8::20 flowid 2:1

u32と呼ばれるフィルターは、実際には32ビットで動作していることを意味します。したがって、IPv6アドレスは128ビットを使用しているため、各ルールは実際には4つの一致を使用します。

1
A.B