Kubernetes: проблемы с VPN-сервером и DNS

Я центрифугировали в docker-openvpn контейнер в мои (местные) Kubernetes кластер для безопасного доступа к моим службам и отладки зависимые службы локально.

Я могу подключиться к кластеру с помощью сервис OpenVPN сервер. Однако я не могу решить мой услуги via DNS.

мне удалось добраться до точки, где после установки маршрутов на VPN-сервере:

  • I может пинг Pod по IP (subnet 10.2.0.0/16)
  • я могу пинговать сервис по IP (subnet 10.3.0.0/16 как DNS, который находится в 10.3.0.10)
  • я могу curl до услуги по IP и получить данные, которые мне нужны.

но, когда я nslookup kubernetes и сервис, я:

nslookup kubernetes
;; Got recursion not available from 10.3.0.10, trying next server
;; Got SERVFAIL reply from 10.3.0.10, trying next server

мне все еще не хватает чего-то для возврата данных с DNS-сервера, но не могу понять, что мне нужно делать.

как отладить это SERVFAIL вопрос ДНС Kubernetes?

EDIT:

вещи, которые я заметил и хочу понять:

  • nslookup работает для разрешения имени службы в любом pod, кроме OpenVPN Pod
  • пока nslookup работает в других коробочках, ping нет.
  • аналогично traceroute в тех других стручках ведет к слой фланели 10.0.2.2 и на этом останавливается.

из этого я предполагаю, что ICMP должен быть заблокирован на уровне фланели, и это не помогает мне понять, где заблокирован DNS.

EDIT2:

Я, наконец, понял, как заставить nslookup работать: мне пришлось нажать домен поиска DNS клиенту с

push "dhcp-option DOMAIN-SEARCH cluster.local"
push "dhcp-option DOMAIN-SEARCH svc.cluster.local"
push "dhcp-option DOMAIN-SEARCH default.svc.cluster.local"

добавить на docker-openvpn изображения

так что я в конечном итоге с

docker run -v /etc/openvpn:/etc/openvpn --rm kylemanna/openvpn ovpn_genconfig 
-u udp://192.168.10.152:1194 
-n 10.3.0.10 
-n 192.168.10.1 
-n 8.8.8.8 
-n 75.75.75.75 
-n 75.75.75.76 
-s 10.8.0.0/24 
-d 
-p "route 10.2.0.0 255.255.0.0" 
-p "route 10.3.0.0 255.255.0.0" 
-p "dhcp-option DOMAIN cluster.local" 
-p "dhcp-option DOMAIN-SEARCH svc.cluster.local" 
-p "dhcp-option DOMAIN-SEARCH default.svc.cluster.local" 

теперь nslookup работает, а curl до сих пор не

2 ответов


наконец, моя конфигурация выглядит так:

docker run -v /etc/openvpn:/etc/openvpn --rm kylemanna/openvpn ovpn_genconfig \
-u udp://192.168.10.152:1194 \
-n 10.3.0.10 \
-n 192.168.10.1 \
-n 8.8.8.8 \
-n 75.75.75.75 \
-n 75.75.75.76 \
-s 10.8.0.0/24 \
-N \
-p "route 10.2.0.0 255.255.0.0" \
-p "route 10.3.0.0 255.255.0.0" \
-p "dhcp-option DOMAIN-SEARCH cluster.local" \
-p "dhcp-option DOMAIN-SEARCH svc.cluster.local" \
-p "dhcp-option DOMAIN-SEARCH default.svc.cluster.local"

-u для адреса и порта VPN-сервера

-n для всех DNS-серверов для использования

-s определить подсеть VPN (по умолчанию 10.2.0.0, которая уже используется Kubernetes)

-d чтобы отключить NAT

-p для нажатия опций на клиент

-N чтобы включить NAT: это кажется критическим для этой установки на Kubernetes

в последняя часть, подталкивая Домены поиска к клиенту, была ключом к получению nslookup etc.. работать.

обратите внимание, что curl сначала не работал, но, похоже, начинает работать через несколько секунд. Таким образом, это работает, но для того, чтобы curl смог решить, требуется немного времени.


попробуйте curl -4. Возможно, это решение для AAAA, даже если A присутствует.