Calico Kubernetes the hard way v2 How tunl0 works
Материал из noname.com.ua
Как работает IP-in-IP
туннель в Calico
Это один из вариантов конфигурации Calico.
Эта статья появилась так-как настройка туннеля не очень-то очевидна.
Схема сети
- Показаны только 2 ноды, для простоты.
- 192.168.122.0/24 - физическая сеть
+----------------------------------------+ +----------------------------------------+ | Host: worker1 | | Host: worker2 | | +---------------------+ | | +---------------------+ | | | POD1 | | | | POD2 | | | | | | | | | | | | 10.244.235.132/32 | | | | 10.244.189.171/32 | | | +---eth0--------------+ | | +---eth0--------------+ | | | | | | | | | | | | | | caliXXXX | | caliYYYY | | На этом интерфейсе НЕТ ip адреса | | На этом интерфейсе НЕТ ip адреса | | | | | | [ tunl0 ] 10.244.235.136/32 | | [ tunl0 ] 10.244.189.71/32 | | | | | +--[ eth0 ]-----------------------------+ +--[ eth0 ]-----------------------------+ 192.168.122.2/24 192.168.122.3/24 | | +---------------------------------------------------------------+
Настройки интерфейса tunl0
Если не особо вдумываться, то в настройке интерфейса (одинаковом на всех нодах, с одинаковыми настройками) нет ничего необычного
ip -d link show dev tunl0
2: tunl0@NONE: <NOARP,UP,LOWER_UP> mtu 1480 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1000 link/ipip 0.0.0.0 brd 0.0.0.0 promiscuity 0 ipip remote any local any ttl inherit nopmtudisc addrgenmode eui64 numtxqueues 1 numrxqueues 1 gso_max_size 65536 gso_max_segs 65535
Однако, если смотреть внимательно то вызывает вопрос вот эта часть конфигурации
link/ipip 0.0.0.0 brd 0.0.0.0 promiscuity 0 ipip remote any local any <PRE> Поясню: обычно <code>ipip</code> туннели представляют собой соединения точка-точка, при этом в настройках туннеля указываются адреса концов туннеля.<br> Например классический туннель создается командой <PRE> ip tunnel add mytun mode ipip remote 251.4.92.217 local 240.101.83.2
IP адреса тут взяты "из головы" и приведены только для примера.
Соответственно, в настройках туннеля можно видеть "оба конца" туннеля.
3: mytun@NONE: <POINTOPOINT,NOARP> mtu 1480 qdisc noop state DOWN mode DEFAULT group default qlen 1000 link/ipip 240.101.83.2 peer 251.4.92.217 promiscuity 0 ipip remote 251.4.92.217 local 240.101.83.2 ttl inherit pmtudisc numtxqueues 1 numrxqueues 1 gso_max_size 65536 gso_max_segs 65535
Подчеркну, что это именно "транспортные" адреса, между которыми должна быть L3 связность, и это не те адреса которые настроены на интерфейсе mytun
Совершенно не понятно как работает туннель не имеющих определенных "концов" - что с чем связывает туннель с ipip remote any local any
Ссылки
- https://habr.com/ru/post/48276/
- https://lartc.vger.kernel.narkive.com/XgcjFTGM/aw-onlink-option-for-ip-route
- https://habr.com/ru/company/ruvds/blog/457386/
- https://habr.com/ru/post/48276/
- https://man7.org/linux/man-pages/man8/ip-link.8.html
- https://developers.redhat.com/blog/2019/05/17/an-introduction-to-linux-virtual-interfaces-tunnels#ip6gre_and_ip6gretap
- https://weril.me/ifconfig/
- https://www.oreilly.com/library/view/wireless-hacks/0596005598/ch04s13.html