Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 02 Nov 2014 09:13:34 +0800
From:      Julian Elischer <julian@freebsd.org>
To:        Hooman Fazaeli <hoomanfazaeli@gmail.com>, "freebsd-net@freebsd.org" <freebsd-net@freebsd.org>
Subject:   Re: transparent udp proxy
Message-ID:  <5455853E.2030700@freebsd.org>
In-Reply-To: <54535B82.405@gmail.com>
References:  <54535B82.405@gmail.com>

next in thread | previous in thread | raw e-mail | index | archive | help
On 10/31/14, 5:50 PM, Hooman Fazaeli wrote:
> Hi,
>
> I my setup, I use a fwd rule to forward all udp traffic to my local 
> proxy:
>
> ipfw add 10 fwd localhost,7000 udp from any to any recv em1
just as a nit,  I'd add "in" as well  sometimes outgoing packets can 
have a receive interface if they were routed.

>
> The proxy needs to know the original destination address of 
> forwarded datagrams, but
> there seems to be no way to obtain that address.
hmm that used to work..
>
> Using recvmsg with IP_RECVDSTADDR does not help because it returns 
> next-hop address
> instead of original destination. This is because udp_input() 
> overwrites packet's destination
> with next-hop address before doing ip_savecontrol.
This behaviour may be new since IPFORWARD was added..  My memory is 
that you could do this.
>
> It seems easy to change udp_input to pass the original dest. address 
> to ip_savecontrol.
> Another soultion would be to implement IP_RECVDSTSOCKADDR option, 
> which records the original
> destination address:port as a 'struct sockaddr_in[6]' in packet's 
> control data.
>
> Comments/suggestions are welcome.
>
>




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?5455853E.2030700>