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

Re: lsNAT : No longer support implicit source local NAT



Pascal Hambourg wrote:
Salut,

herve thibaud a écrit :
J'ai un serveur interne  192.168.0.6 (web et mail)
une station 192.168.0.4
serveur et station sont derrière une freebox, configurée en routeur,
serveur et station connectés par wifi.
Pour pouvoir accéder au web du serveur 192.168.0.6 avec l'adresse
publique je n'ai pas trouvé d'autre solution que d'installer shorewall
sur la station et d'inclure une règle DNAT  :
DNAT fw net:192.168.0.6 tcp smtp - 81.56.xxx.xxx qui traduit donc l'IP
publique en IP interne.
fw est donc la station elle même et net tout les appels fait sur la la
liaison wifi

Ce n'est pas un peu "riche" d'installer shorewall alors qu'une simple règle iptables comme ci-dessous suffirait ?

iptables -t nat -A OUTPUT -d 81.56.xxx.xxx -p tcp --dport 25 \
  -j DNAT --to-destination 192.168.0.6

Malheureusement cette règle qui est une traduction d'un appel sortant
n'est plus supportée par les nouveaux noyaux et j'ai bloqué la version
du noyau en place à 2.6.15.

Cette règle est toujours supportée par les noyaux récents, je viens de vérifier avec le dernier 2.6.18.2. Par contre il y a eu une modification du comportement de DNAT dans OUTPUT à partir de la version 2.6.11, d'où le message "No longer support implicit source local NAT" qui n'est qu'un avertissement et non une erreur. Ton noyau 2.6.15 doit logiquement inclure ce changement.

Extrait du changeLog du noyau 2.6.11 :
   [PATCH] Remove do_extra_mangle: double NAT on LOCAL_OUT

   On NF_IP_LOCAL_OUT, when destination NAT changes the destination
   interface, we also change the source address, so the packet is the
   same as if it were generated to go that way in the first place.  This
   is not strictly necessary, I believe.

   This patch rips that code out to see what breaks.

La différence avec les noyaux plus anciens, c'est qu'en cas de changement d'interface de sortie induit par la nouvelle destination, la cible DNAT ne modifie plus l'adresse source. Dans ton cas ça ne devrait pas poser de problème puisque l'interface de sortie ne change pas : c'est la même pour communiquer avec le serveur local et la Freebox.

Quand l'interface de sortie change à cause de la règle DNAT, on peut si nécessaire modifier explicitement l'adresse source dans PREROUTING avec une règle SNAT ou MASQUERADE. Il y a toutefois un cas où ça ne marche pas : quand l'adresse source est une adresse de loopback (127.0.0.0/8), le paquet est refusé. Je suppose que c'est parce que le routage de sortie qui a lieu entre OUTPUT et POSTROUTING refuse d'envoyer un paquet avec une adresse source 127.0.0.0/8 par une interface autre que l'interface de loopback.

Je ne vois pas de possibilité de faire cette traduction sur la freebox,
ce qui serait plus logique.

Hélas la Freebox, comme tous les routeurs NAT basiques pas trop élaborés, ne le permet pas.


J'ai essayé la règle (avec port 80) sur un poste avec un noyau 2.6.18-rc5-git6. J'accède aux sites en entrant leurs adresses.

Merci



ci dessous un morceau des traces que je trouve dans le fichier syslog

europe:/var/log# cat syslog | grep NAT
[...]
Nov 5 07:44:12 europe kernel: NAT: no longer support implicit source local NAT Nov 5 07:44:12 europe kernel: NAT: packet src 192.168.0.6 -> dst 81.56.198.85 Nov 6 10:18:54 europe kernel: NAT: no longer support implicit source local NAT Nov 6 10:18:54 europe kernel: NAT: packet src 192.168.0.6 -> dst 81.56.198.85 Nov 7 09:25:22 europe kernel: NAT: no longer support implicit source local NAT Nov 7 09:25:22 europe kernel: NAT: packet src 192.168.0.6 -> dst 81.56.198.85 Nov 8 09:05:53 europe kernel: NAT: no longer support implicit source local NAT Nov 8 09:05:53 europe kernel: NAT: packet src 192.168.0.6 -> dst 81.56.198.85 Nov 8 14:15:23 europe kernel: NAT: no longer support implicit source local NAT Nov 8 14:15:23 europe kernel: NAT: packet src 192.168.0.6 -> dst 81.56.198.85 Nov 9 08:51:35 europe kernel: NAT: no longer support implicit source local NAT Nov 9 08:51:35 europe kernel: NAT: packet src 192.168.0.6 -> dst 81.56.198.85 Nov 10 09:19:46 europe kernel: NAT: no longer support implicit source local NAT Nov 10 09:19:46 europe kernel: NAT: packet src 192.168.0.6 -> dst 81.56.198.85 Nov 11 09:18:08 europe kernel: NAT: no longer support implicit source local NAT Nov 11 09:18:08 europe kernel: NAT: packet src 192.168.0.6 -> dst 81.56.198.85
[...]

merci.




Reply to: