
次のように、LinuxでIPV6アドレスを使用してGREをヘッダーとして使用するトランスポートGUEトンネルを追加しようとしています。
ip -6 link add name gue1 type ip6gre remote $REMOTE_IPV6 local $LOCAL_IPV6 dev eth0 encap gue encap-dport 42424
$ REMOTE_IPV6と$LOCAL_IPV6はどちらも有効なIPV6アドレスです。しかし、引き続き次のエラーが発生します。
RTNETLINK answers: Invalid argument
削除すると、encap gue
カプセル化されていないタイプがデフォルト値なので、対応するエラーは発生しません。ただし、ヘルプテキストは、ip link help ip6gre
有効なカプセルタイプがあることを示唆しているようですencap { fou | gue | none }
。カプセルタイプが無効になる問題は何ですか?
答え1
簡単に言うと:
まずこれを実行してください:
modprobe fou6
詳しくは
Linuxカーネル5.10.xでテスト済み
2つの問題があります。 1つは設定の問題(エラーは発生しませんが、将来の正しい動作を妨げる可能性があります)で、もう1つはマイナーなバグであると仮定できます。
GUE受信ポートを最初に宣言する必要があるようです。
などのオンラインブログによるとLinux仮想インターフェースについて:トンネリング|:
# ip fou add port 5555 gue # ip link add name tun1 type ipip remote 192.168.1.1 local 192.168.1.2 ttl 225 encap gue encap-sport auto encap-dport 5555
これは、IPIPバインディングのGUE受信ポートを5555に設定し、GUEカプセル化用のIPIPトンネルを設定します。
したがって、受信ポートは最初にコマンドを使用して宣言する必要があり、
ip fou add port XXXX gue
ポートencap-dport XXXX
は2番目のコマンドセクションで再利用されます。最初のコマンドの説明については、次を参照してください。ip fou(8)
さらに制限を追加する必要がある場合。しかし、
ip fou add port 42424 gue
それも動作しません# ip fou add port 42424 gue RTNETLINK answers: No such file or directory Error talking to the kernel
これは私にとってバグのようです。カーネルモジュールは
fou
このコマンドを使用して自動的にロードされません。 GUEは、同じカーネルモジュールによって処理されるFOUの追加モードですfou
。# modprobe fou # ip fou add port 42424 gue # ip -6 link add name gue1 type ip6gre remote $REMOTE_IPV6 local $LOCAL_IPV6 dev eth0 encap gue encap-dport 42424 RTNETLINK answers: Invalid argument
fou6
IPv6部分にロードされたカーネルモジュールもありません...実際には、
-6
このオプションをコマンドに追加する必要がありますip fou
。それ以外の場合、ポートはIPv4ソケットで開きます。# modprobe fou6 # ip -6 fou add port 42424 gue # ip -6 link add name gue1 type ip6gre remote $REMOTE_IPV6 local $LOCAL_IPV6 dev eth0 encap gue encap-dport 42424 #