Impossible d'obtenir l'adresse IP correcte du conteneur à l'aide de traefik

touste

Lorsque vous utilisez Traefik et Docker-compose, j'aimerais que l'adresse IP du conteneur effectue un filtrage basé sur IP, mais à la place, je souhaite obtenir l'adresse IP de la passerelle réseau docker.

Voici les résultats d'une requête curl du conteneur curl-client:

docker-compose exec curl-client curl https://whoami.domain.name

Hostname: 608f3dcaf7d9
IP: 127.0.0.1
IP: 172.18.0.2
GET / HTTP/1.1
Host: whoami.domain.name
User-Agent: curl/7.58.0
Accept: */*
Accept-Encoding: gzip
X-Forwarded-For: 172.18.0.1
X-Forwarded-Host: whoami.domain.name
X-Forwarded-Port: 443
X-Forwarded-Proto: https
X-Forwarded-Server: 88756553599b
X-Real-Ip: 172.18.0.1    

Ici, 172.18.0.1 est la passerelle pour le réseau traefik_net. Au lieu de cela, je m'attendrais à voir 172.18.0.9 dans le champ X-Forwarded-For, car il s'agit de l'adresse IP du conteneur curl-client:

docker-compose exec curl-client cat /etc/hosts

172.18.0.9      34f7b6e5472f

J'ai également essayé d'utiliser l'option 'traefik.frontend.whiteList.useXForwardedFor = true' sans succès.

traefik.toml

logLevel = "ERROR"

defaultEntryPoints = ["http", "https"]

[entryPoints]
  [entryPoints.dashboard]
    address = ":8080"
  [entryPoints.http]
    address = ":80"
    [entryPoints.http.redirect]
      entryPoint = "https"
  [entryPoints.https]
    address = ":443"
    [entryPoints.https.tls]

[api]
entrypoint="dashboard"

[acme]
email = "[email protected]"
storage = "acme.json"
entryPoint = "https"
  [acme.dnsChallenge]
  provider = "ovh"
  delayBeforeCheck = 0

[[acme.domains]]
  main = "*.domain.name"

[docker]
domain = "domain.name"
watch = true
network = "traefik_net"

docker-compose.yml

version: '3'

services:

  traefik_proxy:
    image: traefik:alpine
    container_name: traefik
    networks:
      - traefik_net
    ports:
      - 80:80
      - 443:443
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock
      - ./traefik.toml:/traefik.toml
      - ./acme.json:/acme.json
    restart: unless-stopped
    environment:
      - OVH_ENDPOINT=ovh-eu
      - OVH_APPLICATION_KEY=secretsecret
      - OVH_APPLICATION_SECRET=secretsecret
      - OVH_CONSUMER_KEY=secretsecret
    labels:
      - 'traefik.frontend.rule=Host:traefik.domain.name'
      - 'traefik.port=8080'
      - 'traefik.backend=traefik'


  whoami:
    image: containous/whoami
    container_name: whoami
    networks:
      - traefik_net
    labels:
      - 'traefik.frontend.rule=Host:whoami.domain.name'


  curl-client:
    image: ubuntu
    networks:
      - traefik_net
    command: sleep infinity



networks:
  traefik_net:
    external: true

Edit: Le nom de domaine est résolu en utilisant le dnsmasq.conf suivant:

domain-needed
expand-hosts
bogus-priv

interface=eno1
domain=domain.name
cache-size=1024
listen-address=127.0.0.1
bind-interfaces

dhcp-range=10.0.10.10,10.0.10.100,24h
dhcp-option=3,10.0.10.1

dhcp-authoritative

server=208.67.222.222
server=208.67.220.220

address=/domain.name/10.0.10.3
touste

Après quelques recherches, il semble que Traefik ne soit pas le problème ici, l'impossibilité d'accéder à l'IP du conteneur est due à la façon dont Docker gère son réseau interne (voir les commentaires suivants: https://github.com/containous/traefik/issues/ 4352 et https://github.com/docker/for-mac/issues/180 ).

J'ai pu atteindre mon objectif de liste blanche des connexions internes en exécutant mon conteneur openvpn en mode nework_host, de cette façon, le client se voit attribuer une adresse IP directement par le système.

Cet article est collecté sur Internet, veuillez indiquer la source lors de la réimpression.

En cas d'infraction, veuillez [email protected] Supprimer.

modifier le
0

laisse moi dire quelques mots

0commentaires
connexionAprès avoir participé à la revue

Articles connexes

Impossible d'obtenir l'adresse IP de la machine VirtualBox à l'aide de l'API VBox

Comment obtenir l'adresse IP du conteneur Docker à l'aide du SDK Docker pour Python?

Impossible d'obtenir une sortie correcte du fichier tsv à l'aide de pandas

Pourquoi Traefik découvre l'adresse IP du conteneur sur le réseau backend?

Obtenir l'adresse IP de la passerelle d'entrée à l'aide du client Python Kubernetes

Impossible de créer un conteneur Docker sur le réseau de superposition à l'aide d'une adresse IP statique

Comment obtenir le nom du service Kubernetes au lieu de l'adresse IP du pod 'Traefik'

Impossible d'obtenir l'adresse IP correcte de l'homologue lors de l'acceptation de la connexion socket TCP sur localhost en Python

Impossible d'accéder à l'adresse IP du réseau local à partir du conteneur Docker

Obtenir l'adresse IP de l'hôte à partir du conteneur Docker

existe-t-il un moyen d'obtenir l'adresse IP du conteneur lié en utilisant un alias de lien?

Obtenir l'adresse IP du client à l'aide de WCF 4.5 RemoteEndpointMessageProperty dans une situation d'équilibrage de charge

Comment obtenir l'adresse IP d'un conteneur Docker auprès de l'hôte

comment obtenir l'adresse IP et le nom du conteneur de la machine hôte du conteneur dans EKS

Impossible d'obtenir la différence correcte entre deux horodatages à l'aide de l'heure Joda

Empêcher traefik de transmettre l'adresse IP du client

Comment puis-je obtenir l'adresse IP du client distant à l'aide d'Oracle APEX?

Comment obtenir l'adresse IP du client à partir d'une demande à l'intérieur du conteneur Docker haproxy?

Comment obtenir l'adresse IP actuelle de l'appareil à l'aide d'Elixir / Nerves

Comment puis-je obtenir l'adresse IP DNS du client à l'aide de Go

Comment obtenir l'adresse IP publique de la machine virtuelle Azure à l'aide du SDK Azure

Impossible de définir l'année correcte à l'aide du calendrier en Java

Impossible d'obtenir la taille correcte de DrawnText à l'aide de TextRenderer

Impossible d'accéder à l'adresse IP du conteneur à partir du docker hôte pour la pile Windows

Ctypes - Impossible d'obtenir l'adresse PEB à l'aide de NtQueryInformationProcess

Obtenir l'adresse IP d'un appareil iPhone ou iPad à l'aide de Swift 3

AWS ECS: obtenir l'adresse IP publique du conteneur d'instance lorsque la tâche de démarrage est appelée

Impossible d'atteindre l'appareil/l'adresse IP lorsqu'il est démarré par docker, mais à partir du shell à l'intérieur du même conteneur

Obtenir le nom d'hôte, la DATE et l'heure actuelles du serveur distant à l'aide de l'adresse IP dans Powershell

TOP liste

  1. 1

    Microsoft.WebApplication.targets

  2. 2

    Spring @RequestParam DateTime format comme ISO 8601 Date Heure facultative

  3. 3

    comment supprimer "compte de connexion google" à des fins de développement - actions sur google

  4. 4

    Comment ajouter une entrée à une table de base de données pour une combinaison de deux tables

  5. 5

    Passer la taille d'un tableau 2D à une fonction ?

  6. 6

    Exporter la table de l'arborescence vers CSV avec mise en forme

  7. 7

    Impossible d'accéder à la vue personnalisée pendant le test de l'interface utilisateur dans XCode

  8. 8

    Créer un système Buzzer à l'aide de python

  9. 9

    Comment changer le navigateur par défaut en Microsoft Edge pour Jupyter Notebook sous Windows 10 ?

  10. 10

    impossible d'obtenir l'image d'arrière-plan en plein écran dans reactjs

  11. 11

    Algorithme: diviser de manière optimale une chaîne en 3 sous-chaînes

  12. 12

    CSS: before ne fonctionne pas sur certains éléments,: after fonctionne très bien

  13. 13

    Conversion double en BigDecimal en Java

  14. 14

    Comment obtenir l'intégration contextuelle d'une phrase dans une phrase à l'aide de BERT ?

  15. 15

    Comment choisir le nombre de fragments et de répliques Elasticsearch

  16. 16

    Comment vérifier si un utilisateur spécifique a un rôle? Discord js

  17. 17

    Comment créer un bot à compte à rebours dans Discord en utilisant Python

  18. 18

    Existe-t-il un moyen de voir si mon bot est hors ligne ?

  19. 19

    comment afficher un bouton au-dessus d'un autre élément ?

  20. 20

    Comment activer le message Pylint "too-many-locals" dans VS Code?

  21. 21

    Je continue à obtenir l'objet 'WSGIRequest' n'a pas d'attribut 'Get' sur django

chaudétiquette

Archive