Asustor Mauvaise ip dans les logs de nginx

krononox

Apprenti
9 Janvier 2023
59
23
8
Bonjour,

je n'arrive pas à avoir l'ip réelle transmise dans les logs de nginx, que ce soit via NPM ou Swag, installé sur 2 reseaux différents (testé l'un après l'autre plusieur fois). Est ce à cause du mode bridge ?

Pour récapituler :
- installation de NPM en mode bridge, tout fonctionne, la redirection, les certificats mais ip dans les logs 172.17.0.1

log de nginx (NPM)

log_nginx_npm.png

- installation de swag sur un autre reseau docker avec autre plage d'adresse, tout fonctionne, redirection, certif mais ip 172.19.1.1

log de nginx (swag)
log_nginx_swag.png



pour infos :
le reverse proxy (que ce soit par swag ou npm fonctionne correctement), je mets la stack Swag pour exemple mais je ne pense pas que cela vienne de la.
j'ai essayé également de mettre set_real_ip_from dans site_conf sans succès.


stack Swag
YAML:
version: "2.1"
services:
  #SWAG
  swag:
    image: lscr.io/linuxserver/swag
    container_name: swag
    hostname: 'swag'
    networks:
       # Ip
       Docker_network:
         ipv4_address: 172.19.1.2
    cap_add:
      - NET_ADMIN
    environment:
      - PUID=${v_PUID}
      - PGID=${v_PGID}
      - TZ=Europe/Paris
      - URL=${v_Url_Duckdns}
      - VALIDATION=duckdns
      - SUBDOMAINS=wildcard
      - DUCKDNSTOKEN=${v_Token_Duckdns}
      - EMAIL=${v_Email_Duckdns} # define email; required to renew certificate
      #- DOCKER_MODS=linuxserver/mods:swag-auto-reload|linuxserver/mods:swag-dashboard|linuxserver/mods:swag-maxmind|ghcr.io/gilbn/theme.park:swag
      - DOCKER_MODS=linuxserver/mods:swag-auto-reload|linuxserver/mods:swag-dashboard|linuxserver/mods:swag-crowdsec #|linuxserver/mods:swag-dbip #|ghcr.io/gilbn/theme.park:swag
      - CROWDSEC_API_KEY=${v_Api_Crowdsec}
      - CROWDSEC_LAPI_URL=http://crowdsec:8080
    volumes:
      - /share/Docker/Swag/config:/config
    ports:
      - 1443:443
      - 1480:80
      - 1481:81
    restart: always
 
 
  #GOTIFY
  gotify:
    image: ghcr.io/gotify/server
    container_name: gotify
    hostname: 'gotify'
    restart: always
    networks:
       # # Ip
       Docker_network:
         ipv4_address: 172.19.1.11
    ports:
      - 8011:80
    environment:
      - PUID=${v_PUID}
      - PGID=${v_PGID}
      - GOTIFY_DATABASE_DIALECT=sqlite3
      - GOTIFY_DATABASE_CONNECTION=data/gotify.db
      - GOTIFY_DEFAULTUSER_NAME=${v_Gotify_Adminuser}
      - GOTIFY_DEFAULTUSER_PASS=${v_Gotify_Adminpassword}
      - GOTIFY_PASSSTRENGTH=10
      - GOTIFY_UPLOADEDIMAGESDIR=data/images
      - GOTIFY_PLUGINSDIR=data/plugins
      - TZ=Europe/Paris
    volumes:
      - /share/Docker/Gotify/config:/app/data
 
  #crowdsec
  crowdsec:
    container_name: crowdsec
    image: crowdsecurity/crowdsec
    hostname: 'crowdsec'
    restart: always
    networks:
       # # Ip
       Docker_network:
         ipv4_address: 172.19.1.3
    environment:
      - COLLECTIONS=crowdsecurity/nginx
      - GID=${v_PGID}
    depends_on:
      - swag
    volumes:
      - /share/Docker/Swag/config/log/nginx:/var/log/nginx
      - /share/Docker/Swag/crowdsec/acquis.yaml:/etc/crowdsec/acquis.yaml
      - /share/Docker/Swag/crowdsec/crowdsec-db:/var/lib/crowdsec/data/
      - /share/Docker/Swag/crowdsec/crowdsec-config:/etc/crowdsec/
    security_opt:
      - no-new-privileges=true
 

#creation du reseau Docker
networks:
    Docker_network:
        # use the bridge driver, but disabled IPv6
        driver: bridge
        driver_opts:
            com.docker.network.enable_ipv6: "false"
        ipam:
            driver: default
            config:
                - subnet: 172.19.1.0/24
                  gateway: 172.19.1.1
 
Salut,
Dans les paramètres du reverse, il doit y avoir cela pour que l'ip réelle "traverse" le proxy :

Code:
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $remote_addr
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
 
Salut,
Dans les paramètres du reverse, il doit y avoir cela pour que l'ip réelle "traverse" le proxy :

Code:
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $remote_addr
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
Oui c'est le 1er truc que j'ai vérifié ils y sont. Ce qui est bizarre c'est que les 2 stacks font pareils alors qu'ils n'ont pas la même config réseau ni les mêmes dossiers. J'essaierai en mode host pour voir
 
Oui c'est le 1er truc que j'ai vérifié ils y sont. Ce qui est bizarre c'est que les 2 stacks font pareils alors qu'ils n'ont pas la même config réseau ni les mêmes dossiers. J'essaierai en mode host pour voir
Peut etre une limitation de ADM alors, sur DSM c'est pareil.
 
Bonjour,

Le mode bridge permet de faire du NAT, donc l'adresse IP sera pas celle physique car c'est le mode HOST qui le permet.
Ce qui est à retenir sur le mode Host, pas de NAT, donc si ta plusieurs application sur le même port, tu est obligé de définir une IP physique sur le conteneur si tu veux rester en Bridge.
J'ai ajouter l'argument manquant pour voir si sa corriges ton problème: network_mode: 'bridge'

Du côté de Nginx, tu utiliser l'adresse du serveur Physique (NAS) puis le port de sortie

Exemple:
Si mon NAS à l'ip suivant 192.168.1.32 et que je veux accéder au panel administration qui est sur le port par défaut 8001 en https, je taperai : http://192.168.1.32:8001


Liste des ports

SWAG:
Code:
- 1443:443
- 1480:80
- 1481:81

gotify:
Code:
- 8011:80

crowdsec:
Code:
- Aucun port publié ?
- Défaut: 8080:8080 -p 6060:6060


YAML:
################
version: "2.1" #
services:      #
################
#
#
#####################################################################################################################################################################################################
  swag:
    # ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
    image: lscr.io/linuxserver/swag
    container_name: swag
    hostname: 'swag'
    network_mode: 'bridge'
    restart: always
    # ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
    cap_add:
      - NET_ADMIN
    # ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
    environment:
      - PUID=${v_PUID}
      - PGID=${v_PGID}
      - TZ=Europe/Paris
      - URL=${v_Url_Duckdns}
      - VALIDATION=duckdns
      - SUBDOMAINS=wildcard
      - DUCKDNSTOKEN=${v_Token_Duckdns}
      - EMAIL=${v_Email_Duckdns} # define email; required to renew certificate
      #- DOCKER_MODS=linuxserver/mods:swag-auto-reload|linuxserver/mods:swag-dashboard|linuxserver/mods:swag-maxmind|ghcr.io/gilbn/theme.park:swag
      - DOCKER_MODS=linuxserver/mods:swag-auto-reload|linuxserver/mods:swag-dashboard|linuxserver/mods:swag-crowdsec #|linuxserver/mods:swag-dbip #|ghcr.io/gilbn/theme.park:swag
      - CROWDSEC_API_KEY=${v_Api_Crowdsec}
      - CROWDSEC_LAPI_URL=http://crowdsec:8080
    # ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
    volumes:
      - /share/Docker/Swag/config:/config
    # ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
    ports:
      - 1443:443
      - 1480:80
      - 1481:81
#####################################################################################################################################################################################################
#
#
#####################################################################################################################################################################################################
  gotify:
    # ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
    image: ghcr.io/gotify/server
    container_name: gotify
    hostname: 'gotify'
    network_mode: 'bridge'
    restart: always
    # ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
    environment:
      - PUID=${v_PUID}
      - PGID=${v_PGID}
      - GOTIFY_DATABASE_DIALECT=sqlite3
      - GOTIFY_DATABASE_CONNECTION=data/gotify.db
      - GOTIFY_DEFAULTUSER_NAME=${v_Gotify_Adminuser}
      - GOTIFY_DEFAULTUSER_PASS=${v_Gotify_Adminpassword}
      - GOTIFY_PASSSTRENGTH=10
      - GOTIFY_UPLOADEDIMAGESDIR=data/images
      - GOTIFY_PLUGINSDIR=data/plugins
      - TZ=Europe/Paris
    # ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
    volumes:
      - /share/Docker/Gotify/config:/app/data
    # ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
    ports:
      - 8011:80
#####################################################################################################################################################################################################
#
#
#####################################################################################################################################################################################################
  crowdsec:
    # ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
    container_name: crowdsec
    image: crowdsecurity/crowdsec
    hostname: 'crowdsec'
    network_mode: 'bridge'
    restart: always
    # ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
    depends_on:
      - swag
    # ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
    environment:
      - COLLECTIONS=crowdsecurity/nginx
      - GID=${v_PGID}
    # ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
    volumes:
      - /share/Docker/Swag/config/log/nginx:/var/log/nginx
      - /share/Docker/Swag/crowdsec/acquis.yaml:/etc/crowdsec/acquis.yaml
      - /share/Docker/Swag/crowdsec/crowdsec-db:/var/lib/crowdsec/data/
      - /share/Docker/Swag/crowdsec/crowdsec-config:/etc/crowdsec/
    # ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
    security_opt:
      - no-new-privileges=true
#####################################################################################################################################################################################################
 
Dernière édition:
Bonjour,

Le mode bridge permet de faire du NAT, donc l'adresse IP sera pas celle physique car c'est le mode HOST qui le permet.
Ce qui est à retenir sur le mode Host, pas de NAT, donc si ta plusieurs application sur le même port, tu est obligé de définir une IP physique sur le conteneur si tu veux rester en Bridge.
J'ai ajouter l'argument manquant pour voir si sa corriges ton problème: network_mode: 'bridge'

Du côté de Nginx, tu utiliser l'adresse du serveur Physique (NAS) puis le port de sortie

Exemple:
Si mon NAS à l'ip suivant 192.168.1.32 et que je veux accéder au panel administration qui est sur le port par défaut 8001 en https, je taperai : http://192.168.1.32:8001


Liste des ports

SWAG:
Code:
- 1443:443
- 1480:80
- 1481:81

gotify:
Code:
- 8011:80

crowdsec:
Code:
- Aucun port publié ?
- Défaut: 8080:8080 -p 6060:6060


YAML:
################
version: "2.1" #
services:      #
################
#
#
#####################################################################################################################################################################################################
  swag:
    # ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
    image: lscr.io/linuxserver/swag
    container_name: swag
    hostname: 'swag'
    network_mode: 'bridge'
    restart: always
    # ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
    cap_add:
      - NET_ADMIN
    # ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
    environment:
      - PUID=${v_PUID}
      - PGID=${v_PGID}
      - TZ=Europe/Paris
      - URL=${v_Url_Duckdns}
      - VALIDATION=duckdns
      - SUBDOMAINS=wildcard
      - DUCKDNSTOKEN=${v_Token_Duckdns}
      - EMAIL=${v_Email_Duckdns} # define email; required to renew certificate
      #- DOCKER_MODS=linuxserver/mods:swag-auto-reload|linuxserver/mods:swag-dashboard|linuxserver/mods:swag-maxmind|ghcr.io/gilbn/theme.park:swag
      - DOCKER_MODS=linuxserver/mods:swag-auto-reload|linuxserver/mods:swag-dashboard|linuxserver/mods:swag-crowdsec #|linuxserver/mods:swag-dbip #|ghcr.io/gilbn/theme.park:swag
      - CROWDSEC_API_KEY=${v_Api_Crowdsec}
      - CROWDSEC_LAPI_URL=http://crowdsec:8080
    # ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
    volumes:
      - /share/Docker/Swag/config:/config
    # ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
    ports:
      - 1443:443
      - 1480:80
      - 1481:81
#####################################################################################################################################################################################################
#
#
#####################################################################################################################################################################################################
  gotify:
    # ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
    image: ghcr.io/gotify/server
    container_name: gotify
    hostname: 'gotify'
    network_mode: 'bridge'
    restart: always
    # ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
    environment:
      - PUID=${v_PUID}
      - PGID=${v_PGID}
      - GOTIFY_DATABASE_DIALECT=sqlite3
      - GOTIFY_DATABASE_CONNECTION=data/gotify.db
      - GOTIFY_DEFAULTUSER_NAME=${v_Gotify_Adminuser}
      - GOTIFY_DEFAULTUSER_PASS=${v_Gotify_Adminpassword}
      - GOTIFY_PASSSTRENGTH=10
      - GOTIFY_UPLOADEDIMAGESDIR=data/images
      - GOTIFY_PLUGINSDIR=data/plugins
      - TZ=Europe/Paris
    # ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
    volumes:
      - /share/Docker/Gotify/config:/app/data
    # ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
    ports:
      - 8011:80
#####################################################################################################################################################################################################
#
#
#####################################################################################################################################################################################################
  crowdsec:
    # ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
    container_name: crowdsec
    image: crowdsecurity/crowdsec
    hostname: 'crowdsec'
    network_mode: 'bridge'
    restart: always
    # ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
    depends_on:
      - swag
    # ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
    environment:
      - COLLECTIONS=crowdsecurity/nginx
      - GID=${v_PGID}
    # ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
    volumes:
      - /share/Docker/Swag/config/log/nginx:/var/log/nginx
      - /share/Docker/Swag/crowdsec/acquis.yaml:/etc/crowdsec/acquis.yaml
      - /share/Docker/Swag/crowdsec/crowdsec-db:/var/lib/crowdsec/data/
      - /share/Docker/Swag/crowdsec/crowdsec-config:/etc/crowdsec/
    # ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
    security_opt:
      - no-new-privileges=true
#####################################################################################################################################################################################################
Je suis désolé mais je vois pas la différence avec mon stack car je déclare mon reseau docker_network en driver bridge. Les ports sont bien listés. J'accede bien aux services en passant par le reverse proxy. Concernant crowdsec je ne déclare pas de port car dans la config du boucer on appelle directement le conteneur crowdsec (http://crowdsec:8080). Quand au stacks NPM c'est un copier collé de ton tuto, qui fonctionne également mais même problème d'ip.
 
Bonjour,

Ton problème mérite une analyse de ma part en directe, pour mieux comprendre le problème.
C'est pas évident de décrire ou de voir d'où vient le problème .
 
Bonjour,

Merci de favoriser les échanges sur le forum dans la recherche et la résolution de problème afin d’en faire profiter la communauté.
Des cas de fraude ou tentatives frauduleuses (suite à des prises de main à distance) nous ont été remontées…

Merci de votre compréhension.
 
  • J'aime
Réactions: krononox
Bonjour,

Je testerais en macvlan. Je pensais que certains avaient déjà mis en place swag sur asustor d'où ma question. Merci @Drthrax74 pour ton offre mais comme le mentionne @EVOTk je ne laisse personne accéder à mon réseau. Je suis plutôt à l'aise avec les réseaux, je pense qu'il y a sûrement un bridage du côté d'ADM, je vais peut être passer par opnsense qui a crowdsec en plugin. Merci en tout cas.
 
Bonjour,

Je vous confirme que swag avec crowdsec fonctionne parfaitement en macvlan et permet de loguer l'ip réelle. Il doit y avoir un bridage sur adm aussi je pense.
 
  • J'aime
Réactions: EVO