OVH Cloud OVH Cloud

Apache, passerelle et @IP du client..

8 réponses
Avatar
Hugues
Boujour,


j'ai un serveur apache derrière une passerelle réseau. celle ci fait
la redirection de toutes les requetes sur son port 80 exterieur vers
le port 80 de mon serveur web.
du coup, dans mes logs apache, le client est soit une @reseau locale
si on y a accédé depuis le réseau, soit l'@ip de ma passerelle (donc
locale) si on y a accédé depuis l'extérieur.

yaurait-il un moyen d'obtenir l'@ ip réelle du client "original" dans
mes logs apache - et de facon generale, pour pouvoir la recuperer par
exemple avec un script php - ?
meme si cela implique une modif dans la conf de ma passerelle, ca
m'interesse.

d'avance merci..

--
Hugues - Linux Addict

8 réponses

Avatar
TiChou
Dans le message <news:,
*Hugues* tapota sur f.c.o.l.configuration :


Boujour,


Bonsoir,

j'ai un serveur apache derrière une passerelle réseau. celle ci fait
la redirection de toutes les requetes sur son port 80 exterieur vers
le port 80 de mon serveur web.
du coup, dans mes logs apache, le client est soit une @reseau locale
si on y a accédé depuis le réseau, soit l'@ip de ma passerelle (donc
locale) si on y a accédé depuis l'extérieur.


Pas normal. Pour une redirection de ce type on fait du « Destination NAT »
et donc on ne modifie que l'adresse IP de destination et non l'adresse IP
source.

[...]

meme si cela implique une modif dans la conf de ma passerelle, ca
m'interesse.


Quelles sont vos règles de redirection sur votre passerelle, voir toutes les
règles du firewall ?

d'avance merci..


Pas de quoi.

--
TiChou

Avatar
Hugues
Ce cher "TiChou" a dit :


Pas normal. Pour une redirection de ce type on fait du « Destination NAT »
et donc on ne modifie que l'adresse IP de destination et non l'adresse IP
source.


C'est bien ce que j'ai fait pourtant.
La commande pour ce faire est :

$IPTABLES -t nat -A PREROUTING -p tcp -i ppp0 --dport 80 -j DNAT --to-destinatio
n $WEBSERVER:80

(la variable $WEBSERVER est évidemment bien associée à l'ip sur le
réseau local de mon serveur web)

meme si cela implique une modif dans la conf de ma passerelle, ca
m'interesse.


Quelles sont vos règles de redirection sur votre passerelle, voir toutes les
règles du firewall ?


ca donne ceci dans la table nat :

DNAT tcp -- anywhere anywhere tcp dpt:http to:192.168.1.2:80


(je skippe les autres règles/tables, elles n'ont vraiment rien à voir
avec le problème)


--
Hugues - Linux Addict


Avatar
Pascal
Salut,

Hugues wrote:
Quelles sont vos règles de redirection sur votre passerelle, voir toutes les
règles du firewall ?


ca donne ceci dans la table nat :

DNAT tcp -- anywhere anywhere tcp dpt:http to:192.168.1.2:80

(je skippe les autres règles/tables, elles n'ont vraiment rien à voir
avec le problème)


Il n'y aurait pas une règle à cible SNAT ou MASQUERADE un peu trop
large, par exemple MASQUERADE quelles que soient l'interface de sortie
et l'adresse source ?

--
Pascal


Avatar
Hugues
Ce cher "" a dit :

Salut,

Hugues wrote:
Quelles sont vos règles de redirection sur votre passerelle, voir toutes les
règles du firewall ?
ca donne ceci dans la table nat : DNAT tcp -- anywhere anywhere tcp

dpt:http to:192.168.1.2:80
(je skippe les autres règles/tables, elles n'ont vraiment rien à
voir
avec le problème)


Il n'y aurait pas une règle à cible SNAT ou MASQUERADE un peu trop
large, par exemple MASQUERADE quelles que soient l'interface de sortie
et l'adresse source ?


si, possible.
je te montre tout :

$ iptables -t nat -L
Chain PREROUTING (policy ACCEPT)
target prot opt source destination
DNAT tcp -- anywhere anywhere tcp dpt:ssh to:192.168.1.2:22
DNAT tcp -- anywhere anywhere tcp dpt:https to:192.168.1.2:22
DNAT tcp -- anywhere anywhere tcp dpt:http to:192.168.1.2:80

Chain POSTROUTING (policy ACCEPT)
target prot opt source destination
SNAT udp -- anywhere anywhere udp dpt:27015 to:192.168.1.1
MASQUERADE all -- anywhere anywhere

Chain OUTPUT (policy ACCEPT)
target prot opt source destination


Ah ouais....
je devrais faire quoi ?
(a part lire mes deux hors série sur iptables d'un de mes
linux-magazines ?)


--
Hugues - Linux Addict



Avatar
Pascal
Hugues wrote:

Il n'y aurait pas une règle à cible SNAT ou MASQUERADE un peu trop
large, par exemple MASQUERADE quelles que soient l'interface de sortie
et l'adresse source ?


si, possible.
je te montre tout :


Houlà :D

Chain POSTROUTING (policy ACCEPT)
target prot opt source destination
MASQUERADE all -- anywhere anywhere


Déjà une des conditions est remplie : adresse source = anywhere. Par
contre pour afficher les interfaces, il faut utiliser l'option -v
(verbose) de iptables. Moi j'aime bien :

$ iptables -nvL -t nat

S'il y a "any" ou "*" dans la colonne "out" (interface de sortie), alors
le comportement observé s'explique. Habituellement, on n'applique cette
règle qu'à l'interface de sortie et aux adresses sources du LAN, par
exemple :

$ iptables -t nat -A POSTROUTING -o ppp0 -s 192.168.1.0/24 -j MASQUERADE


Avatar
Hugues
Ce cher "" a dit :

Hugues wrote:

Il n'y aurait pas une règle à cible SNAT ou MASQUERADE un peu trop
large, par exemple MASQUERADE quelles que soient l'interface de sortie
et l'adresse source ?
si, possible. je te montre tout :



Houlà :D

Chain POSTROUTING (policy ACCEPT)
target prot opt source destination
MASQUERADE all -- anywhere anywhere


Déjà une des conditions est remplie : adresse source = anywhere. Par
contre pour afficher les interfaces, il faut utiliser l'option -v
(verbose) de iptables. Moi j'aime bien :

$ iptables -nvL -t nat

S'il y a "any" ou "*" dans la colonne "out" (interface de sortie),


Effectivement, ya de ca partout :)

alors le comportement observé s'explique. Habituellement, on
n'applique cette règle qu'à l'interface de sortie et aux adresses
sources du LAN, par exemple :

$ iptables -t nat -A POSTROUTING -o ppp0 -s 192.168.1.0/24 -j MASQUERADE


Ah mais c'est intéressant ca.
en fait je n'avais ni l'option -o ni -s. je les rajotue aussitot a mon
script de lancement.

...test avec un pote...
Ca marche !! trop bien :-)

il faut dire que j'ai installé ma passerelle en -sic- 2001/2002 et que
je n'y ai quasiment jamais touché depuis ^_^


Je te remercie infiniment, je sens que je vais me plonger avec interet
dans la doc d'iptables maintenant que j'en sais encore un petit peu
plus :)
(c'est toujours plus facile de lire la doc quand on connait un peu la
pratique ;) )

--
Hugues - Linux Addict



Avatar
Pascal
Salut,

Hugues wrote:

...test avec un pote...
Ca marche !! trop bien :-)


Tant mieux :)
Moralité, quand Tichou (ou un autre contributeur, peu importe) te
demande de lister toutes tes règles iptables, tu les listes *toutes*,
sans couper celles qui ne te paraissent pas liées au problème. Tout le
monde aurait gagné du temps. Parce que c'est justement ce qui te
manquait, savoir faire le lien entre le comportement observé et telle ou
telle règle.

il faut dire que j'ai installé ma passerelle en -sic- 2001/2002 et que
je n'y ai quasiment jamais touché depuis ^_^


J'ai connu ça aussi :) Après avoir planché dur pour créer les règles
initiales, je n'ai plus eu trop envie d'y toucher, même s'il manque
quelques raffinements.

Avatar
Hugues
Ce cher "" a dit :

Salut,

Hugues wrote:
...test avec un pote... Ca marche !! trop bien :-)


Tant mieux :)
Moralité, quand Tichou (ou un autre contributeur, peu importe) te
demande de lister toutes tes règles iptables, tu les listes *toutes*,
sans couper celles qui ne te paraissent pas liées au problème. Tout le
monde aurait gagné du temps. Parce que c'est justement ce qui te
manquait, savoir faire le lien entre le comportement observé et telle
ou telle règle.


J'aurais jamais cru qu'on me la sortirait, à moi :-)
(D'autant que je savais très bien que j'aurais dû)

Je vais me flageller ^_^


il faut dire que j'ai installé ma passerelle en -sic- 2001/2002 et que
je n'y ai quasiment jamais touché depuis ^_^


J'ai connu ça aussi :) Après avoir planché dur pour créer les règles
initiales, je n'ai plus eu trop envie d'y toucher, même s'il manque
quelques raffinements.


En fait je disais par là qu'un pote m'avait filé les règles toutes
faites et que je les ai alors appliquées bêtement. Depuis, j'ai appris
moi-même à faire du forwarding, mais sans plus..

M'enfin bon, on sort un peu du débat, là.

--
Hugues - Linux Addict