Skip site navigation (1)Skip section navigation (2)
Date:      Sat, 1 Jun 2013 10:37:30 +1000
From:      Peter Jeremy <peter@rulingia.com>
To:        Joe Moog <joemoog@ebureau.com>
Cc:        freebsd-net@freebsd.org
Subject:   Re: Basic NAT server setup
Message-ID:  <20130601003730.GE79250@server.rulingia.com>
In-Reply-To: <E27B916A-4825-4352-B92A-08072BDEFB70@ebureau.com>
References:  <E27B916A-4825-4352-B92A-08072BDEFB70@ebureau.com>

next in thread | previous in thread | raw e-mail | index | archive | help

--azLHFNyN32YCQGCU
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline
Content-Transfer-Encoding: quoted-printable

On 2013-May-30 17:54:53 -0500, Joe Moog <joemoog@ebureau.com> wrote:
>I'm building a server to handle outbound NAT to the internet using
>FreeBSD 9.1 and its built-in distribution of pf. What I want to be
>able to do is NAT three unique internal (private) VLANs to three
>unique public IPs.

>ext_if =3D "vlan11"
>ext_addr1 =3D "a.b.c.3"
>ext_addr2 =3D "a.b.c.4"
>ext_addr3 =3D "a.b.c.5"
>int_network1 =3D "10.0.1.0/24"
>int_network2 =3D "172.16.1.0/24"=20
>int_network3 =3D "192.168.1.0/24"
>nat on $ext_if from $int_network1 to any -> $ext_addr1
>nat on $ext_if from $int_network2 to any -> $ext_addr2
>nat on $ext_if from $int_network3 to any -> $ext_addr3

I don't see anything obviously wrong with what you've done.  My initial
checks would be:
- Do you have the correct routes on the NAT box.
- Do you have a.b.c.{3,4,5} setup as aliases on vlan11 (or faked using
  proxy ARP).

(My suspicion is the second point - packets are going out successfully
but the response is undeliverable because nothing is responding to the
switch's ARP requests for a.b.c.{3,4,5}).

Next would be to use tcpdump to do some snooping:
- Firstly, make sure the packets are are arriving on the NAT box with
  appropriate src & dst IPs by tcpdump'ing the internal interface(s).
- Secondly, tcpdump the external interface and see what is going out
  and returning (tcpdump will see the external addresses)

Finally, add some 'log' keywords and tcpdump pflog0.  Unfortunately,
the stock FreeBSD tcpdump can't handle pflog packets.  There are some
patches in bin/124825 but you will need to do some work to get them
to apply to the tcpdump in 9.1.

That will hopefully give you some pointers as to where to investigate.

--=20
Peter Jeremy

--azLHFNyN32YCQGCU
Content-Type: application/pgp-signature

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v2.0.20 (FreeBSD)

iEYEARECAAYFAlGpQkoACgkQ/opHv/APuIcUgwCgpuKQx9BgMj6/8pPyrhfO/F4r
syUAnAsU5BGd0QiABVekKCEkvnU/q2+1
=kGTt
-----END PGP SIGNATURE-----

--azLHFNyN32YCQGCU--



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