Skip to contentSkip to conversation

solved it (at lest for me) "MASQUERADE: Route sent us somewhere else."

DISCUSSION Neal Stephenson 2 participants 2 messages Jan 9, 2004

lore
Share & tools
lore
#0 lore raw

Hi,

I figured out my routing problems which were causing

MASQUERADE: Route sent us somewhere else.

messages from the kernel. I use iptables to masquerade and mangle packets so with the advanced router features i can send it out appropriate interfaces (i.e. web traffic out my residential ISP service not my commercial ISP service). See the earlier thread on this for more info (Subject 2.4.23 masquerading broken?). I got a useful reply from Martin Josefsson who suggested that ipt_MASQUERADE could no longer find the input-interface anymore. Upon further investigation and it seems all the rules with iif or from in them no longer work (at least for me). So rules like the following will cause the error in post 2.4.22 kernels.

ip rule add pri 420 from IP lookup TABLE

I now use exclusively rules of the form

ip rule add pri 420 fwmark MARK table TABLE

and mark all packets needing special routing with mangling rules such as

iptables -t mangle -A PREROUTING -s IP -j MARK --set-mark MARK

this seems to prevent the problem. Don't know what changed in the kernel.

Neal

#1 lore raw

Hi,

I have another solution to the same problem. I also use multiple external interfaces and select outgoing interface via:

ip rule add from IP/range lookup TABLE

With 2.4.23 iptables -j MASQUERADE stopped working, reporting:
MASQUERADE: Route sent us somewhere else.

In my case the solution was to change my masquerade rule

iptables -t nat -A POSTROUTING -o IF -s IP/range -j MASQUERADE

to SNAT instead:

iptables -t nat -A POSTROUTING -o IF -s IP/range -j SNAT --to-source EXT-IP

With this config everything works as before 2.4.23.

regards
Anders Westrup

Quoted 36 lines · Neal Stephenson

Hi,

I figured out my routing problems which were causing

MASQUERADE: Route sent us somewhere else.

messages from the kernel. I use iptables to masquerade and mangle packets so with the advanced router features i can send it out appropriate interfaces (i.e. web traffic out my residential ISP service not my commercial ISP service). See the earlier thread on this for more info (Subject 2.4.23 masquerading broken?). I got a useful reply from Martin Josefsson who suggested that ipt_MASQUERADE could no longer find the input-interface anymore. Upon further investigation and it seems all the rules with iif or from in them no longer work (at least for me). So rules like the following will cause the error in post 2.4.22 kernels.

ip rule add pri 420 from IP lookup TABLE

I now use exclusively rules of the form

ip rule add pri 420 fwmark MARK table TABLE

and mark all packets needing special routing with mangling rules such as

iptables -t mangle -A PREROUTING -s IP -j MARK --set-mark MARK

this seems to prevent the problem. Don't know what changed in the kernel.

Neal

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/

Signature · 3 lines
--------------------------------------------
Anders Westrup <[email protected]>
echo '[lddx%Px/dsnK<b]dsb203953535806376680189225555sn[ln128]sdx' | dc