[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: Kubernetes, virtuelle Netzwerke und ein DNS Problem (vmtl. Iptables)



Hallo Klaus,

danke für deine Antwort. Ich habe noch ein wenig weiter getestet, aktuell mit 
flannel als Pod-Netzwerk (nun auf 10.244.0.0 statt 10.255.0.0), aber immer 
noch ohne Erfolg. Das Service-Netzwerk blieb auf 10.96.0.0.

Am Dienstag, 24. Dezember 2019, 15:27:11 CET schrieb Klaus Fuerstberger:
> Am 10.12.19 um 08:56 schrieb Jan Kohnert:
> > root@debian-vm:~# nslookup google.de 10.96.0.10
> > ;; connection timed out; no servers could be reached
> > 
> > root@debian-vm:~# telnet 10.96.0.10 22
> > Trying 10.96.0.10...
> > telnet: Unable to connect to remote host: Connection refused
> 
> Das heißt, daß die Verbindung erstmal klappt, der Host ist erreichbar,
> aber nicht auf Port 22. 

Soweit klar, es waren auch nur Beispiele. Der Service-Pod unter der IP hat nur 
einen DNS-Server, daher "connection refused"

> > root@debian-vm:~# telnet 10.96.0.10 53
> > Trying 10.96.0.10...
> > telnet: Unable to connect to remote host: No route to host
> 
> Du versuchst mit telnet einen TCP connect auf einen DNS daemon, welcher
> auf Port 53 UDP lauscht. Das kann nicht klappen und deshalb "No route to
> host"

Das ist mir eben nicht so klar. Der DNS lauscht auch auf TCP Port 53 (auch 
wenn die Anfragen selbst natürlich über UDP gehen), so dass ein telnet zur 
Prüfung eigentlich gehen müsste. Auf dem Master (Gentoo) sieht es so aus:

master ~ # telnet 10.96.0.10 53
Trying 10.96.0.10...
Connected to 10.96.0.10.
Escape character is '^]'.
Connection closed by foreign host.
master ~ # 

Mir ging es hier darum, dass offensichtlich irgendetwas die Pakete DROPt, was 
das "no route to host" erklären würde. Vermutlich sind es die Iptables-Regeln, 
die libvirt einführt, um das Networking für den Gast zu machen. Insgesamt sind 
es schon ziemlich viele Ebenen: Der Host mit Verbindung nach draußen, KVM/
LibVirt mit dem Gast und dem Gastnetzwerk (192.168.122.0), auf allen beiden 
noch Docker mit dem jeweiligen Docker-Netz (172.17.0.0) und schließlich 
Kubernetes obendrauf mit Service (10.96.0.0) und Pod (10.244.0.0) Netz. 

> > root@debian-vm:~# telnet 10.96.0.10 80
> > Trying 10.96.0.10...
> > telnet: Unable to connect to remote host: Connection refused
> 
> Ebenso wie oben bei SSH könnte hier, der Webserver, falls einer läuft
> eine Einschränkung auf das Service Netzwerk 10.96.0.0/12 haben?

Ebenso wie oben nur ein Beispiel, um den Unterschied deutlich zu machen. Das 
Problem der Sache ist, das die Kubernetes-Sachen komplett in Docker-Containern 
laufen. Ich komme da zwar mittels docker exec rein, habe aber nur die 
Kommandos, die in den Containern verfügbar sind. Im coredns-Container sind 
weder iptables noch eine Shell verfügbar. Der machen also definitiv keine 
eigenen Regeln. Allerdings gibt es noch die Docker-Iptables Regeln. Die sehen 
auf Master und Worker, soweit ich das beurteilen kann, identisch aus.

Iptables-Regeln:

Auf der VM:
root@debian-vm:~# iptables -nvL
Chain INPUT (policy ACCEPT 59 packets, 18952 bytes)
 pkts bytes target     prot opt in     out     source               
destination         
 1280 94921 KUBE-SERVICES  all  --  *      *       0.0.0.0/0            
0.0.0.0/0            ctstate NEW /* kubernetes service portals */
 1280 94921 KUBE-EXTERNAL-SERVICES  all  --  *      *       0.0.0.0/0            
0.0.0.0/0            ctstate NEW /* kubernetes externally-visible service 
portals */
3338K 1997M KUBE-FIREWALL  all  --  *      *       0.0.0.0/0            
0.0.0.0/0           

Chain FORWARD (policy DROP 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               
destination         
   48  2984 KUBE-FORWARD  all  --  *      *       0.0.0.0/0            
0.0.0.0/0            /* kubernetes forwarding rules */
   48  2984 KUBE-SERVICES  all  --  *      *       0.0.0.0/0            
0.0.0.0/0            ctstate NEW /* kubernetes service portals */
   48  2984 DOCKER-USER  all  --  *      *       0.0.0.0/0            
0.0.0.0/0           
   48  2984 DOCKER-ISOLATION-STAGE-1  all  --  *      *       0.0.0.0/0            
0.0.0.0/0           
    0     0 ACCEPT     all  --  *      docker0  0.0.0.0/0            0.0.0.0/0            
ctstate RELATED,ESTABLISHED
   48  2984 DOCKER     all  --  *      docker0  0.0.0.0/0            0.0.0.0/0           
    0     0 ACCEPT     all  --  docker0 !docker0  0.0.0.0/0            
0.0.0.0/0           
    0     0 ACCEPT     all  --  docker0 docker0  0.0.0.0/0            
0.0.0.0/0           
   48  2984 ACCEPT     all  --  *      *       10.244.0.0/16        0.0.0.0/0           
    0     0 ACCEPT     all  --  *      *       0.0.0.0/0            
10.244.0.0/16       

Chain OUTPUT (policy ACCEPT 49 packets, 4164 bytes)
 pkts bytes target     prot opt in     out     source               
destination         
64421 4129K KUBE-SERVICES  all  --  *      *       0.0.0.0/0            
0.0.0.0/0            ctstate NEW /* kubernetes service portals */
3495K  312M KUBE-FIREWALL  all  --  *      *       0.0.0.0/0            
0.0.0.0/0           

Chain DOCKER (1 references)
 pkts bytes target     prot opt in     out     source               
destination         

Chain DOCKER-ISOLATION-STAGE-1 (1 references)
 pkts bytes target     prot opt in     out     source               
destination         
    0     0 DOCKER-ISOLATION-STAGE-2  all  --  docker0 !docker0  0.0.0.0/0            
0.0.0.0/0           
   48  2984 RETURN     all  --  *      *       0.0.0.0/0            0.0.0.0/0           

Chain DOCKER-ISOLATION-STAGE-2 (1 references)
 pkts bytes target     prot opt in     out     source               
destination         
    0     0 DROP       all  --  *      docker0  0.0.0.0/0            0.0.0.0/0           
    0     0 RETURN     all  --  *      *       0.0.0.0/0            0.0.0.0/0           

Chain DOCKER-USER (1 references)
 pkts bytes target     prot opt in     out     source               
destination         
   48  2984 RETURN     all  --  *      *       0.0.0.0/0            0.0.0.0/0           

Chain KUBE-EXTERNAL-SERVICES (1 references)
 pkts bytes target     prot opt in     out     source               
destination         

Chain KUBE-FIREWALL (2 references)
 pkts bytes target     prot opt in     out     source               
destination         
    0     0 DROP       all  --  *      *       0.0.0.0/0            0.0.0.0/0            
/* kubernetes firewall for dropping marked packets */ mark match 0x8000/0x8000

Chain KUBE-FORWARD (1 references)
 pkts bytes target     prot opt in     out     source               
destination         
    0     0 DROP       all  --  *      *       0.0.0.0/0            0.0.0.0/0            
ctstate INVALID
    0     0 ACCEPT     all  --  *      *       0.0.0.0/0            0.0.0.0/0            
/* kubernetes forwarding rules */ mark match 0x4000/0x4000
    0     0 ACCEPT     all  --  *      *       10.244.0.0/16        0.0.0.0/0            
/* kubernetes forwarding conntrack pod source rule */ ctstate 
RELATED,ESTABLISHED
    0     0 ACCEPT     all  --  *      *       0.0.0.0/0            
10.244.0.0/16        /* kubernetes forwarding conntrack pod destination rule 
*/ ctstate RELATED,ESTABLISHED

Chain KUBE-KUBELET-CANARY (0 references)
 pkts bytes target     prot opt in     out     source               
destination         

Chain KUBE-SERVICES (3 references)
 pkts bytes target     prot opt in     out     source               
destination         
root@debian-vm:~#

Auf dem Master:
master ~ # iptables -nvL
Chain INPUT (policy ACCEPT 1578 packets, 264K bytes)
 pkts bytes target     prot opt in     out     source               
destination         
 975K   74M KUBE-SERVICES  all  --  *      *       0.0.0.0/0            
0.0.0.0/0            ctstate NEW /* kubernetes service portals */
 975K   74M KUBE-EXTERNAL-SERVICES  all  --  *      *       0.0.0.0/0            
0.0.0.0/0            ctstate NEW /* kubernetes externally-visible service 
portals */
 117M   20G KUBE-FIREWALL  all  --  *      *       0.0.0.0/0            
0.0.0.0/0           
 117M   20G LIBVIRT_INP  all  --  *      *       0.0.0.0/0            
0.0.0.0/0           
 107K 9337K f2b-sshd   tcp  --  *      *       0.0.0.0/0            0.0.0.0/0            
multiport dports 22

Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               
destination         
 1148  170K DOCKER-USER  all  --  *      *       0.0.0.0/0            
0.0.0.0/0           
 1148  170K DOCKER-INGRESS  all  --  *      *       0.0.0.0/0            
0.0.0.0/0           
  116  8816 DOCKER-ISOLATION-STAGE-1  all  --  *      *       0.0.0.0/0            
0.0.0.0/0           
    0     0 ACCEPT     all  --  *      docker_gwbridge  0.0.0.0/0            
0.0.0.0/0            ctstate RELATED,ESTABLISHED
    0     0 DOCKER     all  --  *      docker_gwbridge  0.0.0.0/0            
0.0.0.0/0           
    0     0 ACCEPT     all  --  docker_gwbridge !docker_gwbridge  0.0.0.0/0            
0.0.0.0/0           
91822   62M KUBE-FORWARD  all  --  *      *       0.0.0.0/0            
0.0.0.0/0            /* kubernetes forwarding rules */
53274 3206K KUBE-SERVICES  all  --  *      *       0.0.0.0/0            
0.0.0.0/0            ctstate NEW /* kubernetes service portals */
91830   62M LIBVIRT_FWX  all  --  *      *       0.0.0.0/0            
0.0.0.0/0           
91830   62M LIBVIRT_FWI  all  --  *      *       0.0.0.0/0            
0.0.0.0/0           
57037 3433K LIBVIRT_FWO  all  --  *      *       0.0.0.0/0            
0.0.0.0/0           
   44  3997 ACCEPT     all  --  *      docker0  0.0.0.0/0            0.0.0.0/0            
ctstate RELATED,ESTABLISHED
    0     0 DOCKER     all  --  *      docker0  0.0.0.0/0            0.0.0.0/0           
   50  3391 ACCEPT     all  --  docker0 !docker0  0.0.0.0/0            
0.0.0.0/0           
    0     0 ACCEPT     all  --  docker0 docker0  0.0.0.0/0            
0.0.0.0/0           
    0     0 ACCEPT     all  --  *      *       10.244.0.0/16        0.0.0.0/0           
    0     0 ACCEPT     all  --  *      *       0.0.0.0/0            
10.244.0.0/16       
    0     0 DROP       all  --  docker_gwbridge docker_gwbridge  0.0.0.0/0            
0.0.0.0/0           

Chain OUTPUT (policy ACCEPT 1567 packets, 294K bytes)
 pkts bytes target     prot opt in     out     source               
destination         
1075K   65M KUBE-SERVICES  all  --  *      *       0.0.0.0/0            
0.0.0.0/0            ctstate NEW /* kubernetes service portals */
 117M   22G KUBE-FIREWALL  all  --  *      *       0.0.0.0/0            
0.0.0.0/0           
 117M   22G LIBVIRT_OUT  all  --  *      *       0.0.0.0/0            
0.0.0.0/0           

Chain DOCKER (2 references)
 pkts bytes target     prot opt in     out     source               
destination         

Chain DOCKER-INGRESS (1 references)
 pkts bytes target     prot opt in     out     source               
destination         
  626 54028 ACCEPT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0            
tcp dpt:4443
  382  104K ACCEPT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0            
state RELATED,ESTABLISHED tcp spt:4443
  116  8816 RETURN     all  --  *      *       0.0.0.0/0            0.0.0.0/0           

Chain DOCKER-ISOLATION-STAGE-1 (1 references)
 pkts bytes target     prot opt in     out     source               
destination         
    0     0 DOCKER-ISOLATION-STAGE-2  all  --  docker_gwbridge !
docker_gwbridge  0.0.0.0/0            0.0.0.0/0           
   50  3391 DOCKER-ISOLATION-STAGE-2  all  --  docker0 !docker0  0.0.0.0/0            
0.0.0.0/0           
  210 16204 RETURN     all  --  *      *       0.0.0.0/0            0.0.0.0/0           

Chain DOCKER-ISOLATION-STAGE-2 (2 references)
 pkts bytes target     prot opt in     out     source               
destination         
    0     0 DROP       all  --  *      docker_gwbridge  0.0.0.0/0            
0.0.0.0/0           
    0     0 DROP       all  --  *      docker0  0.0.0.0/0            0.0.0.0/0           
   50  3391 RETURN     all  --  *      *       0.0.0.0/0            0.0.0.0/0           

Chain DOCKER-USER (1 references)
 pkts bytes target     prot opt in     out     source               
destination         
 1242  178K RETURN     all  --  *      *       0.0.0.0/0            0.0.0.0/0           

Chain KUBE-EXTERNAL-SERVICES (1 references)
 pkts bytes target     prot opt in     out     source               
destination         

Chain KUBE-FIREWALL (2 references)
 pkts bytes target     prot opt in     out     source               
destination         
    0     0 DROP       all  --  *      *       0.0.0.0/0            0.0.0.0/0            
/* kubernetes firewall for dropping marked packets */ mark match 0x8000/0x8000

Chain KUBE-FORWARD (1 references)
 pkts bytes target     prot opt in     out     source               
destination         
    0     0 DROP       all  --  *      *       0.0.0.0/0            0.0.0.0/0            
ctstate INVALID
    0     0 ACCEPT     all  --  *      *       0.0.0.0/0            0.0.0.0/0            
/* kubernetes forwarding rules */ mark match 0x4000/0x4000
    0     0 ACCEPT     all  --  *      *       10.244.0.0/16        0.0.0.0/0            
/* kubernetes forwarding conntrack pod source rule */ ctstate 
RELATED,ESTABLISHED
    0     0 ACCEPT     all  --  *      *       0.0.0.0/0            
10.244.0.0/16        /* kubernetes forwarding conntrack pod destination rule 
*/ ctstate RELATED,ESTABLISHED

Chain KUBE-SERVICES (3 references)
 pkts bytes target     prot opt in     out     source               
destination         

Chain LIBVIRT_FWI (1 references)
 pkts bytes target     prot opt in     out     source               
destination         
34793   59M ACCEPT     all  --  *      virbr0  0.0.0.0/0            
192.168.122.0/24     ctstate RELATED,ESTABLISHED
    0     0 REJECT     all  --  *      virbr0  0.0.0.0/0            0.0.0.0/0            
reject-with icmp-port-unreachable

Chain LIBVIRT_FWO (1 references)
 pkts bytes target     prot opt in     out     source               
destination         
56943 3426K ACCEPT     all  --  virbr0 *       192.168.122.0/24     0.0.0.0/0           
    0     0 REJECT     all  --  virbr0 *       0.0.0.0/0            0.0.0.0/0            
reject-with icmp-port-unreachable

Chain LIBVIRT_FWX (1 references)
 pkts bytes target     prot opt in     out     source               
destination         
    0     0 ACCEPT     all  --  virbr0 virbr0  0.0.0.0/0            0.0.0.0/0           

Chain LIBVIRT_INP (1 references)
 pkts bytes target     prot opt in     out     source               
destination         
  220 18217 ACCEPT     udp  --  virbr0 *       0.0.0.0/0            0.0.0.0/0            
udp dpt:53
    0     0 ACCEPT     tcp  --  virbr0 *       0.0.0.0/0            0.0.0.0/0            
tcp dpt:53
  862  283K ACCEPT     udp  --  virbr0 *       0.0.0.0/0            0.0.0.0/0            
udp dpt:67
    0     0 ACCEPT     tcp  --  virbr0 *       0.0.0.0/0            0.0.0.0/0            
tcp dpt:67

Chain LIBVIRT_OUT (1 references)
 pkts bytes target     prot opt in     out     source               
destination         
  862  285K ACCEPT     udp  --  *      virbr0  0.0.0.0/0            0.0.0.0/0            
udp dpt:68

Chain f2b-sshd (1 references)
[...] --> der Übersichtlichkeit halber habe ich die geblockten Scriptkiddies 
weggelassen

-- 
Mit freundlichen Grüßen

Jan Kohnert

Attachment: smime.p7s
Description: S/MIME cryptographic signature


Reply to: