Subject: Re: nat configuration
To: Brian Somers <brian@Awfulhak.org>
From: Andrew Brown <atatat@atatdot.net>
List: tech-net
Date: 01/21/2001 22:40:50
>> >> >Hmmm.... I just tried it, and now it works! I thought it didn't used to.
>> >> >Either I misremembered, or it's been fixed.
>> >>
>> >> um...what works? a more current nat can mux pings?
>> >
>> >Yes. My 1.5 NAT box seems to be multiplexing pings. I had one box ping
>> >ftp.netbsd.org, and another ping cvs.netbsd.org, and they both worked. My
>> >nat config looks like yours, except that I have my hard IP in there
>> >instead of 0.0.0.0, and I am using the outgoing ethernet card. :-)
>>
>> make it more interesting, just to amuse me? ping the same outside
>> address ( i usually use 137.39.1.3) from two machines inside the nat
>> and lemme know if it works.
>
>Yes, it works. libalias (used by user-ppp) recognises icmp traffic,
>and nat's the sequence number and IP.
no...what i meant was (a) using the nat built into netbsd-current, (b)
ping one destination from (c) more than one machine behind the nat.
that, i believe, is what doesn't work (at least, not for me). that is
what works using the userspace ppp implementation.
>> >> >All my machines are running 1.5.
>> >>
>> >> all my machines are running current with less than a two month lag
>> >> behind today.
>> >
>> >I hope it didn't get fixed then broken.
>>
>> me too.
>
>It still works (and will continue to).
using the in-kernel nat, or the userspace one? i know the userspace
one works.
>> >> >If it really works with userland ppp (which I thought was a downgrade from
>> >> >1.5's ppp) but not kernel ppp, then there's a ppp bug.
>> >>
>> >> the userspace ppp is, afaik, a *completely* separate and distinct
>> >> implementation of ppp. all it requires of the kernel is a serial
>> >> interface (with a modem) and a tunnel interface (for packets to go
>> >> through). it's not a downgrade...perhaps a "sidegrade".
>> >
>> >I thought they were based on the same ppp project. The reason for the ppp
>> >package was that it's set to version 2.3.11, which is newer than the ppp
>> >in 1.4. But 1.5 and current are using ppp 2.4, which is newer, thus an
>> >overall downgrade.
>>
>> they might have some common roots, if you dig far enough back (like
>> netbsd and freebsd), but the userspace one and the kernel space one
>> are very different.
>
>user-ppp was originally written by IIJ and was picked up by me and
>almost entirely re-written (multi-link support made this necessary)
>since then.
are there any common roots with the kernel one, or is it a completely
clean-room re-implementation? i expect that it's completely
independent.
>> some examples: the userspace one doesn't use
>> chat...it does it all itself;
>
>Although it can use an external chat program too (see the man page).
can...can't. doesn't have to.
>> the userspace one does nat all by
>> itself, it doesn't rely on the kernel;
>
>Using libalias. libalias does a whole bunch of things, including
>non-passive ftp, irc, cuseeme, transparent proxying, pptp, NetBIOS
>and realaudio (smedia).
it's a separate implementation.
>> the userspace one also claims
>> to support mppp, which i've not tried,
>
>Yep, works nicely with i4b :-)
good to know. :)
>> whereas pppd says that only
>> works under linux. that might sounds a bit slanted, but those were
>> the first things i thought of.
>
>The only downside with user-ppp is the overhead of passing everything
>out then back into the kernel. This is being addressed (albeit
>slowly) by making user-ppp use netgraph(4) if it's available.
...which, on a fast enough machine, with not too much traffic, ought
not to matter that much. but still...
>> >> the nat (called aliasing) in the userspace ppp is what actually
>> >> handles the multiple outbound pings. i imagine it's fiddling with the
>> >> icmp echo request identifier and using it as it uses the local port
>> >> number rewriting for udp and tcp.
>> >
>> >Does it work with that aliasing off?
>>
>> not for me, no, since none of my inside machines addresses are routed
>> back to me properly. that's something i've been meaning to deal with,
>> but haven't yet.
>
>It'll work with ipnat turned off, but not with user-ppp's -nat (or
>``nat enable yes'') disabled.
of course. i'm beginning to suspect that some people are confusing
what i'm saying.
>> on a side note, i just thougfht about it a tiny bit more and
>> remembered that my nat rules rewrite traffic over ppp0, not tun0,
>> which is what the userspace ppp uses. so, no conflict.
>
>They shouldn't get in eachother's way.
nope. not at all, unless programmed to. i *could* have the kernel
nat things that go in and out of the tunnel device *before* the
userspace ppp gets it, but that would be wasteful. the userspace
ppp's nat (aka aliasing) is better than ipnat in the kernel.
>I've been intending to make a ppp package for NetBSD, and now see
>that there already is one :-) Now that sup.NetBSD.org exports
>pkgsrc, I'll look into keeping things more ``available'' :-)
yeah...those package guys are really good.
--
|-----< "CODE WARRIOR" >-----|
codewarrior@daemon.org * "ah! i see you have the internet
twofsonet@graffiti.com (Andrew Brown) that goes *ping*!"
andrew@crossbar.com * "information is power -- share the wealth."