Linux
如何使用 iproute2 為 IPv6 配置傳輸 GUE 隧道
我正在嘗試在 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 and $ LOCAL_IPV6 是有效的 IPV6 地址。但我不斷收到此錯誤:
RTNETLINK answers: Invalid argument
如果我刪除
encap gue
,那麼它不會給出該錯誤,因為它預設為無封裝類型。但是,來自的幫助文本ip link help ip6gre
似乎暗示有效的封裝類型是encap { fou | gue | none }
. 導致封裝類型在這裡無效的問題可能是什麼?
TL;博士:
首先執行這個:
modprobe fou6
更多細節
在 Linux 核心 5.10.x 上測試
有兩個問題,一個可能是配置問題(不會導致錯誤,但可能會阻止以後的正確操作),另一個我只能考慮一個小錯誤。
- 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
這將為綁定到 5555 的 IPIP 設置一個 GUE 接收埠,並為 GUE 封裝配置一個 IPIP 隧道。
因此,必須首先使用命令聲明接收埠,並將在第二個命令的部分
ip fou add port XXXX gue
重用它。encap-dport XXXX
第一個命令是在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 #