Re: DNAT on loopback

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

 



Hello,

Serge Kosyrev a écrit :
> 
> Is it possible to DNAT locally-originated, locally-destined packets to a
> non-local destination?

Sometimes, but not alway.

> The use-case is port forwarding to a locally-routed VM guest.
> For externally originating access the following is adequate:
> 
> iptables -t nat -A PREROUTING -d external.iface.ip -p tcp --dport 80 -j DNAT --to-destination target.ip.add.ress
> 
> A logical complement for locally originating accesses would have been:
> 
> iptables -t nat -A OUTPUT     -d 127.0.0.0/16      -p tcp --dport 80 -j DNAT --to-destination target.ip.add.ress
> 
> ..but all I can observe is silent packet disappearance, which I presume
> takes place during routing decision-making immediately following the
> processing by the OUTPUT chain of the nat table.

Yes, packets are discarded because the output interface is non-loopback
and the source address is within 127.0.0.0/8, which is restrited to
loopback. Unfortunately you can only change the source address in
POSTROUTING, which comes too late.

> So, is it possible at all, or should I go the userspace port forwarding way?

It is possible if the original source adress is not within 127.0.0.0/8.

For local destinations the default source adresse is the same as the
destination, but some applications allow to specify a different address.

However why don't you use the same destination address external.iface.ip
as in the PREROUTING rule, so that the default source adress would not
be a loopback address ?
--
To unsubscribe from this list: send the line "unsubscribe netfilter" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html




[Index of Archives]     [Linux Netfilter Development]     [Linux Kernel Networking Development]     [Netem]     [Berkeley Packet Filter]     [Linux Kernel Development]     [Advanced Routing & Traffice Control]     [Bugtraq]

  Powered by Linux