Set up NTL

The cable TV company NTL provides a broadband internet service through TV cables. This article explains how to configure a Linux box to access this service.

= Linux Support = NTL:home does not support Linux or Intranets. They will not penalise you if you are running Linux or connecting up an Intranet, but they won't be able to give you technical support. In fact, NTL:home's technical support seems to be limited to saying "switch off the set top box at the wall, wait half a minute, switch it back on again, and if it still doesn't work try re-installing Windows."

= Preliminaries = The NTL:home receiver has an RJ45 port on the back panel that can be connected to a standard network card. IP addresses are allocated by DHCP; but the lease seems to be fairly long-term (In the author's experience, only one change in nearly two years' use, and this was due to a power failure; my configuration is set to renew the lease every 3 hours. Dynamic DNS should work.)

= Brokennesses with NTL:home = The service is tied to the MAC address of the ethernet card plugged into the set top box. NTL:home web space does not have any kind of scripting support. NTL:home does not provide virtually-hosted e-mail. This means you will need to get an account with a real ISP if you want to do more than look at other people's web sites and delete spam from your inbox. I recommend UKLinux -- you get true virtual hosting, perl and PHP, MySQL or postgreSQL, procmail, SpamAssassin, an Envelope-To: header, and their fees are very reasonable. You can still use the broken NTL:home web space to store photos, soundbites or something that can be downloaded verbatim.

= DHCP = There are several DHCP clients available, and your distribution may already include one. In the author's experience, pump does not work for anything past the initial provisioning stage; dhcpcd works fine.

Configure your chosen DHCP client, cross your fingers and plug your network cable into your set top box. If all goes well, when you type /ifconfig you should see that you have a 10.x.x.x IP address bound to the network card.

= Provisioning = When you first connect to the network, you need to go to a provisioning server to register yourself using the details in your welcome letter (the Windows installation CD does this for you). You will have to call the helpline to obtain the IP addresses of the provisioning servers, which will be unroutable addresses starting with 10; and (unless you have a working BIND)  the nameservers, which will be real, routable addresses. It's a bit of an unusual request, and you'll probably be kept waiting to speak to some arch-wizard.

Once you have an address for a provisioning server (try 80.5.178.26), connect to it using a web browser and fill in the form. A text-based browser should work fine for this.

= After Provisioning = All you probably need to do is send a SIGHUP to your DHCP client, in order to make it check for a new IP address; and edit /etc/resolv.conf to install the nameserver addresses. You should now be good to go, with a routable IP address, and you should be able to ping boxes.

= Sharing a Connection = It is possible to share a connection. You will need two ethernet cards, one for the Internet (broadband) and one for the Intranet (LAN). Just set it up as you would any NAT firewall/router.

Of course, you could also just dive straight in and buy a DSL gateway/router instead of another network card; modern routers could provide these benefits:
 * using the firewall on the router would protect all your networked computers at the same time
 * NAT provided by the router, would provide your local computers with additional security
 * all the devices on your network have discrete internet access
 * one device isn't slowed down, because it's acting as a router for another
 * you can normally connect more than just one other device (Say, a laptop as well as a games machine; plus your Linux box of course.)
 * a router could also provide WiFi support

I opted for the DSL gateway/router setup for my NTL-home connection and it works fine.

= See also =
 * connecting to the net