So I want a domain, but I don't want to pay for it so can I just register a name on a BIND server (self hosted) to do it?? I want to do it but I don't want to necessarily pay for it, I just want to create a free site that works well enough.
I don't think so. You can run your own DNS server but you'd still have to register a domain and point it to your server.
Actually, I may be wrong. But you will need to have a static IP
http://www.boutell.com/newfaq/creating/domainathome.html
You could set up an intranet with your own dns for internal use to have end users look to the bind server before leaving the network. And yes a static ip would be needed.
Ok. So this answer is yes and no.
Just a quick background. Current domain names as you know them are controlled by ICANN, they have a list, other DNS servers take this list, this is how domains are looked up. But ICANN are not the only ones serving domains, there just the ones people "have to use" because government says so.
You can set up a BIND server and serve your own domains, but theres a catch.
1. You can either create your own top level domains as long as it doesnt exist in ICANN and you can use that and still get on the internet with traditional domains.
2. You can create your own tld that already exists .com for example, but you cannot use ICANN to navigate the net. That means no teksyndicate.com or google.com etc. (ok this isnt nessiserally true, but for this lets just say it is)
In both cases, only you and anyone that uses your BIND server as their DNS will be able to see and go to your domain, its will not be shared with any DNS server using ICANN only, it will not be able to be used by anyone who isnt using your DNS.
If all you want is a local domain for your home network that wont be used outside of your network, solution 1 is all you need. you just set up BIND to take DNS as normal, but have a zone serving your local network for your local domain name (as long as it isnt an ICANN tld)
--
Alternatively, theres a whole hidden web out there because most people only use ICANN as their default DNS.
So, a better solution would be to use something like opennic. Opennic combines ICANN domains with their own opennic domains.
current domains served by opennic (not including icann domains) are
.glue; .bbs; .dyn; .free; .fur; .geek; .gopher; .indy; .ing; .micro; .neo; .null; .oss; .oz; .parody; .pirate
Domains are free to register on these tlds.
But the same downsides apply, only people using opennic DNS servers can access domain names on these tlds. The up side is this is more than just you, and they have a number of DNS severs, they have plenty of domains, and even opennic specific search engines. They also have the advantage of their DNS servers being mostly anonymous with no logging, unlike most ICANN based DNS servers.
edit: lastly, if you need a domain that everyone can access without needing to change DNS servers. Just go buy an ICANN based domain. There cheap, you can literally pick money off the ground and have enough to renew a domain before it expires.