Waarom verlies ik X_FORWARDED_FOR door NAT ?

Pagina: 1
Acties:

  • Eegee
  • Registratie: Januari 2000
  • Laatst online: 22-08 17:13
Ik heb een linux (RH6.2) gateway die NAT doet met ipchains. Ik heb met ipmasqadm portfw poort 80 geforward naar een webserver die draait op 192.168.2.233. Werkt prima, alleen ik krijg geen X_FORWARDED_FOR binnen op m'n webserver. Door 't NATten krijg ik gelukkig wel een REMOTE_ADDR door, maar als dat van een cache/proxy-server is (van m'n provider bijvoorbeeld), dan heb ik niks aan X_FORWARDED_FOR omdat die leeg is (terwijl die cache/proxy-server van m'n provider 'm wel doorgeeft).

Nou dacht ik, dan zeg ik zelf maar een transparent proxy achtig iets op, die op m'n externe ip luistert op poort 80 en dan alles doorpasst, en daarmee de X_FORWARDED_FOR header intact laat. Ik heb squid geinstalleerd (http_accelerator mode), maar ik heb 't niet aan de praat gekregen. Ik kreeg of een forward loop en Access denied, of squid deed een directe request en kreeg ik in REMOTE_ADDR het interne IP van m'n NATbak (dat kreeg ik ook met rinetd, hoef ik squid niet voor te gebruiken).

Is er nou niet iets, een simpele webserver of proxy (ik wil geen caching) die een request kan doorgeven (ipv NAT), daarbij de X_FORWARDED_FOR header/omgevingsvariabele intact latend ? Of in ieder geval iets, waardoor ik het werkelijke IP adres van een request nog ontvang op m'n interne webserver (ik dacht dus in X_FORWARDED_FOR).

  • igmar
  • Registratie: April 2000
  • Laatst online: 29-06 18:56

igmar

ISO20022

Ik heb een linux (RH6.2) gateway die NAT doet met ipchains. Ik heb met ipmasqadm portfw poort 80 geforward naar een webserver die draait op 192.168.2.233. Werkt prima, alleen ik krijg geen X_FORWARDED_FOR binnen op m'n webserver.
Dat krijg je noot met portforwarding op deze manier. Alleen een proxy zet dat.
Is er nou niet iets, een simpele webserver of proxy (ik wil geen caching) die een request kan doorgeven (ipv NAT), daarbij de X_FORWARDED_FOR header/omgevingsvariabele intact latend ? Of in ieder geval iets, waardoor ik het werkelijke IP adres van een request nog ontvang op m'n interne webserver (ik dacht dus in X_FORWARDED_FOR).
Squid zou daar geen probleem mee moeten hebben. Ze hebben daar een behoorlijk goede mailinglist, zeker het posten eens waard.

  • Onno
  • Registratie: Juni 1999
  • Niet online
Op dinsdag 23 oktober 2001 13:48 schreef Eegee het volgende:
dan heb ik niks aan X_FORWARDED_FOR omdat die leeg is (terwijl die cache/proxy-server van m'n provider 'm wel doorgeeft).
Portforwarden verandert alleen de header van TCP/IP packets, niet de inhoud, en ik kan me eerlijk gezegd dus ook niet voorstellen dat X_FORWARDED_FOR verandert door te portforwarden.

Sommige proxies geven die HTTP header gewoon niet mee, portforwarding of niet.
Of in ieder geval iets, waardoor ik het werkelijke IP adres van een request nog ontvang op m'n interne webserver (ik dacht dus in X_FORWARDED_FOR).
En dat is dus gewoon niet altijd mogelijk. Als een proxy het oorspronkelijke ip niet meegeeft is ie onmogelijk te achterhalen.

  • Eegee
  • Registratie: Januari 2000
  • Laatst online: 22-08 17:13
Op dinsdag 23 oktober 2001 15:33 schreef Onno het volgende:
Portforwarden verandert alleen de header van TCP/IP packets, niet de inhoud, en ik kan me eerlijk gezegd dus ook niet voorstellen dat X_FORWARDED_FOR verandert door te portforwarden.
Ja dat dacht ik dus ook. Maar ik ontvang 'm niet. Ik heb zelf naar deze site gesurft met de proxy van m'n provider aan (zeelandnet), en dan zie ik in X_FORWARDED_FOR m'n werkelijke IP adres en in REMOTE_ADDR dat van de proxy (cache.zeelandnet.nl). Dus dan neem ik aan dat de proxy van m'n provider X_FORWARDED_FOR wel doorgeeft (dan zou 't nog wel mogelijk kunnen zijn dat ie dat alleen doet voor adressen die buiten 'zeelandnet.nl' vallen of zo, maar dat lijkt me raar).
En dat is dus gewoon niet altijd mogelijk. Als een proxy het oorspronkelijke ip niet meegeeft is ie onmogelijk te achterhalen.
Ja, dat begrijp ik, maar die van m'n provider geeft 't wel door.

Waarom ik m'n provider proxy erbij haal: m'n server paginaatje is bedoeld voor om bezocht te worden door mensen met Zeelandnet als provider. Die kunnen zonder of met cache surfen. Ik wil 't IP adres weten en moet dus respectievelijk REMOTE_ADDR of X_FORWARDED_FOR opvangen. En ik weet van de link hierboven dat het laatste wordt doorgegeven als ik, als zeelandnet abonnee, naar een pagina surf.

Ik ga 't denk ik nog maar proberen door even te kijken met een http-server, direct op m'n externe adres. Dan weet ik zeker of X_FORWARDED_FOR door cache.zeelandnet.nl wordt doorgegeven of niet, en of 't dan toch aan het forwarden kan liggen. Misschien heb ik dat dan samen met NAT fout geconfigureerd (ben daar nog geen expert in, 't werkte en ik was al blij :) )

  • Eegee
  • Registratie: Januari 2000
  • Laatst online: 22-08 17:13
't lag aan de webserver die ik draaide... die haalde 't eruit. |:( Met een andere krijg ik 't wel binnen.