Может кто-нибудь объяснить разницу между linux ip tunnel и командой ip link, когда дело доходит до настройки туннелей (таких как GRE, IPIP или VXLAN)?
Я вижу, что я могу настроить туннель GRE, например, двумя способами:
Есть ли разница между ними, когда дело касается создаваемых ресурсов Linux, производительности и т. Д.? Один из способов старомодности?
Ура.
Обе команды iproute2 взаимодействуют с одним и тем же ядром, они не реализуют ничего, кроме этой связи, что фактически означает, что вы не должны ожидать никакой разницы с точки зрения производительности.
Как видно из соответствующий коммит ip link
использует более свежий интерфейс ядра - rtnl_link
, по сравнению с ip tunnel
: "…
Доступ к нему осуществляется с помощью команды "ip link". Предыдущий интерфейс конфигурации туннеля «ip tunnel» остается без изменений и должен быть сохранен для совместимости со старыми ядрами. …
… »
(Извините за то, что набираете ответ вместо того, что должно быть комментарием, комментарий будет слишком длинным, чтобы уместиться ...)
Некоторое время назад у меня был точно такой же вопрос, как и у вас, поэтому я прочитал исходный код iproute2
. Как говорит Поиге, ip link
использует другой интерфейс, чем ip tunnel
. ip tunnel
использует ioctl SIOCGETTUNNEL
, SIOCADDTUNNEL
и т. д., а ip link
использует rtnl_link
интерфейс.
Это немного меняет режим интерфейса:
$ sudo ip tunnel add ipiptun mode ipip local 10.3.3.3 remote 10.4.4.4 ttl 64 dev eno1
$ sudo ip link add ipiptun2 type ipip local 10.6.6.6 remote 10.7.7.7 ttl 64 dev eno1 #curiously the mode is any/ip here
ipiptun: ip/ip remote 10.4.4.4 local 10.3.3.3 dev eno1 ttl 64
ipiptun2: any/ip remote 10.7.7.7 local 10.6.6.6 dev eno1 ttl 64
Обратите внимание, что теперь есть еще более новый способ создания туннеля, который заключается в использовании облегченных туннелей маршрута. Cf мой вопрос здесь, пытаясь понять их: Облегченные туннели Linux