Home Network Programs

Now that we have seen the physical layout of a home network, lets discuss the programs which are used to make the hardware work correctly. Some of these are required programs, and some are recommended programs. In the description I will indicate which is which.

Software for the Server

The Linux server is the heart of the system. It allows common storage of information and file sharing. It can also server as an information resource to the network as well as a print server.

Here is a list of the programs I think are important or useful on this server.

SAMBA

Samba is a program which supports the SMB protocol. OK, what is SMB? Here is their explaination:

       The very short answer is that it is the protocol by which a lot of
       PC-related machines share files and printers and other informatiuon
       such as lists of available files and printers. Operating systems that
       support this natively include Windows NT, OS/2, and Linux and add on
       packages that achieve the same thing are available for DOS, Windows,
       VMS, Unix of all kinds, MVS, and more. Apple Macs and some Web Browsers
       can speak this protocol as well.

In short samba is what allows the Linux server to work as a file and print server to the Windows PCs.


Sendmail

Sendmail is a common mail server which comes with most Linux systems. By configuring it on the Linux Server, you can have an unlimited number of email boxes for your home or buisiness.

What we will do is configure sendmail for the users on the system. Then we will discuss how to setup the connection through a registered domain name. This allows you to have any number of email addresses you want, legally, with a dialup or cable modem account.


Print Server

The print server program under Linux can allow you to use one printer connected to the Server instead of a printer connected to every computer in the house. This can even be a remote printer connected through the network. For example I have 3 boys and a wife, all of whom would normally need a printer. But rather than buy 5 printers, I can buy on and have all of them use that one.

Apache

Apache is not a required program on the Linux server. I find it an easy way of sharing information I think is useful to the users on the system. A lot of businesses are using web servers to distribute information from phone lists to Insurance form to their employees.

As an example I use the server to explain how some the services are configured on my network. I also use it to provide interesting web links for my children. Finally it is an easy way of keeping a record of how to perform some computer operations for my wife, who forgets how to do some operations she doesn’t do too often. I find it easier to write it down and put it on a notes page than remind her at 11 PM when she has forgotten again.


Software for the Firewall

One area where Linux is competting directly with the commerical vendors is in the area of Firewall software. This is not difficult to understand, since most of the major firewall designed were originally implemented in Unix. Besides, since Linux is Open Source, a person who want to create a firewall has access to all the tools needed.

I have had exerience with two Firewall programs, Smoothwall and IPcop . Either of these programs will do a good job of a firewall on an older computer. If like me, you have an old 486, or 386 available, you can convert it to a good firewall.

This is not to say that there are not routers which contain reasonable firewalls at a decient price. I just like to know that if the firewall is broken, I can fix it myself. Also I believe in using what I have instead of buying more equipment. In the end, the choice is up to you. I guess I like Linux, so I use it.

Decisions, Decisions, Decisions

One of the issues which comes up with most systems, is the need to make lots of choices. Defining the choices can be difficult prior to installing the system. But since this is a talk, I will try to state the decisions made and we can debate them if desired.

  • External Modem choosen. Since all the external modems, must by definition be complete modems, instead of the new Windows Only modems, I felt the cost was justified. In addition an external modem is easier to configure, and replace if damaged.
  • Separate Firewall. There are routers which include firewalls today at reasonable prices. But I felt it would be better to install an Open Source firewall since it can be reviewed by people outside the original authors. Since it is a standalone box, if it were compromized, it would be easy to reinstall to remove any trap doors.
  • Connecting the Cable modem via network cable instead of USB. The support for Ethernet cards is better than USB support in Linux. The control over the ethernet configuration is superior to that of USB devices.
  • Fixed IP addresses instead of DHCP. Since I don’t expect to be adding or removing computers ofter in the environment, it seemed more logical to give each an IP address and have done with it. DHCP, requires more configuration, and lookup facilities for name resolution than a hosts file.
  • Plain Text Passwords for Samba. Although Samba includes the ability to work with encripted passwords, it did not seen necessary inside a house. I don’t expect to worry about my sons using packet sniffers for passwords on the network.
  • No DNS or Wins configured. This is a simple network configuration so internal to the network there is not a lot of need for lookups. A simple host file will server for lookups within the network. The firewall will provide DNS lookups for the Internet.

Lets look at the Numbers and Letters and Users

In any network situation we need to understand a little about the protocols that are used to connect the computers. In the case of Linux and Windows, we are talking about TCP/IP (Transmission Control Protocol/Internet Protocol)

In a nutshell we are going to choose names and addresses for each computer on the network. The TCP/IP protocol was designed with certain blocks of addresses undefined. This means that these addresses are not routed if they show up on the internet. In layman’s terms this means that some addresses were reserved for use by people like us. They are available for someone to use for their own purposes, and ignored by the internet.

The block of addresses I am going to use go from 192.168.1.0 to 192.168.1.255. This block of IP addresses is one of those reserved sets. Since it is reserved, we will be using it to configure the computers on our network. For all the computers we will be using the netmask of 255.255.255.0

Name IP Address Description
Samson 192.168.1.254 Firewall Computer
Wizard 192.168.1.1 Linux Server
Apollo 192.168.1.5 Linux Workstation
Demeter 192.168.1.7 Windows Workstation

We will use this list to configure the networking on each computer so they can be refered to by Name, instead of IP address. For more information on IP addresses let me recomment Introduction to IP from the Rute book.

What about users on the system? For this tutorial, I will assume the following users and passwords are the people in your home. I am not including the root user since he/she needs to already exist to install Linux.

Name Login Passwords Shell Home
Frank Smith frank magic /bin/bash /home/frank
Sally Smith sally boat /bin/bash /home/sally
Tom Smith tom fish /bin/bash /home/tom

Finally lets chose the domain name “home.org”. Since you are not on the internet with this name, it can be anything you choose. We will use the same name for the samba work group. If in the future you want to have your own mail server, you might consider registering a domain name. We can discuss this later though. For now lets just just this default.

Roadmap to Success

I am a strong believer in designing something before you implement it. I know that takes some of the fun out of working on computers, but it can save you a great deal of grief later. Planning what you are going to do first allows you to build a road map of the work in advance. It also allows you to create documentation of how your system is configured, BEFORE you forget what you did. Believe me, lots of people forget how something was configured once they have moved on to other things.

Here are the steps I am planning on implementing to configure our network structure.

  1. Select the configuration information to be used for the system. Get all the assumptions taken care of before starting the configuration.
  2. Configure the Linux Server for networking. Set the IP address, the netmask, the host name, the domain name, the users, the name entries in the host file, and the Samba server.
  3. Configure the firewall and check that we can see and admin it from the Server.
  4. Configure the Windows workstation to talk to the Linux Server. Setup up TCP/IP, gateway, computer name, workgroup name, and the host file. Since we will be using plain text passwords, we will make a modification to the Registry.
  5. Configure the Linux workstation to talk to the Linux Server. Configure the IP address, the netmask, the host name, the domain name, and the name entries in the host file.
  6. Celebrate!!
  7. Plan for sharing the resources with your users. This will be discussed once we get the network and internet connections working. It can include, local Sendmail, Notes and instructions for users, Remote control of Lights and Alarm system in the house, Music Sharing between computers and your HiFi system, and Remote backup of the network.

VI for the novice

I promised that use of VI would be minimal, but this will still require some knowledge. Lets look at a quick edit of a file using VI. We will make a change in the following text using the VI editor on Linux.

     # default: on
     # description: The telnet server serves telnet sessions; it uses \
     #  unencrypted username/password pairs for authentication.
     service telnet
     {
             flags              = REUSE
             socket_type        = stream        
             wait               = no
             user               = root
             server             = /usr/sbin/in.telnetd
             log_on_failure     += USERID
             disable            = no
     }

This file comes from /etc/xinetd.d/telnet on my linux system. This is a typical configuration file for the xinetd program. We are going to change the disable option from no to yes . We will then save the file.

One piece of information before we start. Remember that vi has two modes. Insert mode and command mode. By default you will start in command mode. This is the mode where keypresses move you around on the window, or perform certain commands. When you are in insert mode, the characters you type are inserted into the file. When in doubt which mode you are in, press the <ESC> key to change back to command mode.

OK, enough theory, lets make the change. Here are the steps as done from the command line.

  1. Open the file in vi: vi /etc/xinetd.d/telnet
  2. Move to the text to change: Use the arrow key to move to the word no in the line “disable = no”
  3. Delete the work no: With the cursor on the “n” of no press the x key twice.
  4. Insert yes where it said no: press the i key to enter insert mode, type “yes”, and press the <ESC> key to exit insert mode.
  5. Save your work: Type “:w” followed by <Enter>
  6. Exit vi: Type “:q” followed by <Enter>

Congradulations, you just use VI for editing. Ok, so this wasn’t the most challenging editing job. The idea was you just used the dredded vi to edit a file. Not so difficult was it. For those of you feeling brave, try the command vimtutor to tryout a tutorial on VIM. It might be enlightening.

Now to be honest, I normally use Emacs for most of my editing. But vi is a quick editor with that ability to make changes on every Unix/Linux system you will encounter. Using an editor for configuration is slightly old fashoned, as there are getting to be graphical tools for this work. But the editor approach allows you to appreciate the scripting ability of Linux.



Written by John F. Moore

Last Revised: Wed Oct 18 11:01:35 EDT 2017

Creative Commons License
This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 3.0 Unported License.
HTML5 Powered with CSS3 / Styling, and Semantics