Linux Netfilter discussions
 help / color / mirror / Atom feed
From: Pascal Hambourg <pascal.mail@plouf.fr.eu.org>
To: netfilter@lists.netfilter.org
Subject: Re: Messages in log with SNAT target
Date: Mon, 24 Jul 2006 12:24:06 +0200	[thread overview]
Message-ID: <44C49FC6.6030504@plouf.fr.eu.org> (raw)
In-Reply-To: <44C4903B.3080004@gmail.com>

Hello,

Anssi Hannula a écrit :
> 
> I've been using this kind of configuration on my Linux router for a few
> years:
> 
> eth0	80.223.77.223, public internet ip
> eth0:0	10.0.0.1, private network ip

You know that having both internet and a private LAN on the same 
interface is a *very* bad idea, don't you ? I suppose you have no other 
choice.

> IP forwarding enabled.
> 
> And a rule for iptables:
> -A POSTROUTING -s 10.0.0.0/255.255.255.0 -d ! 10.0.0.0/255.255.255.0 -j
> SNAT --to-source 80.223.77.223
> 
> Kernel IP routing table
> Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
> 10.0.0.0        0.0.0.0         255.255.255.0   U     10     0        0 eth0
> 80.223.64.0     0.0.0.0         255.255.240.0   U     10     0        0 eth0
> 0.0.0.0         80.223.64.1     0.0.0.0         UG    10     0        0 eth0
> 
> However, I get lots of this kind of messages in the dmesg while routing:
> host 10.0.0.4/if2 ignores redirects for 70.35.xxx.xxx to 80.223.64.1.
[and so on]

Here's what happens. On your router box, all routes use the same 
interface eth0, so when it receives a packet for another destination 
than the box itself, it sends an "ICMP Redirect" message to the source 
IP address meaning "hey, there is a more direct route to destination 
70.35.x.x using gateway 80.223.64.1 instead of me. Please update your 
routing table".

Happily, the 1.0.0.4 host ignores the "ICMP Redirect" messages. One 
reason is I think that's a default behaviour of Windows NT. Another 
reason is that host has probably no direct route to the proposed gateway 
address. Anyway, if it didn't ignore the "ICMP Redirect", it would 
probably lose connectivity with internet hosts because of its private 
address.

Note : destination NAT (DNAT) on the same network blocks the sending of 
"ICMP Redirect" messages by the routing decision, because destination 
NAT takes place before the routing decision. But source NAT (SNAT, 
MASQUERADE) doesn't, because it takes place after the routing decision, 
so it's too late (see Netfilter diagram in 
http://www.netfilter.org/documentation/HOWTO//NAT-HOWTO.txt).

You can enable or disable the sending of "ICMP Redirect" messages with 
the kernel parameter send_redirect.

send_redirects - BOOLEAN
      Send redirects, if router.
      send_redirects for the interface will be enabled if at least one of
      conf/{all,interface}/send_redirects is set to TRUE,
      it will be disabled otherwise
      Default: TRUE

To disable sending "ICMP redirect" on eth0 :

echo 0 > /proc/sys/net/ipv4/conf/all/send_redirects
echo 0 > /proc/sys/net/ipv4/conf/eth0/send_redirects

or :

sysctl -w net/ipv4/conf/all/send_redirects=0
sysctl -w net/ipv4/conf/eth0/send_redirects=0


  parent reply	other threads:[~2006-07-24 10:24 UTC|newest]

Thread overview: 19+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2006-07-24  9:17 Messages in log with SNAT target Anssi Hannula
2006-07-24 10:15 ` Sietse van Zanen
2006-07-24 10:24 ` Pascal Hambourg [this message]
2006-07-24 10:49   ` Sietse van Zanen
2006-07-25 13:21     ` Pascal Hambourg
2006-07-25 13:37       ` Sietse van Zanen
2006-07-24 11:03   ` Anssi Hannula
2006-07-24 11:33     ` Sietse van Zanen
2006-07-24 12:01       ` Anssi Hannula
2006-07-24 12:39         ` Sietse van Zanen
2006-07-24 12:55           ` Anssi Hannula
2006-07-26  0:40         ` R. DuFresne
2006-07-26  8:16           ` Anssi Hannula
2006-07-26  9:17             ` Sietse van Zanen
2006-07-26 11:21               ` Anssi Hannula
2006-07-26 11:22                 ` Sietse van Zanen
2006-07-26 11:54                   ` Anssi Hannula
2006-07-27 19:09                     ` R. DuFresne
2006-07-27 19:46                       ` Anssi Hannula

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=44C49FC6.6030504@plouf.fr.eu.org \
    --to=pascal.mail@plouf.fr.eu.org \
    --cc=netfilter@lists.netfilter.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox