It's already been pointed out that it is questionable whether this is legal
under your acceptable use contract with the cable modem service provider, so
I won't beat that dead horse.

I will assume that you have some sort of cable modem/router combo that
performs NAT (network address tranlation) from a single address (that of the
router itself, provided by your service provider via DHCP) to an internal
private network, such as 10.0.0.0/8, which could have many computers on it.
To make your DNS server available to the world, you need to set up the NAT
tables to send port 53 udp & tcp packets to your DNS server at its internal
address, e.g. 10.0.0.2.  Then you will also need to set up NAT so that port
80 tcp is sent to your web server (and port 443 tcp if you want to serve up
secure pages).  I don't think you could have multiple addressable web
servers available via ordinary NAT.  To do that, you would have to have some
stateful packet inspecting stuff going on that understood the http protocol
and could check the url requested.  Such software probably exists somewhere,
but I doubt there's much available that would be packaged in a format that
someone who doesn't know what they're doing could deal with.

However, if all you want to do is make your personal homepage available to
the Internet, forget about all this DNS stuff.  Use NAT to route port 80 tcp
to your web server, and access it via whatever ip you get on your cable
modem.  If you've registered a domain name, you could even have
www.mydomain.net resolve to this ip address.  Of course, you would have to
use a registrar that provides DNS to you, as someone else has already
mentioned in this thread.  In any case, don't turn your cable modem off for
more than a few minutes at a time (i.e. long enough to reset it when
needed), and you aren't likely to lose your address, since DHCP should let
you keep it as long as you keep renewing your license.

> I have a DSL Internet connection via cable modem.  How can I run
> a DNS server on my Linux machine that will replicate itself from
> the DNS of my ISP and be contactable by other DNS servers?  In
> other words, how can I directly host websites on my machines
> which will be contactable from outside?
>
> Regards