
Geneveプロトコルにtcフラワーフィルタを追加しようとすると、次のエラーが発生します。
% sudo tc filter add dev gnv0 protocol ip parent ffff: \
flower geneve_opts 0108:01:020000000000000000/FFFF:FF:FF0000000000000000,0108:02:020000000000000000/FFFF:FF:FF0000000000000000,0108:03:0100000000/FFFF:FF:FF00000000 \
action tunnel_key unset
RTNETLINK answers: No such file or directory
We have an error talking to the kernel
私はAmazon Linuxを使用しています。
% uname -a
Linux ip-10-0-40-230.ec2.internal 4.14.311-233.529.amzn2.x86_64 #1 SMP Thu Mar 23 09:54:12 UTC 2023 x86_64 x86_64 x86_64 GNU/Linux
トラフィックをミラーリングする AWS Gateway Load Balancer で GENEVE UDP トンネルを終了したいと思います。アイデアは、パケットを元の形式で解放することです。私もこれを試しましたが、vxlan_opts
成功しませんでした。したがって、質問はフィルタよりもtcに対してより具体的なようです。
オンラインで提案されたいくつかのカーネルモジュールをロードしました(必要なのか十分なのかわかりません)。
% lsmod | grep sch
sch_htb 24576 0
sch_netem 20480 0
sch_ingress 16384 1
完全な例:
sudo yum install tc
sudo modprobe sch_netem
sudo modprobe sch_htb
sudo ip link add name gnv0 type geneve dstport 6081 external
sudo ip link set gnv0 up
sudo tc qdisc add dev gnv0 ingress
sudo tc filter add dev gnv0 protocol ip parent ffff: \
flower geneve_opts 0108:01:020000000000000000/FFFF:FF:FF0000000000000000,0108:02:020000000000000000/FFFF:FF:FF0000000000000000,0108:03:0100000000/FFFF:FF:FF00000000 \
action tunnel_key unset
AL2023で試してみましたが、同様のエラーが発生しました。
sudo ip link add name gnv0 type geneve dstport 6081 external
sudo ip link set gnv0 up
sudo tc qdisc add dev gnv0 ingress
sudo tc filter add dev gnv0 protocol ip parent ffff: \
flower geneve_opts 0108:01:020000000000000000/FFFF:FF:FF0000000000000000,0108:02:020000000000000000/FFFF:FF:FF0000000000000000,0108:03:0100000000/FFFF:FF:FF00000000 \
action tunnel_key unset
Error: Failed to load TC action module.
We have an error talking to the kernel