Home page


Email me
THIS PAGE is basically an extended version of those little footers which many sites carry on their home pages -- 'Powered by Linux', 'Microsoft BackOffice(TM)' and so on. Despite what Microsoft try and tell you, you always surmise there was a bit more to it than that, and this page is an attempt to explain what it was I had to do to bring www.iota.co.uk, the Web site of the company I used to work for, and its allies on other IP port numbers, to the seamless quality broadcasting you see today.
The tone of this page varies fairly randomly between things I've done because I didn't know any better, and things I've done which were so compellingly the Right Thing that I'll not merely recommend but instruct that you do the same thing if in anything like my situation!

I Built a Linux Internet Server With My Bare Hands

IOTA SOFTWARE Limited have got a Web site. Yes, this is obvious to you already if you've followed that link, but what I'd like to dwell on is what this leads you to assume about Iota Software Limited. Many of you (this is ignoring the uncomfortable possibility that only my mates will ever, ever, read this page) will thus be assuming that somewhere inside Iota is someone whose thought processes communicate in TCP/IP and who speaks English only through a special gateway daemon; who can't open his or her mouth without speaking Great Wisdom about Unix networking just out of habit; who is, in a word, comfortable with this whole Internet server business.
Well, there wasn't. There was only me. I did a degree in Computer Science, but unless you have done, too, there's no way you can appreciate how little use that is. Yes, there had been lectures about Unix, but I spent several of them doing the Telegraph crossword and almost all the others asleep -- sometimes still in bed, but not infrequently actually in the lecture hall. I'm sure I was once taught what zombie processes were, but I never bothered taking it in, and now I'm a Unix system administrator the things just stare at me reproachfully (as, I suppose, zombies are meant to) from the ps aux listing, as if they're trying to shame me into recognising that intimate knowledge of the Unix process model is a more important Life Skill than the ability to do cryptic crosswords.
I don't agree with them that it is, though. I'm a quick learner and a good guesser, which two skills can substitute for many others: enough others, in fact, that I was able to goad and levitate an Internet server (or, in a piece of jargon I saw at the BETT show, really took to and am trying to promote, provide a large scale telepresence) without ever, at any stage, really having the foggiest.

The hardware

Iota Software Limited have a 64kbps leased-line connection through Demon Internet. This was, we discovered after careful investigation, the cheapest leased-line solution the UK had to offer, but it's still pretty expensive if you ask me. It's 500 per month. Connection costs are linear with bandwidth for really quite a long way, despite the fact that the genuine excess cost to BT of providing, say, a 256kbps line as opposed to a 64kbps one must be almost precisely zero.
What we get for this is a British Telecom Kilostream connection, which is BT's 64kbps digital point-to-point service, that goes from the storeroom ("the underworld") at Iota House to Demon Internet's headquarters in London. There's a box on the wall in the underworld which looks just like an ordinary BT small plastic wallbox such as domestic phones use -- except for the label which says "Circuit ID:" and some tortuous number and "Destination: London".
Plugged into this is a box the size of a thickish hardback book which says BT on the front and is a Line Termination Unit, or LTU. This has five LEDs on the front, one of which is lit during normal use, and two connectors on the back. Neither connector is labelled, but it turns out the 15-pin D is an X.21 port. X.21 is a fast serial port standard (able, in fact, to go at 2Mbps, not just the 64kbps at which we're using it). We don't use the other connector, so I hope it's not important.
Plugged into the LTU, via the X.21 port, is another box about the same size, which we bought from Netland and is a router and says ACC Danube on the front. This is one of the most expensive electronic devices per pound weight that I've ever seen, and is well up there in the charts of number of configuration options per pound weight, too. It has two LEDs on the front; in normal use one is steadily lit and the other is flashing. It has a bunch of LEDs on the back, too. Also on the back is an X.21 port (obviously); a conventional, 9600bps serial port (with an RJ45 connector, of all things, and marked "Console"); and a 10Base-T Ethernet port. The router performs the task of converting incoming IP packets on Ethernet into PPP going out over the X.21 line, and vice versa.
Though I've said I built this site with my bare hands, I have to say at this point that I couldn't get the router to work for the life of me, and had to make substantial use of Demon's technical support line. (In case anyone else gets in the same boat I was in, I'll explain: I was doing everything I could and it was blankly refusing to work. The "display physical port table" command on the router told me that WAN1, the X.21 port, had "Admin Status: Up" but "Operational Status: Down". The problem, Demon discovered, was something called LQM or Line Quality Management, which occasionally takes it into its head that the line has no quality whatsoever and determines that its maximum safe bandwidth is zero bits per second.)
Plugged into the router is talisker itself, our Internet server machine. There was some debate as we were getting our connection sorted out as to whether a Pentium/133 was up to the job, or whether we should spend the extra on a Pentium/150 or 166. This dilemma was solved in the end when we noticed that Stu's PC wasn't really being used for anything, and it duly got upgraded from Windows NT to Linux for use as our Internet server. And was Stu's machine a 133 or a 166MHz Pentium? Er, well, no, really.
It's a 486DX2/66. It's got 20Mb of RAM, a 420Mb IDE hard disc (motherboard IDE), and a SoundBlaster card with a good ol' Panasonic CR562 CD-ROM. It's also, crucially, got two network cards in it: one is connected to the router via a crossover-wired UTP cable (rather than using a hub), and the other is connected to Iota's internal 10Base-2 backbone.

Note I have the nagging worry that some of this baroque chain of conversion boxes is in fact unnecessary. If there was such a thing as an X.21 serial port card for ISA PCs, we could surely dispense with the router altogether -- and such a card could safely be very expensive and still be cheaper than a router. A search on Alta Vista for X.21 and Linux shows up several -- for instance, this one.

Another note The underworld now contains:

  • One steady orange LED (the LTU)
  • One steady and one constantly flashing green LEDs (the router)
  • One steady orange and one sporadic green LEDs (talisker)
  • One steady orange and one steady green LED (our internal fileserver)
  • One steady red and eight sporadic green LEDs (an internal 10Base-T hub)
  • Two steady green LEDs (Num Lock on the fileserver's and talisker's keyboards)
  • Two steady and five sporadic green LEDs on the back of the router, which you can't see directly but which add to the ambience.
As Stu remarked, it looks almost like a real computer room in there now. All we need is a big old reel to reel tape drive for the full 1970s Hollywood thriller effect. The fileserver has got a QIC tape drive, but that's not the same thing at all. Are there, I wonder, any interior design companies selling large defunct IBM tape drives?

The software

The Linux system I started with was Slackware 2.1, which I got from the CD-ROM inside Que's book "Using Linux Special Edition: The Most Complete Reference". More complete than others it may be, but it's certainly not totally complete, which is why I ended up buying a couple of other books too. In particular, I ended up buying O'Reilly Associates' book "Linux Network Administrator's Guide", which has been a very present help in trouble. The text of LNAG is also available online as part of the Linux Documentation Project, but if your system is working well enough for you to groove off and find LDP Web sites, then you don't need the book at that point anyway. And besides, it's almost worth the cover price just for the woodcut reproduced at the top of the chapter "Managing Usenet News".
The kernel on talisker is version 1.1.59, which is not the latest by some margin, but seems to do the job. During the Slackware installation process, I'd told it I didn't need SLIP support, so the installer didn't configure it -- but as I had an SBPCD CD-ROM, I needed to install a Christmas-tree, all-options-on kernel, including a lot of SLIP code which would cause the machine to hang when booting. I got round this by booting Linux from a floppy -- the boot message says something like "In a pinch, you can mount your filesystem with a command like root=/dev/hda1", and I was in a pinch, so I did just that. Once into the system, I then recompiled the kernel (which is an activity nothing like as difficult as it sounds) with SBPCD but no SLIP, and since then it's been fine.
The kernel is compiled with packet forwarding switched off. Zero tolerance for crime! This means, of course, I have to run daemons for each protocol which needs to cross the firewall, but this only comprises Web and news and maybe one day RealAudio (SMTP mail gets as far as the firewall and then stops, continuing its journeys by POP3 or NFS) -- it's not a great hardship. For this to work perfectly, all the machines inside Iota should really have RFC 1597 IP addresses. They don't, but the Class C network they do use is widely rumoured to be unallocated anyway, and even if it is allocated there is no possibility of harm being done to us by it -- the firewall's two Ethernet cards and its static routing table ensure that no sensible conversation can occur between the server and any outside machine bearing those addresses. All it would mean is that we wouldn't be able to access any Web or other servers on those machines.
(Of course, any theoretical system with one Ethernet card and one X.21 serial port card set up for PPP could be configured in an identical fashion.)
Setting up DNS was probably the hardest software task in configuring the server. All I can suggest is that you stick like glue to the example files in LNAG -- not the example files in the Slackware distribution. No, you don't need a DOMAIN line in /etc/named.conf. Yes, you do need an NS record. Check every damn thing you can using nslookup, then get a friend at a nearby university to check that your site appears kosher to them, too. I'd mistakenly used a hostname instead of a FQDN (or vice versa, I can't remember) once in the DNS configuration files, and discovered that everywhere in the world my IP address resolved not to talisker.iota.co.uk but talisker.50.217.194.in-addr.arpa -- it was so embarrassing.
We currently use CERN's cacheing, proxying HTTP server daemon, version 3.0 -- though I may one day demote this to proxy-only duties, and deploy Spinner or Apache as the externally visible server. I get it to log proxy use and "real" use into separate log files; every midnight it processes the "real" log file with Analog 1.9b3, and the proxy log file with process_proxy, a program I wrote myself which just adds up per-client, per-day statistics and spits out a nice HTML page where it's all in a <table>.
For email, the server runs Smail 3.1.29, configured to use post.demon.co.uk as an SMTP smart-host. Inside Iota, everyone uses Acorn's (unreleased) !Email program for RiscOS, except for Allison (the only employee with a PC but no Acorn) who uses Eudora Light. !Email expects to find a user's mail intray in /home/<user>/Mail/Intray, and it was easy to configure Smail to put it there; Eudora, on the other hand, uses POP3, and the Slackware in.pop3d expects, quite reasonably, to find the intray in /var/mail/spool/<user>. Sorting this out meant finding the source of in.pop3d on the Slackware CD and recompiling it with the non-standard location in. Running !Email also means we need to run a program called m.send every five minutes from cron, but if you use !Email you probably already know about m.send -- you almost certainly have the source of it somewhere on the Acorn Riscix box which you almost certainly have. It compiles under Linux with no problems.
Our Usenet news connection is something about which I can write with less certainty, as Demon's news service is, as I write this, completely shot. When it comes back up, though, what we'll be doing is using dnntpd as a proxying NNTP daemon to Demon's news server. Inside Iota we'll be using Microsoft Internet Explorer 2.0, or even ANT Marcel, to read news, and our server will be pretending really to be a news server, while in fact just asking Demon for messages on a one-by-one basis.

-- Peter Hartley, 15th March 1996

See also

Using Linux: Special Edition from Que (Warning: this is a nightmare site full of big gifs -- like, it's a nightmare over 64kbits, so, modem boys, you're in trouble). Probably the best first book on Linux. Still good value even if you've already used Unix (though maybe not if you've already sysadmin'd it). Despite some of the stuff it says on the cover, don't expect it to be your last book on Linux. Contained a CD with Slackware 2.1 with Linux 1.1.59 when I bought it; may by now have been updated to Slackware 3.0/Linux 1.2.13. This book is nearly three inches thick (due mainly to being printed on very thick paper) and makes an ideal bookend in addition to its usefulness for content.  
The Linux Network Administrator's Guide, by Olaf Kirch, from O'Reilly Associates. This book is the dogs. No way would you be reading this without it. The pages on DNS are worth their weight in SIMMs.
CERN httpd cacheing, proxying Web server.

[Afterword: 21st February 1997: These days, you'd probably want to use Apache.]

The web site at www.webcompare.com, which cracks on about all the different Web servers there are. The information is so much newer than that in books that webcompare no longer list CERN httpd, which was all the go in the old days.
Analog Web server log analysis software, which is essential if, like me, you're really in this for fun but have to appear to justify it to some kind of Marketing department.
Smail mail transport software, which tolerates my rather gung-ho attitude to system administration far better than, say, sendmail would.
Dnntpd proxying Usenet news server. This program can actually do much cleverer stuff than we're using it for, too.
A perl script, wwwis, which takes an HTML file and inserts 'width=' and 'height=' directives into all its img tags (so that even if your page is full of tables, like this one is, the browser can begin rendering the text without waiting for the images to arrive and without reformatting when they do).
All Rites Reversed -- Copy What You Like