Previous Next Contents

13. Experimental and Developmental modules.

There are a number of people developing new features and modules for the Linux networking code. Some of these are in quite an advanced state (read working) and it is these that I intend to include in this section until they are standard release code, when they will be moved forward.

The AX25 section has been relocated into the HAM-HOWTO because it was fairly specific to Amateur Radio.

13.1 snmp agent.

There is an experimental snmp agent for linux, ported from the cmu-snmp source by Erik Schoenfelder, <schoenfr@ibr.cs.tu-bs.de>.

It is available from:

ftp.ibr.cs.tu-bs.de

/pub/local/cmu-snmp2.1.2l3-src.tar.gz

Please read the file called cmu-snmp2.1.2l3.README, as it contains information that you will need to know about the package.

This package provides a nearly complete MIB-II variable set. and parts of the host MIB. Setting of system group variables is provided. The private community string is settable in the config file.

nstat.tar.gz contains a formatter of the output from /proc/net/snmp called nstat.

You will need Linux v1.1.60 and libc v4.6.27 or higher to compile and run the agent.

13.2 Experimental Token Ring driver

An experimental Token Ring driver is being developed by Peter De Schrijver <stud11@cc4.kuleuven.ac.be>. His latest version, at the time of writing is available in the Linux 1.3.* kernel release kernels. For older kernel versions the driver patches are located at:

linux3.cc.kuleuven.ac.be

/pub/Linux/TokenRing/TokenRing.patch-1.2.0.gz

ftp.cs.kuleuven.ac.be

/pub/unix/linux/TokenRing.patch-1.1.64.gz

There are a number of patch files against various kernel versions. Just pick the one that suits your kernel.

Note also that there are versions of the network tools to suit Token Ring in the same directory at linux3.cc.kuleven.ac.be.

Most boards based on IBM's TROPIC chipset should work now. The following boards are known to be working with the driver :

Boards which use the TI chipset or busmastering DMA won't work with the current driver. However someone is working on a driver for the IBM busmaster adapters.

13.3 V.35 interface board

V.35 is a C.C.I.T.T. standard interface that provides a high speed balanced serial interface suitable for speeds up to about 2 Mbps. The use of differential pair balanced transmission allows the V.35 interface to support longer cables than can the more familiar V.24/RS232C type interface and higher data rates.

Internet Technologies International XNET-1

Matti Aarnio <mea@mea.utu.fi> represents Internet Technologies International. They have an 8 bit X.21 card available called the XNET-1 which will work for V.35 with an appropriate cable. You can obtain information on the card itself from:

Internet Technologies International OY,
Helsinki, Finland  <intec@digiw.fi>
Internet Technologies International OY (Ltd)
PO BOX 51
00641 Helsinki
FINLAND
Fax: +356-0-7523939

The driver for the card is available from ftp.funet.fi.

SDL Communications N2 card.

SDL Communications produce a variety of controller cards supporting V.35 for ISA based machines.

The beta release driver can be found at:

ftp.sdlcomm.com

/business/sdlcomm/n2/linux

For further information you can contact Rubin Dhillon at SDL Sales

13.4 Demand Dial SLIP/PPP package

Eric Schenk <schenk@cs.toronto.edu> has written a demand dial daemon that will work with either SLIP or PPP. It relies on you having a SLIP device configured which the daemon connects to via a pty. When your SLIP connection is not active all datagrams for non local hosts will be routed to this device and the daemon will detect them, when it receives a datagram it executes a script to activate your network link and then reroutes datagrams to that link.

The software is available at:

sunsite.unc.edu

/pub/Linux/system/Network/serial/diald-0.7.tar.gz

Note: You must configure your kernel so that it includes the SLIP driver, even if you only want to run PPP.

The included documentation describes how to install and configure the software.

13.5 ISDN support

There are various ISDN support efforts underway. The ones that I know of are:

3Com-Sonix PC/Arpeggio driver

Alan Cox has started a driver for the 3Com arpeggio ISDN card. It is currently capable of supporting Async PPP only.

sunsite.unc.edu

/pub/Linux/kernel/patches/network/sonix.tgz

DIEHL SCOM card

sunsite.unc.edu

/pub/Linux/kernel/patches/network/isdndrv-0.1.1.tar.gz

ICN ISDN and/or Teles ISDN card and/or Creatix AVM ISDN board

Fritz Elfert, Jan den Ouden and Thinking Objects have written a linux driver for the ICN ISDN card. Some of the documentation for this driver is in German. There seem to be various versions of this driver around that apparently support other ISDN cards, if you obtain one and it doesn't support your card take a look at another of the sites. You can obtain them from:

ftp.franken.de

/pub/isdn4linux/

or: ftp.gwdg.de

/pub/linux/misc/isdn4linux/

Euro-ISDN card ?

Matthias Urlichs <urlichs@smurf.noris.de> has developed some experimental Streams based ISDN support for Linux. The most recent version was for kernel version 1.3.* and is reported to work.

It is available at:

ftp.uni-stuttgart.de

/pub/systems/linux/isdn/ftp.noris.de/

Be warned, the documentation is in German and the code is designed to support the european ISDN network. Matthias is working on a english version of the documentation.

Combinet's Everyware 1000 ISDN card

Joel Katz <stimpson@panix.com> has developed a driver for Combinet's Everyware 1000 series of plug-in ISDN cards.

It is available from: sunsite.unc.edu

/pub/Linux/kernel/patches/network/combinet1000isdn-1.02.tar.gz

More information:

Harald Milz has put together a World Wide Web page for Linux ISDN support and it is available at Linux ISDN Web Page. A more generic site containing information about ISDN is available at Dan Kegel's ISDN home page.

13.6 System-V Streams

The LiS (Linux Streams) project has formed to develop and implement System-V Streams for Linux. They have a World Wide Web page at Linux Streams Web Page where the status of the project can be obtained and where you can locate contact information and test code.

13.7 ATM (Asynchronous Transfer Mode) support.

Werner Almesberger has put together a World Wide site on the topic of Linux support for ATM. It is available at lrcwww.epfl.ch. There is experimental software which supports raw ATM connections and some basic IP over ATM available at the pre-alpha stage and this can be obtained from the Web Site. The site contains a good deal of interesting information on ATM.

A mail list has been established to discuss ATM for Linux and you can subscribe by sending a mail message with the body subscribe linux-atm to: majordomo@vger.rutgers.edu

13.8 X.25 support.

Many people have enquired about X.25 support for Linux. There is some development work taking place but the apparently small community of people that are interested in it don't seem to have enough momentum to produce very quickly. If you are interested in X.25 support then you might volunteer some assistance to help accelerate the existing development effort. The only information that I have available on X.25 development efforts are a note on Alan Cox's webserver to say that someone has volunteered to do the job and the following World Wide Web site which provides information about two development efforts that seem to be making some progress:

X.25 for Linux is at: www.ping.be

13.9 Appletalk support.

If you have some Apple machines on your network that you'd like your linux machine to be able to share filesystems and printers with then the linux appletalk support is what you are after.

The following information was supplied mostly by Cees de Groot <cg@tricbbs.fn.sub.org who compiled it from his own experience with assistance from Dana Basken <dana@millenium.tiac.net> and others on the net.

Building the kernel with Appletalk DDP support

Alan Cox has developed some experimental and working support for the Apple Ethertalk specification. It is now a part of the later 1.2.* revision kernels and the new linux 1.3.* revision kernels so to build the kernel support for it you need only compile up a recent kernel, make sure you select the following configuration option:

#
# cd /usr/src/linux
# make config
 ...
 ...
    Appletalk DDP ? y
 ...
 ...
#

Building the Appletalk configuration tools and daemons.

You will need some additional software as the kernel support only provides enough to do basic networking, none of the higher layer protocols are implemented in the kernel.

Wesley Craig <netatalk@umich.edu represents a team called the Research Systems Unix Group at the University of Michigan and they have produced a package called netatalk which provides software that implements the Appletalk protocol stack and some useful utilities.

You can obtain it from:

University of Michigan

you will need at least version 1.3.3b2 as earlier versions did not support Linux.

To build and install that package something like:

# cd /usr/src
# tar xvfz .../netatalk
- You may want to edit the `Makefile' at this point, specifically to change
  the DESTDIR variable which defines where the files will be installed later.
  The default of /usr/local/atalk is fairly safe.
- You should then just have to make the software. My `uname' program wasn't
  in the /bin directory so I edited the Makefile to reflect this change too.
# make
- as root:
# make install

You should then end up with a whole range of new commands to play with.

Configuring the Appletalk software.

The first thing you need to do to make it all work is add the contents of the services.atalk file to your /etc/services file, just append it to the end of the file.

The next step is to create the appletalk configuration files in the /usr/local/atalk/etc directory (or wherever you installed the package).

The first file to create is the /usr/local/atalk/etc/Atalkd.conf file. To start this file needs only one line that gives the name of the network device that support the network that your Apple machines are on:

eth0

The Appletalk daemon program will add extra details after it is run.

Exporting a Linux filesystems via Appletalk.

You can export filesystems from your linux machine to the network so that Apple machine on the network can share them.

To do this you must configure the /usr/local/atalk/etc/AppleVolumes.system file.

Full details on how to do this and what the various options are can be found in the afpd man page.

A sample would look like:

/tmp Scratch
/home/ftp/pub Public

Which would export your /tmp filesystem as AppleShare Volume `Scratch' and your ftp public directory as AppleShare Volume `Public'. The volume names are not mandatory, the daemon will choose some for you, but it won't hurt to specify them anyway.

Sharing your Linux printer across Appletalk.

You can share your linux printer with your Apple machines quite simply. You need to run the papd program which is the Appletalk Printer Access Protocol Daemon. When you run this program it will accept requests from your Apple machines and spool the print job to your local line printer daemon for printing.

You need to edit the /usr/local/atalk/etc/papd.conf file to configure the daemon. The syntax of this file is the same as that of your usual /etc/printcap file. The name you give to the definition is registered with the Appletalk naming protocol, NBP.

A sample configuration might look like:

TricWriter:\
   :pr=lp:op=cg:

Which would make a printer named `TricWriter' available to your Appletalk network and all accepted jobs would be printed to the linux `lp' printer using lpd.

Starting the appletalk software.

Ok, you should now be ready to test this basic configuration. There is an rc file supplied with the netatalk package that should work ok for you, so all you should have to do is:

# /usr/local/atalk/etc/rc.atalk

and all should startup and run ok. You should see no error messages and the software will send messages to the console indicating each stage as it starts.

Testing the appletalk software.

To test that the software is functioning properly, go to one of your Apple machines, pull down the Apple menu, select the Chooser, click on AppleShare, and your Linux box should appear.

Caveats of the appletalk software.

13.10 IP_MASQUERADE - allow a number of hosts to pretend to be one.

If you are one of the many people who have some sort of local network at home, whether it be a couple of machine connected via a SLIP/plip/ppp link to each other, or a number of machines connected to a private ethernet network who also has a dial-up Internet connection then you have probably at one time or another wanted the machines not directly connected to be able to communicate with the Internet. This is normally achieved by getting a valid register IP network address for your local network and asking your Internet Service Provider to kindly provide a network route to your network connection instead of the single host route they were previously providing. Unfortunately many Internet Service Providers will ask you to provide a good deal more dollars for the privilege of better utilising the bandwidth of your connection and you probably don't much like that idea.

IP_MASQUERADING provides a clever solution to this problem by making all of the machines on your network look like one very active networked machine. It does this by performing real-time, on the fly address translations. Most of the code was authored by Pauline Middelink <middelin@polyware.iaf.nl>.

Ken Eaves <keves@eves.com provided most the information contained below so if you find the following helpful, thank Ken.

Obtaining the `masq' software.

The IP_Masquerade software currently comes as a patch to the later linux 1.2.* series kernels and a new version of the ipfw command. The ipfw program that comes with the net-tools software releases to configure it does not yet have the `masquerade' option built into it. The kernel you are using must support the ip_firewalling option for ip_masquerade to work.

The patch file is available from:

ftp.eves.com

/pub/masq

In this directory you will find patch files, new versions of the ipfw command and Ken's original Masquerade FAQ on which this text is based.

The patch file is called masq-patch.1.2.n, so you must retrieve it. The files ipfw and ipfw-for-1.3.10 are for kernel version 1.2.* and 1.3.10 respectively.

How do I install and compile the patch ?

Assuming you have the source to a recent 1.2.* version kernel installed in the /usr/src/linux directory you would do the following:

#
# cd /usr/src
# patch -p0 <.../masq-patch.1.2.n 2>patch.errs
- check the patch.errs file for the string `fail'. If you can't find
  it then the patch applied successfully. If you can find it then something
  may have gone wrong double check that you have the correct version of
  kernel source.
# cd /usr/src/linux
# make config
- You must answer `y' to:
  ...
  IP: forwarding/gatewaying (CONFIG_IP_FORWARD) [y]
  IP: firewalling (CONFIG_IP_FIREWALL) [y]
  IP: masquerading (ALPHA) [y]
  ...
- The rest of the options you should answer as you normally would.
# make dep
# make clean
- Build as you normally would, normally this would be:
# make zlilo
#

After making sure that you are actually running your newly built kernel you need only ensure that you have a working copy of the ipfw program. ipfw is normally installed in the /sbin so after testing the masquerade version you can simply copy it to /sbin/ipfw. This is all that is necessary to get the kernel support installed.

How do I configure the IP_MASQUERADE software ?

How you configure the IP_MASQUERADE function depends completely on how your network is built. The general idea is as follows: all of your local machine that you want to have access to the Internet must have their network default route pointing to your linux machine supporting IP_MASQUERADE. Secondly, you must have an entry in the linux firewall table that says that your local machines should be masqueraded.

To configure the IP-MASQUERADE function you use the ipfw command. The ipfw command is normally used to configure the Linux firewall facility and because your masquerading host is acting as a firewall of sorts ipfw has been modified to take on this additional function.

I'll present two example configurations that will probably cover most situations, if you have anything more complicated than these designs then you probably have the experience to work it out for yourself.

Two machines connected to each other by SLIP or ppp:

 .-------.             .-------.
 |       |    SLIP     | linux |   SLIP/ppp
 | local |-----//------| masq  |-----//-------> To ISP
 |       |             | svr   |
 ._______.             ._______.

         ^            ^         ^
         |            |         |
    192.168.0.2   192.168.0.1  dynamically assigned

Your /etc/rc.d/rc.inet1 file would have something like the following appended:

 ...
 ...
# Allow machine 192.168.0.2 to be masqueraded to everybody
ipfw a m all from 192.168.0.2/32 to 0.0.0.0/0
 ...
 ...

Note the iii.iii.iii.iii/nn syntax. You might wonder what the /nn means and how you calculate it. This syntax is a means of encoding both an ip address and a netmask. What this syntax says is all addresses in which the first nn bits match those of iii.iii.iii.iii. The above example is for a single host, so all bits must match, since there are 32 bits in an IP address the syntax is /32.

A private ethernet network of machines sharing a single internet link:

 .-------.    _
 |       | .2 |
 | local |----|
 |       |    | <-- Ethernet lan
 ._______.    |     192.168.0.0 netmask 255.255.255.0
              |
              |
 .-------.    |        .-------.
 |       | .3 |     .1 | linux |   SLIP/ppp
 | local |----|--------| masq  |-----//-------> To ISP
 |       |    |        | svr   |
 ._______.    -        ._______.

                                ^
                                |
                               dynamically assigned

For this configuration you have a single entry that describes the whole network, so you would use something like:

 ...
 ...
# Allow all machines on network 192.168.0.0 to be masqueraded to everybody
ipfw a m all from 192.168.0.2/24 to 0.0.0.0/0
 ...
 ...

Again note the relationship between the netmask (255.255.255.0) and the ipfw syntax. A class C network (255.255.255.0) has 24 bits in its netmask.

To make the job a little easier for you, here is a table of common network masks against matching bits:

netmask             ipfw
---------------     ----
255.0.0.0           /8
255.255.0.0.0       /16
255.255.255.0       /24
255.255.255.128     /25
255.255.255.192     /26
255.255.255.224     /27
255.255.255.240     /28
255.255.255.248     /29
255.255.255.255     /32

Where is IP_MASQUERADE being discussed ?

There was a support mailing list at masq@eves.com. Unfortunately it has now closed down.

13.11 IPALIAS - multiple address per interface.

If you are running a world wide web server and want to supports multiple virtual servers, or your network support multiple subnets on the same piece of wire then you'll need to be able to have your machine respond to more than one address per interface.

A facility called ipalias allows you to configure more than one address per interface.

Robert Sanders <rsanders@mindspring.com> has written linux support for this feature as patches against version 1.2.* kernels and Juan Jose Ciarlante <jjciarla@raiz.uncu.edu.ar> has developed a brand new and very sophisticated implementation for version 1.3.50++ kernels.

Support for 1.2.* kernels

You can obtain the patch from:

ftp.procyon.com

/pub/linux/ipalias

To install it you need the 1.2.1 kernel source installed and then:

# cd /usr/src/linux
# patch -p1 .../alias-patch-1.2.1-v1
# make config
# make dep; make clean; make zlilo

You will also need to get the alias-net-tools.tar.gz file as it contains new versions of the ifconfig and netstat commands.

Configuring ip aliases for 1.2.*.

To configure an ip alias use the new ifconfig command as follows:

# ifconfig eth0 alias 198.71.200.5

This presumes that you already have the device configured to operate on your network and that you want 198.71.200.5 configured as a second address.

Support for 1.3.50++ kernels

You do not need any patches, simply answer yes to the question: Network aliasing (CONFIG_NET_ALIAS) [N/y/?] when prompted during make config.

Configuring IP_ALIAS for 1.3.50++

The new ip_alias facilities actually create new network interfaces to more properly. To check if your kernel actually has proper support for the new facility you should look for /proc/net/alias*. If your kernel has been properly built then two file will exist, aliases and alias_types in the /proc/net directory.

To configure aliases you use a special trick using a normal unmodified ifconfig program. The new alias ports are specified by including a suffix for the physical port name as follows:

# ifconfig eth0:0 192.168.1.1
# route add -host 192.168.1.1 dev eth0:0
Note that aliases start at '0'. So eth0:1 would be the second alias for the physical eth0 device.

To delete an alias you again use the ifconfig command as follows:

# ifconfig eth0:0- 0
The '-' character signifies to the kernel that the alias should be deleted and all routes and arp entries that point to it should be deleted.


Previous Next Contents