VPN к Kubernetes-кластеру из удаленной сети

Мне нужно построить VPN-соединение между сетью и Kubernetes-кластером, чтобы приложения, размещенные в этой сети, могли обращаться к K8S-сервисам через защищенный туннель.

Итак, у меня есть несколько узлов K8S в автономной среде. Я добавил в эту среду отдельный сервер, этот сервер работает как VPN-шлюз, он подключен к той же VLAN, к которой подключены узлы кластера. Узлы имеют следующие IP-адреса:10.13.17.1/22,10.13.17.2/22,10.13.17.3/22и так далее. VPN-шлюз имеет10.13.16.253/22.

IP CIDR кластера — , IP CIDR модуля —10.233.64.0/18.

VPN-сервер поддерживает межсайтовое соединение IPSec с удаленной сетью. Я использую Calico в качестве сетевого менеджера, поэтому настроил свой VPN-сервер для поддержания сеансов BGP со всеми узлами K8S. Таблица маршрутов VPN-сервера полна префиксов, объявленных узлами Calico (10.233.0.0/18конечно, тоже присутствует), узлы кластера имеют и некоторые другие сети в своих таблицах маршрутизации, поэтому BGP, похоже, работает нормально. Все идет нормально...

Когда я устанавливаю соединение с сервисом внутри кластера с VPN-сервера, тоже все хорошо. Клиент() отправляет SYN-пакет сервису (10.233.10.101:1337), воркер получает этот пакет, меняет его IP-адрес назначения на IP-адрес пода (10.233.103.49:1337) и меняет исходный IP-адрес на некоторый IP-адрес (10.233.110.0), который поможет работнику получить ответ и вернуть его инициатору соединения. Вот что происходит с работником, получившим этот SYN-пакет. SYN-пакет приходит работнику:

      22:04:25.866546 IP 10.13.16.253.56297 > 10.233.10.101.1337: Flags [S], seq 3575679444, win 65228, options [mss 1460,nop,wscale 7,sackOK,TS val 1385938010 ecr 0], length 0

Упакованный в SYN файл подвергается SNAT и DNAT, а затем отправляется рабочему процессу, где работает модуль:

      22:04:25.866656 IP 10.233.110.0.54430 > 10.233.103.49.1337: Flags [S], seq 3575679444, win 65228, options [mss 1460,nop,wscale 7,sackOK,TS val 1385938010 ecr 0], length 0

Пришёл ответ:

      22:04:25.867313 IP 10.233.103.49.1337 > 10.233.110.0.54430: Flags [S.], seq 2017844946, ack 3575679445, win 28960, options [mss 1460,sackOK,TS val 1201488363 ecr 1385938010,nop,wscale 7], length 0

Ответ деСНАТируется и деДНАТируется для отправки инициатору соединения:

      22:04:25.867533 IP 10.233.10.101.1337 > 10.13.16.253.56297: Flags [S.], seq 2017844946, ack 3575679445, win 28960, options [mss 1460,sackOK,TS val 1201488363 ecr 1385938010,nop,wscale 7], length 0

Итак, связь установлена ​​и все довольны.

Но когда я пытаюсь подключиться к тому же сервису из внешней сети (), работник, получающий SYN-пакет, НЕ меняет IP-адрес источника, он меняет только IP-адрес назначения, поэтому IP-адрес источника пакета без изменений. Пакет SYN приходит к работнику

      21:56:05.794171 IP 10.103.103.1.52132 > 10.233.10.101.1337: Flags [S], seq 3759345254, win 29200, options [mss 1460,sackOK,TS val 195801472 ecr 0,nop,wscale 7], length 0

Пакет SYN подвергается ДНК-тестированию и повторно отправляется работнику, на котором работает модуль.

      21:56:05.794242 IP 10.103.103.1.52132 > 10.233.103.49.1337: Flags [S], seq 3759345254, win 29200, options [mss 1460,sackOK,TS val 195801472 ecr 0,nop,wscale 7], length 0

И ничего не приходит в ответ. :-(

Итак, я вижу, что IP-адрес назначения изменен, поэтому я вижу эти пакеты на воркере, где работает под, но ответов на них нет:

      21:56:05.794602 IP 10.103.103.1.52132 > 10.233.103.49.1337: Flags [S], seq 3759345254, win 29200, options [mss 1460,sackOK,TS val 195801472 ecr 0,nop,wscale 7], length 0

Внешняя сеть (10.103.103.0/24) объявляется VPN-сервером через BGP, поэтому все рабочие знают, что эта сеть доступна через . Когда я запускаю пинг-тест с хоста во внешней сети() на IP-адрес сервиса(10.233.10.101), тест пройден, VPN работает нормально, и таблицы маршрутизации кажутся правильными.

Итак, почему сеть «доверяет» и не доверяет ? И почему воркер выполняет SNAT и DNAT для пакетов из10.13.16.253и не выполняет SNAT для пакетов из10.103.103.1? Должен ли я добавить какие-либо политики, чтобы разрешить этот трафик?

Заранее спасибо за любые подсказки!

0 ответов

Другие вопросы по тегам