Here is my setup:

[DSL MODEM]
|
[ROUTER (netgear rp614)]
|
[FREEBSD ROUTER]
|
[WIRELESS ROUTER (linksys BEFW11S4]
|
[Linux Workstations]

The freebsd router will eventually be a firewall and I want my
wireless behind that. I keep the netgear router plugged into the dsl
modem so it can take care of logging in to my isp and it also gives me
a point outside of my firewall which i can plug into and test the
security of my firewall from outside my network.

Currently, I have only one Linux workstation hooked up and no firewall
(ipfiltering, etc) enabled on the freebsd router. It is a clean
freebsd install and I have yet to even recompile the kernel with the
firewall features.

I have each router acting as a DHCP server to the next. This setup
works fine when I take the FreeBSD router out of the configuration
above.

Now, the netgear router works fine, and my freebsd router gets online
no problem. However, when I plug my wireless linksys router into the
freebsd router (I have two linksys lne100tx NICs in the freebsd box,
dc0 goes to internet, dc1 goes to internal network), the wireless
router gets a DHCP lease from the freebsd router and everything looks
good, however the linux workstation cannot get out to the internet. I
can ping the wireless router it is connect to and access the setup
page via HTTP, i can ping the freebsd router, and i can ping the
netgear router, only I cannot access the netgear routers setup page
via HTTP (Something I could do when the freebsd router is out of the
loop) and i cannot ping anything beyond the netgear router.

To test, I took out the wireless router and connected the linux
workstation directly to the freebsd router and tried to get a dhcp
lease from it, only it would not get one. I am not sure how to
troubleshoot this part. I usually use the command dhcpcd eth0 on my
linux box to get a lease from my wireless router and this works no
problem, using the same command when connected to the freebsd router,
it just hung for about 2 or 3 minutes and then went back to the
command prompt, but did not bring eth0 up (i.e. ifconfig only showed
lo).

For this reason, I believe my problem is with my DHCP configuration on
the FreeBSD router. Could be something else I guess, because my
wireless router gets a lease from it no problem, only i still can't
get online. It just seems strange that my Linux box doesn't get a
lease when I hook it straight into the freebsd router but it gets a
lease fine from the wireless router.

Here is my dhcpd.conf :
--------------begin dhcpd.conf-----------------------
# dhcpd.conf

option domain-name-servers 151.201.0.38,199.45.32.43;

default-lease-time 3600;
max-lease-time 86400;

# If this DHCP server is the official DHCP server for the local
# network, the authoritative directive should be uncommented.
#authoritative;

# ad-hoc DNS update scheme - set to "none" to disable dynamic DNS
updates.
ddns-update-style none;


subnet 192.168.2.0 netmask 255.255.255.0 {
range 192.168.2.2 192.168.2.10;
option routers 192.168.2.1;
}
---------------------end dhcpd.conf---------------------------



here is my rc.conf:
---------------------begin rc.conf----------------------------

# -- sysinstall generated deltas -- # Sun May 23 03:08:18 2004
# Created: Sun May 23 03:08:18 2004
# Enable network daemons for user convenience.
# Please make all changes to this file, not to /etc/defaults/rc.conf.
# This file now contains just the overrides from
/etc/defaults/rc.conf.
gateway_enable="YES"
hostname="chatsuba"
ifconfig_dc0="DHCP"
ifconfig_dc1="inet 192.168.2.1 netmask 255.255.255.0 broadcast
192.168.2.255"
dhcpd_enable="YES"
sshd_enable="YES"
usbd_enable="YES"

---------------------end rc.conf--------------------------------



the output of ifconfig (dc0 is to the internet, dc1 is to internal
network):

--------------begin ifconfig output------------------------------

dc0: flags=8843 mtu 1500
inet6 fe80::203:6dff:fe14:e036%dc0 prefixlen 64 scopeid 0x1
inet 192.168.0.2 netmask 0xffffff00 broadcast 192.168.0.255
ether 00:03:6d:14:e0:36
media: Ethernet autoselect (100baseTX )
status: active
dc1: flags=8843 mtu 1500
inet 192.168.2.1 netmask 0xffffff00 broadcast 192.168.2.255
inet6 fe80::203:6dff:fe00:1ba9%dc1 prefixlen 64 scopeid 0x2
ether 00:03:6d:00:1b:a9
media: Ethernet autoselect (100baseTX )
status: active
plip0: flags=8810 mtu 1500
lo0: flags=8049 mtu 16384
inet 127.0.0.1 netmask 0xff000000
inet6 ::1 prefixlen 128
inet6 fe80::1%lo0 prefixlen 64 scopeid 0x4

---------------------end ifconfig output------------------------------




and finally output of netstat -rn on the freebsd router
netstat -r was run after a lease was obtained by the wireless router
which was connected at dc1:

----------------------begin netstat -rn
output--------------------------
Routing tables

Internet:
Destination Gateway Flags Refs Use Netif
Expire
default 192.168.0.1 UGS 0 27 dc0
127.0.0.1 127.0.0.1 UH 1 0 lo0
192.168.0 link#1 UC 0 0 dc0
192.168.0.1 00:09:5b:11:0b:1e UHLW 1 5 dc0
939
192.168.0.2 127.0.0.1 UGHS 0 0 lo0
192.168.2 link#2 UC 0 0 dc1
192.168.2.10 00:0c:41:71:58:1d UHLW 0 6 dc1
998

Internet6:
Destination Gateway Flags
Netif Expire
::1 ::1 UH
lo0
fe80::%dc0/64 link#1 UC
dc0
fe80::203:6dff:fe14:e036%dc0 00:03:6d:14:e0:36 UHL
lo0
fe80::%dc1/64 link#2 UC
dc1
fe80::203:6dff:fe00:1ba9%dc1 00:03:6d:00:1b:a9 UHL
lo0
fe80::%lo0/64 fe80::1%lo0 U
lo0
fe80::1%lo0 link#4 UHL
lo0
ff01::/32 ::1 U
lo0
ff02::%dc0/32 link#1 UC
dc0
ff02::%dc1/32 link#2 UC
dc1
ff02::%lo0/32 ::1 UC
lo0

-----------------------end netstat -rn
output----------------------------------



My wireless router likes to be 192.168.1.1 on the linux workstation
side, which is why i gave 192.168.2.1 to dc1 on my freebsd router.
Seems to be a little backwards (since the netgear is 192.168.0.1) but
I don't think it should matter as long as there are no conflicts which
there are not.

I have been using variety of unix flavored OSes for awhile now,
however I am very new to routing and network design. I think I gave
most of the pertinant information, let me know if you need anything
else and I will post it. I appreciate any help you may be able to
give.

Doug.