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>