I don't see why you would need a router, unless your DSL provider gives you multiple external IP addresses. I have a home DSL network set up, sharing the internet with several Windows and Unix computers. My way of dealing with this is probably more for the Unix wannabe, than for a Windose-only person, but it was fun to set up:
[Internet]
|
| [FreeBSD NAT firewall]
| / \
| [Ethernet1] [Ethernet2: gateway]
| (external IP) (internal IP 192.168.1.1)
| / \
[DSL Modem] \
(xxx.xxx.xxx.xxx) [10-port hub]-----------------[any other hub]
external IP address / | \ \
[computer 1] | [computer 3] [any other computers]
|
[computer 2]
The beauty of this is that I can run any combination of networks and domains inside the firewall. Internally, at the moment I run a combination of Windows, FreeBSD, and Linux, but I can actually add any kind of computer that supports TCP/IP.
I have seen businesses have so many problems and headaches with Windows proxy setups that I am very thankful for FreeBSD. Any cheap old computer will do, even a 486, although it will take an hour or two to recompile the kernel for ipfw. Just slap two old 10-megabit network cards in (Your DSL connection is even slower than these so 100 MBit cards are useless), Then, FreeBSD provides a very simple and well-documented method to set one card as the external IP, and one as the internal IP. Then, you just set the internal IP as the gateway to your Windows computers (or any other computer). Give your internal machines IP addresses from the private range of 192.168.x.x or 10.x.x.x. In fact, if you want to run the FreeBSD DHCP daemon, then you can just boot your Windows machines with DHCP, and they will automatically have protected IP addresses. This method also protects your Windows machines from direct attack, since no one from the outside can directly ping the IP address of your Windows machines. You can also set up extra protection, with the FreeBSD firewall rules, such as disallowing port 139 (windows NetBIOS).
To set up your internal Windows network, just do what you would normally do, since it doesn't affect the FreeBSD firewall in any way.
This is actually what most of those commercial home firewalls run internally anyway. It's usually some cooked-up version of FreeBSD or Linux.
See the following links, if you are interested:
http://www.freebsd-howto.com/HOWTO/Ipfw-HOWTO
http://www.onlamp.com/pub/a/bsd/2001/04/25/FreeBSD_Basics.html