Date: Sat, 6 Apr 2002 13:57:44 -0600 (CST) From: Nick Rogness <nick@rogness.net> To: "Matthew D. Fuller" <fullermd@over-yonder.net> Cc: Alex Rousskov <rousskov@measurement-factory.com>, freebsd-net@FreeBSD.ORG Subject: Re: Forcing packets to the wire Message-ID: <Pine.BSF.4.21.0204061322160.12246-100000@cody.jharris.com> In-Reply-To: <20020405222555.C65380@over-yonder.net>
next in thread | previous in thread | raw e-mail | index | archive | help
On Fri, 5 Apr 2002, Matthew D. Fuller wrote: > On Fri, Apr 05, 2002 at 06:48:09PM -0600 I heard the voice of > Nick Rogness, and lo! it spake thus: > > On Fri, 5 Apr 2002, Alex Rousskov wrote: > > > > > > - Is it possible without kernel modifications? How? > > > > AFAIK, No. Your only 2 possiblities that I could think of would > > be to use policy routing or natd. Both will fail in this case. > > You MIGHT be able to use ipfw divert/pipe rules to somehow shove the > packets into a program on their way out, and write a program that > would use raw sockets to hand-assemble the IP datagram on the way out; > I'm not sure if the kernel would try to outsmart you on that. Yeh, I thought of that. The problem is packets never leave anywhere since the route for the other NIC is not "OUT" any interface...it is the machine itself. I had a brief thought of using an upstream device that could route the appropriate nat'd addresses to each interface. This would be tricky to do but a maybe something like: =================== | Upstream device | =================== | | | | xl0 xl1 =================== | BSD Machine | =================== On the BSD machine: ipfw divert natd ip from any to 2.3.4.5 out via xl0 ipfw divert natd ip from 2.3.4.5 to any in via xl0 ipfw divert natd2 ip from any to 2.3.4.5 in via xl1 ipfw divert natd2 ip from any to 192.168.0.1 out via xl1 ipfw allow ip from any to any # route add -host 192.168.0.1 -iface xl1 # route add -host 2.3.4.5 -iface xl0 # natd -alias_address 192.168.0.1 # natd2 -redirect_address $IP_OF_xl1 2.3.4.5 -n xl1 # route add default $IP_OF_UPSTREAM_DEVICE Then on the Upstream device: # route add -host 2.3.4.5 $IP_OF_xl1 # route add -host 192.168.0.1 $IP_OF_xl0 That should get the basic functionality but there is still a tad bit of tweaking to do to get everything working. The basic concept is there though. Of course, your IP's on the outside will be different than what they really are which is not what the original author wanted. So I said it is not a viable solution. PS. I just randomly chose 192.168.0.1 & 2.3.4.5...you could use anything that is not part of either IP subnet assigned to xl0 & xl1. Nick Rogness <nick@rogness.net> - Don't mind me...I'm just sniffing your packets To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe freebsd-net" in the body of the message
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?Pine.BSF.4.21.0204061322160.12246-100000>