You can use roaring penguin or build it into the kernel.
I had one setup on the boat for a while. It was a piece of cake with roaring penguin.
just ran the setup program. adsl-setup
after the guy finally got his stuff to work, he said we don't support linux. I said if you just give me a username and password you won't have to.
I entered in the username and password he gave me
then ran the adsl-start command
I saw the modem light blink a couple of time and it was connected.
the software now is probably easier than that but I have not used dsl for a year.
Only thing to be aware of is that you need to clamp MSS or else the clients on the inside will need to have the mtu set to a lower number than the default 1500.
1452 is a good number
adsl is running at 1492.
clamping is probably default, however this is using packet mangling at the server so it loads the server and prevents vpn from working.
there are reg scripts and programs for setting up windows clients if you can do that.
for linux use
ifconfig eth0 mtu 1452
to set it, you do not need to set it on the server
go to dslreports.com
run this from the client inside to check for the best settings and also to get the tools to set mtu and tcp window size
it will probably tell you to set mtu to 1492, but for clients use 1452, you can set the servers internal interface to 1492 if you want, but that requires modifying the clients. the internet interface is handled by rp-pppoe
http://www.dslreports.com/linequality
the best option is probably both
setup the server to do clamping, and setup the clients to 1452
the clients will never send a packet bigger than 1452 so the clamping will not be used.
However if a new client comes along and you do not want to modify their machine there large packets will be clamped by the server.
Again, I would leave the server internal interface on 1500 if you are not modifying all clients or some things will not get through.