Linux IPX-HOWTO
         
       Kevin Thorpe, kevin@pricetrak.com
       v2.3, 06 May 1998
     
       This document aims to describe how to obtain, install and configure
       various tools available for the the Linux operating system that use
       the Linux kernel IPX protocol support.
       ______________________________________________________________________
     
       Table of Contents
     
     
     
       1. Introduction.
     
          1.1 Changes from the previous release.
          1.2 Introduction.
     
       2. Disclaimer.
     
       3. Related Documentation.
     
          3.1 New versions of this document.
          3.2 Feedback.
          3.3 Mailing list support.
     
       4. Some of the terms used in this document.
     
       5. A brief discussion of IPX network topology
     
       6. The IPX related files in the
     
       7. Greg Pages IPX tools.
     
          7.1 The IPX tools in more detail.
     
       8. Configuring your Linux machine as an IPX router.
     
          8.1 Do I need to configure an internal network ?
     
       9. Configuring your Linux machine as an NCP client.
     
          9.1 Obtaining
          9.2 Building
          9.3 Building
          9.4 Configuring and using
     
       10. Configuring your Linux machine as an NCP server.
     
          10.1 The
             10.1.1 Capability of
             10.1.2 Obtaining
             10.1.3 Building the
          10.2 The
             10.2.1 Capability of
             10.2.2 Obtaining
             10.2.3 Building
             10.2.4 Configuring and using
     
       11. Configuring your Linux machine as a Novell Print Client.
     
       12. Configuring your Linux machine as a Novell Print Server.
     
          12.1 Prerequisites
          12.2 Configuration
     
       13. An overview of the
     
          13.1 User commands.
          13.2 Administration tools.
     
       14. Configuring PPP for IPX support.
     
          14.1 Configuring an IPX/PPP server.
             14.1.1 First steps.
             14.1.2 Design.
             14.1.3 Configure
             14.1.4 Test the server configuration.
          14.2 Configuring an IPX/PPP client.
             14.2.1 Configuring
             14.2.2 Testing the IPX/PPP client.
     
       15. IPX tunnel over IP
     
          15.1 Obtaining
          15.2 Building
          15.3 Configuring
          15.4 Testing and using
     
       16. Commercial IPX support for Linux.
     
          16.1 Caldera'a Network Desktop
     
       17. Some Frequently Asked Questions
     
       18. Copyright Message.
     
       19. Miscellaneous and Acknowledgements.
     
     
     
       ______________________________________________________________________
     
       1.  Introduction.
     
       This is the Linux IPX-HOWTO. You should read the Linux NET-3-HOWTO in
       conjunction with this document.
     
     
       1.1.  Changes from the previous release.
     
     
     
       Change of author:
               Many thanks to Terry Dawson for passing on this document and
               congratulations on becoming a father :-).
     
       Additions:
               Addition of a brief explanation of IPX. This is in response to
               many baffled queries on the discussion lists.
     
       Corrections/Updates:
               New version of ncpfs which now supports NDS logins. This is early
               beta test and may be prohibited in your country due to the use of
               patented technology.
     
               Addition of support for trustee rights in mars_nwe. This is still
               in beta test.
     
     
     
       1.2.  Introduction.
     
       The Linux Kernel has a completely new network implementation as
       compared to other Unix like operating systems. The ability to take a
       fresh approach to developing the kernel networking software has led to
       the Linux kernel having support for a range of non tcp/ip protocols
       being built. The IPX protocol is one of those that have been included.
     
       The Linux kernel supports the IPX protocol only. It does not yet
       support protocols such as IPX/RIP, SAP or NCP, these are supported by
       other software such as that documented elsewhere in this document.
     
     
       The IPX support was originally developed by Alan Cox
        and has been significantly enhanced by Greg
       Page .
     
     
       2.  Disclaimer.
     
       I do not and cannot know everything there is to know about the Linux
       network software. Please accept and be warned that this document
       probably does contain errors. Please read any README files that are
       included with any of the various pieces of software described in this
       document for more detailed and accurate information. I will attempt to
       keep this document as error-free and up-to-date as possible. Versions
       of software are current as at time of writing.
     
       In no way do I or the authors of the software in this document offer
       protection against your own actions. If you configure this software,
       even as described in this document and it causes problems on your
       network then you alone must carry the responsibility. I include this
       warning because IPX network design and configuration is not always a
       simple matter and sometimes undesirable interaction with other routers
       and fileservers can result if you do not design or configure your
       network carefully. I also include this warning because I was asked to
       by someone unfortunate enough to have discovered this lesson the hard
       way.
     
     
       3.  Related Documentation.
     
       This document presumes you understand how to build a Linux kernel with
       the appropriate networking options selected and that you understand
       how to use the basic network tools such as ifconfig and route.  If you
       do not, then you should read the NET-3-HOWTO  in
       conjunction with this document as it describes these.
     
       Other Linux HOWTO documents that might be useful are:
     
       The Ethernet-HOWTO , which describes the details
       of configuring an Ethernet device for Linux.
     
       The PPP-HOWTO  as IPX support is available for version
       2.2.0d and later of the Linux PPP implementation.
     
     
       3.1.  New versions of this document.
     
       If your copy of this document is more than two months old then I
       strongly recommend you obtain a newer version. The networking support
       for Linux is changing very rapidly with new enhancements and features,
       so this document also changes fairly frequently. The latest released
       version of this document can always be retrieved by anonymous ftp
       from:
     
       ftp:/sunsite.unc.edu/pub/Linux/docs/HOWTO/IPX-HOWTO>/ or:
       ftp:/sunsite.unc.edu/pub/Linux/docs/HOWTO/other-formats/IPX-
       HOWTO{-html.tar,ps,dvi}.gz>/ via the World Wide Web from the Linux
       Documentation Project Web Server
       , at page: IPX-HOWTO
        or directly from me,
       . It may also be posted to the newsgroups:
       comp.os.linux.networking, comp.os.linux.answers and news.answers from
       time to time.
     
     
     
       3.2.  Feedback.
     
       Please send any comments, updates, or suggestions to me,
       . The sooner I get feedback, the sooner I can
       update and correct this document. If you find any problems with it,
       please mail me directly as I can miss info posted to the newsgroups.
     
     
       3.3.  Mailing list support.
     
       There is a mailing list established for discussion of the various
       Linux IPX software packages described in this document. You can
       subscribe to it by sending a mail message to `listserv@sh.cvut.cz'
       with `add linware' in the body of the message. To post to the list
       your send your mail to `linware@sh.cvut.cz'. I regularly watch this
       list.
     
       The mailing list is archived at www.kin.vslib.cz
       .
     
     
       4.  Some of the terms used in this document.
     
       You will often see the terms client and server used in this document.
       They are normally fairly specific terms but in this document I have
       generalized their definitions a little so that they mean the
       following:
     
          client
             The machine or program that initiates an action or a connection
             for the purpose of gaining use of some service or data.
     
          server
             The machine or program that accepts incoming connections from
             multiple remote machines and provides a service or data to
             those.
     
       These definitions are not very reliable either, but they provide a
       means of distinguishing the ends of peer to peer systems such as SLIP
       or PPP which truly do not actually have clients and servers.
     
       Other terms you will see are:
     
          Bindery
             The bindery is a specialised database storing network
             configuration information on a Novell fileserver. Netware
             clients may query the bindery to obtain information on available
             services, routing and user information.
     
          Frame Type
             is a term used to describe that actual protocol used to carry
             the IPX (and IP) datagrams across your ethernet style network
             segments. There are four common ones. They are:
     
             Ethernet_II
                This is a refined version of the original DIX ethernet
                standard. Novell has been allocated a formal protocol id and
                this means that both IPX and IP can coexist happily in an
                Ethernet_II environment quite happily. This is commonly used
                in Novell environments and is a good choice.
     
             802.3
                This is an I.E.E.E. protocol defining a Carrier Sense
                Multiple Access with Collision Detection (CSMA/CD) mechanism.
                It was based on the original DIX Ethernet standard, with an
                important modification, the type (protocol id) field was
                converted into a length field instead. It is for this reason
                that IPX really shouldn't be run here. IEEE 802.3 was
                designed to carry IEEE 802.2 frames only but there are
                implementations that use it to carry IPX frames directly and
                remarkably it does work. Avoid it unless you are trying to
                interwork with a network already configured to use it.
     
             802.2
                This is an I.E.E.E. protocol that defines a set of Logical
                Link Control procedures. It provides a simplistic way of
                allowing different protocols to coexist, but is quite limited
                in this respect. Novell uses an unofficial Service Address
                Point (like a protocol id) but since everyone else uses it as
                well, that hasn't yet presented too much of a problem.
     
             SNAP
                SNAP is the Sub Network Access Protocol. This protocol is
                designed ride on top of 802.3 and 802.2. It expands the
                multiprotocol capability of 802.2 and provides some measure
                of compatability with existing Ethernet and Ethernet_II frame
                types.
     
     
          IPX
             Internet Packet eXchange is a protocol used by the Novell
             corporation to provide internetworking support for their
             NetWare(tm) product.  IPX is similar in functionality to the IP
             protocol used by the tcp/ip community.
     
          IPX network address
             This is a number which uniquely identifies a particular IPX
             network. The usual notation for this address is in hexadecimal.
             An example might look like: 0x23a91002.
     
          IPX Internal network
             This is a virtual IPX network. It is virtual because it does not
             correspond to a physical network. This is used to provide a
             means of uniquely identifying and addressing a particular IPX
             host. This is generally only useful to IPX hosts that exist on
             more than one physical IPX network such as fileservers. The
             address is coded in the same form as for a physical IPX network.
     
          RIP
             Routing Information Protocol is a protocol used to automatically
             propagate network routes in an IPX network. It is functionally
             similar to the RIP used within the tcp/ip community.
     
          NCP
             NetWare Core Protocol is a networked filesystem protocol
             designed by the Novell Corporation for their NetWare(tm)
             product. NCP is functionally similar to the NFS used in the
             tcp/ip community.
     
          SAP
             Service Advertisement Protocol is a protocol designed by the
             Novell Corporation that is used to advertise network services in
             a NetWare(tm) environment.
     
          Hardware address
             This is a number that uniquely identifies a host in a physical
             network at the media access layer. Examples of this are Ethernet
             Addresses. An Ethernet address is generally coded as six
             hexadecimal values separated by colon characters eg.
             00:60:8C:C3:3C:0F
     
     
          route
             The route is the path that your packets take through the network
             to reach their destination.
     
     
       5.  A brief discussion of IPX network topology
     
       This is a much simplified explanation for people new to IPX. Large
       networks will probably break lots of the rules explained here. In
       complex IPX networks the administrator should always be consulted.
     
       IPX networking revolves around a scheme of numbered networks unlike IP
       which places more emphasis on the interface addresses. A network is a
       collection of equipment connected to the same LAN segment and using
       the same frame type. Different frame types on the same LAN segment are
       treated as seperate networks.
     
       Each network must be allocated a number which is unique across the
       entire internetwork. This is usually performed by a NetWare(tm)
       server, but can easily be performed by Linux. IPX clients are given
       this number by the server when starting, they only require to know the
       correct frame type.
     
       Routing between networks is usually performed by putting two network
       cards in a server. This server then runs the RIP protocol which holds
       a routing table for the internetwork. Periodic broadcasts of this
       routing table are exchanged between servers. Within a short time each
       server 'discovers' the topology of the internetwork.
     
       If you only wish to use the services of an existing NetWare server,
       you can use ipx_configure (section 7.1) to automatically define the
       IPX interfaces by using broadcast queries to look for a server. If
       this fails, or you wish to provide IPX services, you will need to
       define the interfaces manually using ipx_interface or mars_nwe.
     
     
       6.  The IPX related files in the /proc  filesystem.
     
       There are a number of files related to the Linux IPX support that are
       located within the /proc filesystem. They are:
     
     
          /proc/net/ipx_interface
             This file contains information about the IPX interfaces
             configured on your machine. These may have been configured
             manually by command or automatically detected and configured.
     
          /proc/net/ipx_route
             This file contains a list of the routes that exist in the IPX
             routing table. These routes may have been added manually by
             command or automatically by an IPX routing daemon.
     
          /proc/net/ipx
             This file is a list of the IPX sockets that are currently open
             for use on the machine.
     
     
       7.  Greg Pages IPX tools.
     
       Greg Page .
     
     
       7.1.  The IPX tools in more detail.
     
     
          ipx_interface
             This command is used to manually add, delete or check ipx
             capability to an existing network device. Normally the network
             device would be an Ethernet device such at eth0. At least one
             IPX interface must be designated the primary interface and the
             -p flag to this command does this. For example to enable
             Ethernet device eth0 for IPX capability as the primary IPX
             interface using the IEEE 802.2 frame type and IPX network
             address 39ab0222 you would use:
     
     
               # ipx_interface add -p eth0 802.2 0x39ab0222
     
     
     
          If the frame type differs from NetWare(tm) servers on this network,
          they will studiously ignore you. If the frame type is correct but
          the network number differs, they will still ignore you but complain
          frequently on the NetWare server console. The latter is guaranteed
          to gain you flames from your NetWare administrator and may disrupt
          existing NetWare clients.
     
          If you get an error while running this program and you happen to
          not have already configured tcp/ip, then you will find that you
          need to manually start the eth0 interface using the command:
     
     
               # ifconfig eth0 up
     
     
     
          ipx_configure
             This command enables or disables the automatic setting of the
             interface configuration and primary interface settings.
     
             --auto_interface
                allows you to select whether new network devices should be
                automatically configured as IPX devices or not.
     
             --auto_primary
                allows you to select whether the IPX software should
                automatically select a primary interface or not. Problems
                have been noted using this with Windows 95 clients on the
                network.
     
             A typical example would be to enable both automatic interface
             configuration and automatic primary interface setting with the
             following command:
     
     
     
          # ipx_configure --auto_interface=on --auto_primary=on
     
     
     
          ipx_internal_net
             This command allows you to configure or deconfigure an internal
             network address. An internal network address is optional, but
             when it is configured it will always be the primary interface.
             To configure an IPX network address of ab000000 on IPX node 1
             you would use:
     
     
               # ipx_internal_net add 0xab000000 1
     
     
     
          ipx_route
             The command allows you to manually modify the IPX routing table.
             For example to add a route to IPX network 39ab0222 via a router
             with node number 00608CC33C0F on IPX network 39ab0108:
     
     
               # ipx_route add 0x39ab0222 0x39ab0108 0x00608CC33C0F
     
     
     
       8.  Configuring your Linux machine as an IPX router.
     
       If you have a number of IPX segments that you wish to internetwork you
       need the services of a router. In the Novell environment there are two
       pieces of information which are necessary to be propagated around the
       network.  They are the network routing information propagated using
       Novell RIP, and the service advertisement information propagated using
       Novell SAP. Any router must support both of these protocols to be
       useful in most situations.
     
       Linux has support for both of these protocols and can be fairly easily
       made to function as a fully Novell compliant router.
     
       The Linux kernel IPX support actually manages the IPX packet
       forwarding across interfaces, but it does this according to the rules
       coded into the IPX routing table. Linux needs a program to implement
       the Novell RIP and SAP to ensure that the IPX routing table is built
       correctly and updated periodically to reflect changes in the network
       status.
     
       Volker Lendecke  has developed a routing
       daemon ipxripd that will do this for you. The mars_nwe package
       mentioned later includes an alternative routing daemon.
     
       You can find ipxripd at:
     
       sunsite.unc.edu
       
     
       or at Volkers home site at:
     
       ftp.gwdg.de 
     
     
       Configuring your Linux machine to act as a router is very
       straightforward.  The steps you must take are:
     
       1. Build your kernel with IPX, Ethernet and /proc support.
     
       2. Obtain, compile and install the ipxd daemon program.
     
       3. Boot the new kernel and ensure that each of the Ethernet cards has
          been properly detected and there are no hardware conflicts.
     
       4. Enable the IPX protocol on each of the interfaces using the
          ipx_interface command described above.
     
       5. Start the ipxd daemon program.
     
       Consider the following simple network:
     
     
        IPX Addr: 0x01000000  802.2
       |--------------------------|
                     |
                     \_________________________
                                               \          Linux Router
        IPX Addr: 0x02000000  802.2             \
       |--------------------------|              \   eth0/-----------\
                     |                            \--====|           |
                     \_________________________          | IPX route |
                                               \     eth1|  Table    |
        IPX Addr: 0x03000000  etherII           \----====|    ^      |
       |--------------------------|                      |    |      |
                     |                               eth2|  IPXd     |
                     \______________________________/====|           |
                                                         |  SAPd     |
        IPX Addr: 0x04000000  etherII                eth3|           |
       |--------------------------|                 /====|           |
                     |                              |    \___________/
                     \______________________________/
     
     
     
       The configuration for the above network would look like:
     
     
            # ipx_interface add eth0 802.2 0x0100000000
            # ipx_interface add eth1 802.2 0x0200000000
            # ipx_interface add eth2 etherii 0x0300000000
            # ipx_interface add eth3 etherii 0x0400000000
            # ipxd
     
     
     
       You should then wait a moment or two and check your
       /proc/net/ipx_route file and you should see it populated with the IPX
       routes relevant to your configuration and any learned from any other
       routers in the network.
     
     
       8.1.  Do I need to configure an internal network ?
     
       Novell has a feature called an internal network, which it uses to
       simplify routing in situations where a host has more than one network
       device connected.  This is useful in the case of a fileserver
       connected to multiple networks as it means that only one route needs
       to be advertised to reach the server regardless of which network you
       are attempting from.
       In the case of a configuration where you are not running a fileserver
       and your machine acting only as an IPX router the question is not as
       simple to answer. It has been reported that configuring for IPX/PPP
       works `better' if you also configure an internal network.
     
       In any case it is easy to do, but may require a rebuild of your
       kernel.  When you are working through the kernel make config you must
       answer y when asked Full internal IPX network as illustrated:
     
     
     
              ...
              ...
             Full internal IPX network (CONFIG_IPX_INTERN) [N/y/?] y
              ...
              ...
     
     
     
       To configure the internal network interface, use the ipx_internal_net
       command described earlier in the IPX tools section. The main
       precaution to take is to ensure that they IPX network address you
       assign is unique on your network and that no other machine or network
       is using it.
     
     
       9.  Configuring your Linux machine as an NCP client.
     
       If you are a user of a mixed technology network that comprises both IP
       and IPX protocols it is likely that at some time or another you have
       wanted to have your Linux machine access data stored on a Novell
       fileserver on your network. Novell have long offered an NFS server
       package for their fileservers that would allow this, but if you are a
       small site or have only a small number of people interested in doing
       this it is difficult to justify the cost of the commercial package.
     
       Volker Lendecke  has written a Linux
       filesystem kernel module that supports a subset of the Novell NCP that
       will allow you to mount Novell volumes into your Linux filesystem
       without requiring any additional products for your fileserver.  Volker
       has called the package ncpfs and derived the necessary information
       mainly from the book "Netzwerkprogrammierung in C" by Manfred Hill and
       Ralf Zessin (further details of the book are contained within the
       README file in the ncpfs package).
     
       The software causes Linux to emulate a normal Novell workstation for
       file services. It also includes a small print utility that allows you
       to print to Novell print queues (This is documented in the Print
       Client section later).  The ncpfs package will work with Novell
       fileservers of version 3.x and later, it will not work the Novell 2.x.
       The ncpfs client will also work with close Novell compatible products,
       but unfortunately some products that claim to be compatible aren't
       compatible enough. To use ncpfs with Novell 4.x fileservers, it is
       preferred to use the Novell server in bindery emulation mode. The NDS
       support is a very recent early beta addition to ncpfs and additionally
       its use may be prohibited in your country due to the inclusion of
       patented technology.
     
     
     
       9.1.  Obtaining ncpfs .
     
       The latest ncpfs package was designed to be built against the version
       1.2.13 kernel or kernels later than 1.3.71 (this includes 2.x.x).  If
       you not using a kernel in either of these categories then you will
       have to upgrade your kernel. The Kernel-HOWTO 
       describes how to do this in detail.
     
       You can obtain the ncpfs package by anonymous ftp from Volker's home
       site at: ftp.gwdg.de  or
       sunsite.unc.edu
        or mirror
       sites. The current version at the time of writing was:
     
       ncpfs-2.0.11.tgz or ncpfs-2.2.0.tgz which adds the NDS support.
     
     
       9.2.  Building ncpfs  for kernel 1.2.13.
     
     
          Build a kernel with Ethernet and IPX support
             The first thing you need to do is ensure that your kernel has
             been built with IPX support enabled.  In the 1.2.13 version
             kernel you need only ensure that you have answered Y to the
             question: 'The IPX protocol' as illustrated:
     
              ...
              ...
             Assume subnets are local (CONFIG_INET_SNARL) [y]
             Disable NAGLE algorithm (normally enabled) (CONFIG_TCP_NAGLE_OFF) [n]
             The IPX protocol (CONFIG_IPX) [n] y
             *
             * SCSI support
              ...
              ...
     
     
          You will also need to ensure that you include an appropriate driver
          for your Ethernet card. If you do not know how to do this then you
          should read the Ethernet-HOWTO .
     
          You can then proceed to build your kernel. Make sure you remember
          to run lilo to install it when you have finished.
     
     
          Untar the ncpfs software
     
             # cd /usr/src
             # tar xvfz ncpfs-2.0.11.tgz
             # cd ncpfs
     
     
     
          Check the Makefile
             If you intend to use kerneld to autoload the ncpfs kernel module
             then you must uncomment the line in the Makefile that refers to:
             KERNELD. If you are unsure what this means then you should read
             the Kernel-HOWTO  to familiarise yourself
             with kernel module configuration.
     
     
          Make the ncpfs software
             The software should compile cleanly with no other configuration
             necessary:
     
             # make
     
     
     
          Copy the IPX tools somewhere useful if you don't already have them.
             After the make has completed you should find all of the tools
             you need in the ncpfs/bin directory. You can use:
     
     
     
               # make install
     
     
     
          to install the tools in Volkers choice of directories. If you are
          running on an ELF based system then you will need to rerun
          `ldconfig -v' to ensure that the shared library is able to be
          found.
     
     
          Copy the ncpfs.o module somewhere useful if necessary.
             If you are compiling for a 1.2.* kernel then you will find a
             file called ncpfs.o in the ncpfs/bin directory after the make
             has completed. This is the ncpfs kernel module.  You should copy
             this somewhere useful. On my debian system I have copied it to
             the /lib/modules/1.2.13/fs directory and added ncpfs to the
             /etc/modules file so that it will be automatically started at
             boot time. If you are using some other distribution you should
             find where it keeps its modules and copy it there, or just copy
             it to your /etc directory. To load the modules manually you need
             to use the command:
     
             # insmod ncpfs.o
     
     
     
       9.3.  Building ncpfs  for kernels 1.3.71++/2.0.*.
     
       For the latest version of ncpfs you must use kernel 1.3.71 or newer,
       this includes the 2.0.* kernels.
     
       If you intend using a kernel that is version 1.3.71 or newer then the
       ncpfs kernel code has been included in the standard kernel
       distribution. You need only answer Y to:
     
     
            Networking options  --->
                ...
                ...
                <*> The IPX protocol
                ...
            Filesystems  --->
                ...
                ...
                <*> NCP filesystem support (to mount NetWare volumes)
                ...
     
     
     
       You will still need to follow the instructions for building for
       kernels 1.2.* so that you can build the tools but there will not be a
       module file for you to install.
     
     
     
       9.4.  Configuring and using ncpfs .
     
     
          Configure the IPX network software
             There are two ways of configuring the IPX network software. You
             can manually configure all of your IPX network information or
             you can choose to let the software determine for itself some
             reasonable settings using the command:
     
     
     
               # ipx_configure --auto_interface=on --auto_primary=on
     
     
     
          This should be reasonable in most circumstances, but if it doesn't
          work for you then read the 'IPX tools' section above to configure
          your software manually. Problems have been noted using this on
          networks containing Windows '95 clients.
     
     
          Test the configuration
             After your IPX network is configured you should be able to use
             the slist command to see a list of all of the Novell fileserver
             on your network:
     
             # slist
     
     
          If the slist command displays a message like: ncp_connect: Invalid
          argument then your kernel probably does not support IPX. Check that
          you have actually booted off the appropriate kernel.  When you boot
          you should see messages about 'IPX' and 'ncpfs' in the system
          startup messages. If the slist command does not list all of your
          fileservers then you may need to use the manual network configura-
          tion method.
     
     
          Mount a Novell(tm) server or volume.
             If your IPX network software is working ok you should now be
             able to mount a Novell fileserver or volume into your Linux
             filesystem. The ncpmount command is used for this purpose and
             requires that you specify at least the following information:
     
             1. The fileserver name
     
             2. (optionally) The fileserver directory to mount
     
             3. The fileserver login id. If it has a password you will also
                need that.
     
             4. The mount point ie. where you want the mount to go. This will
                be an existing directory on your machine.
     
             There is an equivalent ncpumount command to unmount a mounted
             NCP filesystem. The NCP filesystems will be unmounted cleanly if
             you shutdown your machine normally, so you needn't worry about
             ncpumounting your filesystems manually before a halt or
             shutdown.
     
             An example command to mount fileserver ACCT_FS01, with a login
             id of guest with no password, under the /mnt/Accounts directory
             might look like the following:
     
     
             # ncpmount -S ACCT_FS01 /mnt/Accounts -U guest -n
     
     
          Note the use of the -n option to indicate that no password is
          required for the login. The same login specifying a password of
          secret would look like:
     
          # ncpmount -S ACCT_FS01 /mnt/Accounts -U guest -P secret
     
     
          If you don't specify either the -n or the -P options you will be
          prompted for a password.
     
     
          Check the mount
             If the mount is successful you will find all the volumes
             accessible to the userid used for login listed as directories
             under the mount point. You should then also be able to traverse
             the directory structure to find other files. You may
             alternatively use the -V option to mount a single volume.
     
             NCP does not provide uid or gid ownership of files. All the
             files will have the permission and ownership assigned to the
             mount point directory restricted by trustee permissions on the
             Novell server. Bear this in mind when sharing mounts between
             Linux users.
     
     
          Configure mounts to be automatically performed.
             If you have some need to permanently have an ncp mount then you
             will want to configure the commands above into your rc files so
             that they occur automatically at boot time. If your distribution
             doesn't already provide some way of configuring IPX like debian
             then I recommend you place them in your /etc/rc.local file if
             you have one. You might use something like:
     
     
               #
               # Start the ncp filesystem
     
               /sbin/insmod /lib/modules/1.2.13/fs/ncpfs.o
     
               # configure the IPX network
               ipx_configure --auto_interface=on --auto_primary=on
     
               # guest login to the Accounting fileserver
               ncpmount -S ACCT_FS01 /mnt/Accounts -U guest -n
     
               #
     
     
     
          There is another means of configuring NCP mounts and that is by
          building a $HOME/.nwclient file. This file contains details of tem-
          porary or user specific NCP mounts that would be performed regu-
          larly. It allows you to store the details of mounts so that you can
          recreate them without having to specify all of the detail each
          time.
     
          Its format is quite straightforward:
     
     
     
          # The first entry is the 'preferred server' entry and is
          # used whenever you do not specify a server explicitly.
          #
          # User TERRY login to DOCS_FS01 fileserver with password 'password'
          DOCS_FS01/TERRY password
          #
          # Guest login to the ACCT_FS01 fileserver with no password.
          ACCT_FS01/GUEST -
     
     
     
          To activate these mounts you could use:
     
     
               $ ncpmount /home/terry/docs
     
     
     
          to mount: DOCS_FS01 with a login of TERRY under the
          /home/terry/docs directory. Note that this entry was chosen because
          no fileserver was specified in the mount command. If the following
          command were used:
     
     
               $ ncpmount -S ACCT_FS01 /home/terry/docs
     
     
     
          then a GUEST login to ACCT_FS01 would be mounted there instead.
     
          Note: for this mechanism to work the permissions of the
          $HOME/.nwclient file must be 0600 so you would need to use the
          command:
     
     
               $ chmod 0600 $HOME/.nwclient
     
     
     
          If non-root users are to be allowed to use this mechanism then the
          ncpmount command must be Set Userid Root, so you would need to give
          it permissions:
     
     
               # chmod 4755 ncpmount
     
     
     
          Try out the nsend utility
             a utility to send messages to Novell users is also included in
             the package, it is called nsend and is used as follows:
     
             # nsend rod hello there
     
     
          would send the message "hello there" to a logged in user "rod" on
          your "primary" fileserver (the first one appearing in your
          .nwclient file. You can specify another fileserver with the same
          syntax as for the ncpmount command.
     
       10.  Configuring your Linux machine as an NCP server.
     
       There are two packages available that allow Linux to provide the
       functions of a Novell Fileserver. They both allow you to share files
       on your linux machine with users using Novell NetWare client software.
       Users can attach and map filesystems to appear as local drives on
       their machines just as they would to a real Novell fileserver. You may
       want to try both to see which best serves your intended purpose.
     
     
       10.1.  The mars_nwe  package.
     
       Martin Stover  developed mars_nwe to enable linux
       to provide both file and print services for NetWare clients.
     
       In case you are wondering about the name: mars_nwe is Martin Stovers
       Netware Emulator.
     
     
       10.1.1.  Capability of mars_nwe .
     
       mars_nwe implements a subset of the full Novell NCP for file services,
       disk based bindery and also print services. It is likely to contain
       bugs but there are many people using it now and the number of bugs is
       steadily decreasing as new versions are released.
     
     
       10.1.2.  Obtaining mars_nwe .
     
       You can obtain mars_nwe from ftp.gwdg.de
        or from
       .
     
       The version current at the time of writing was:
       mars_nwe-0.99.pl10.tgz.
     
     
       10.1.3.  Building the mars_nwe  package.
     
     
          Build a kernel with Ethernet and IPX Support
             In the 1.2.13 version kernel you need only ensure that you have
             answered Y to the question: 'The IPX protocol' and N to the
             question: `Full internal IPX network' as illustrated:
     
              ...
              ...
             The IPX protocol (CONFIG_IPX) [n] y
              ...
              ...
             Full internal IPX network (CONFIG_IPX_INTERN) [N/y/?] n
              ...
              ...
     
     
          In newer kernels a similar process is adopted but the actual text
          of the prompt may have changed slightly.
     
          You will also need to ensure that you include an appropriate driver
          for your Ethernet card. If you do not know how to do this then you
          should read the Ethernet-HOWTO .
     
          You can then proceed to build your kernel. Make sure you remember
          to run lilo to install it when you have finished.
     
     
          Untar the mars_nwe package.
     
     
               # cd /usr/src
               # tar xvfz mars_nwe-0.99.pl10.tgz
     
     
     
          Make mars_nwe.
             To make the package is very simple.  The first step is to simply
             run make, this will create a config.h file for you. Next you
             should look at and edit the config.h file if necessary. It
             allows you to configure items such as the installation
             directories that will be used and the maximum number of sessions
             and volumes that the server will support. The really important
             entries to look at are:
     
             FILENAME_NW_INI       the location of the initialisation file
             PATHNAME_PROGS        where the executable support programs will be found.
             PATHNAME_BINDERY      where the 'bindery' files will go.
             PATHNAME_PIDFILES     the directory for the 'pid' files to be written.
             MAX_CONNECTIONS       the maximum number of simultaneous connections allowed.
             MAX_NW_VOLS           the maximum number of volumes mars_nwe will support.
             MAX_FILE_HANDLES_CONN the maximum number of open files per connection.
             WITH_NAME_SPACE_CALLS if you want to support ncpfs clients.
             INTERNAL_RIP_SAP      whether you want mars_nwe to provide rip/sap routing.
             SHADOW_PWD            whether you use shadow passwords or not.
     
     
     
          The defaults will probably be ok but you should check anyway.
     
          When this is done:
     
     
               # make
               # make install
     
     
     
          will build the servers and install them in the appropriate
          directory. The installation script also installs the configuration
          file /etc/nwserv.conf.
     
     
          Configure the server.
             Configuration is fairly simple. You need to edit the
             /etc/nwserv.conf file. The format of this file may at first look
             a little cryptic, but it is fairly straightforward. The file
             contains a number of single line configuration items. Each line
             is whitespace delimited and begins with a number that indicates
             the contents of the line. All characters following a '#'
             character are considered a comment and ignored. Martin supplies
             an example configuration file in the package, but I'll present
             what I consider to be a simplified example to offer an
             alternative for you.
     
     
     
          # VOLUMES (max. 5)
          # Only the SYS volume is compulsory. The directory containing the SYS
          # volume must contain the directories: LOGIN, PUBLIC, SYSTEM, MAIL.
          # The 'i' option ignores case.
          # The 'k' option converts all filenames in NCP requests to lowercase.
          # The 'm' option marks the volume as removable (useful for cdroms etc.)
          # The 'r' option set the volume to read-only.
          # The 'o' option indicates the volume is a single mounted filesystem.
          # The 'P' option allows commands to be used as files.
          # The 'O' option allows use of the OS/2 namespace
          # The 'N' option allows use of the NFS namespace
          # The default is upper case.
          # Syntax:
          #    1     
     
          1   SYS         /home/netware/SYS/               # SYS
          1   DATA        /home/netware/DATA/      k       # DATA
          1   CDROM       /cdrom                   kmr     # CDROM
     
          # SERVER NAME
          # If not set then the linux hostname will be converted to upper case
          # and used. This is optional, the hostname will be used if this is not
          # configured.
          # Syntax:
          #    2 
     
          2   LINUX_FS01
     
          # INTERNAL NETWORK ADDRESS
          # The Internal IPX Network Address is a feature that simplifies IPX routing
          # for multihomed hosts (hosts that have ports on more than one IPX network).
          # Syntax:
          #    3  []
          # or:
          #    3 auto
          #
          # If you use 'auto' then your host IP address will be used. NOTE: this may
          # be dangerous, please be sure you pick a number unique to your network.
          # Addresses are 4byte hexadecimal (the leading 0x is required).
     
          3   0x49a01010  1
     
     
          # NETWORK DEVICE(S)
          # This entry configures your IPX network. If you already have your
          # IPX network configured then you do not need this. This is the same as
          # using ipx_configure/ipx_interface before you start the server.
          # Syntax:
          #    4    []
          #                         Frame types: ethernet_ii, 802.2, 802.3, SNAP
     
          4  0x39a01010  eth0  802.3  1
     
          # SAVE IPX ROUTES AFTER SERVER IS DOWNED
          # Syntax:
          #    5 
          #       0 = don't save routes, 1 = do save routes
     
          5 0
     
          # NETWARE VERSION
          # Syntax:
          #    6 
          #      0 = 2.15, 1 = 3.11
     
          6 1
          # PASSWORD HANDLING
          # Real Novell DOS clients support a feature which encypts your
          # password when changing it. You can select whether you want your
          # mars server to support this feature or not.
          # Syntax
          #    7 
          #     is:
          #        0 to force password encryption. (Clients can't change password)
          #        1 force password encryption, allow unencrypted password change.
          #        7 allow non-encrypted password but no empty passwords.
          #        8 allow non-encrypted password including empty passwords.
          #        9 completely unencrypted passwords (doesn't work with OS/2)
     
          7 1
     
          # MINIMAL GID UID rights
          # permissions used for attachments with no login. These permissions
          # will be used for the files in your primary server attachment.
          # Syntax:
          #    10 
          #    11 
          #      are from /etc/passwd, /etc/groups
     
          10  200
          11  201
     
          # SUPERVISOR password
          # May be removed after the server is started once. The server will
          # encrypt this information into the bindery file after it is run.
          # You should avoid using the 'root' user and instead use another
          # account to administer the mars fileserver.
          #
          # This entry is read and encrypted into the server bindery files, so
          # it only needs to exist the first time you start the server to ensure
          # that the password isn't stolen.
          #
          # Syntax:
          #    12   []
     
          12  SUPERVISOR  terry  secret
     
          # USER ACCOUNTS
          # This associates NetWare logins with unix accounts. Password are
          # optional.
          # Syntax:
               13   []
     
          13  MARTIN martin
          13  TERRY  terry
     
          # LAZY SYSTEM ADMIN CONFIGURATION
          # If you have a large numbers of users and could not be bothered using
          # type 13 individual user mappings, you can automatically map mars_nwe
          # logins to linux user names. BUT, there is currently no means of making
          # use of the linux login password so all users configured this way are
          # will use the single password supplied here. My recommendation is not
          # to do this unless security is absolutely no concern to you.
          # Syntax:
          #    15  
          #     is: 0  - don't automatically map users.
          #               1  - do automatically map users not configured above.
          #               99 - automatically map every user in this way.
     
          15  0  duzzenmatta
     
          # SANITY CHECKING
          # mars_nwe will automatically ensure that certain directories exist if
          # you set this flag.
          # Syntax:
          #    16 
          #     is 0 for no, don't, or 1 for yes, do.
     
          16  0
     
          # PRINT QUEUES
          # This associates NetWare printers with unix printers. The queue
          # directories must be created manually before printing is attempted.
          # The queue directories are NOT lpd queues.
          # Syntax:
          #    21   
     
          21  EPSON  SYS:/PRINT/EPSON lpr -h
          21  LASER  SYS:/PRINT/LASER lpr -Plaser
     
          # DEBUG FLAGS
          # These are not normally needed, but may be useful if are you debugging
          # a problem.
          # Syntax:
          #     
          #
          #    100 = IPX KERNEL
          #    101 = NWSERV
          #    102 = NCPSERV
          #    103 = NWCONN
          #    104 = start NWCLIENT
          #    105 = NWBIND
          #    106 = NWROUTED
          #                 0 = disable debug, 1 = enable debug
     
          100 0
          101 0
          102 0
          103 0
          104 0
          105 0
          106 0
     
          # RUN NWSERV IN BACKGROUND AND USE LOGFILE
          # Syntax:
          #    200 
          #        0 = run NWSERV in foreground and don't use logfile
          #        1 = run NWSERV in background and use logfile
     
          200  1
     
          # LOGFILE NAME
          # Syntax:
          #    201 
     
          201  /tmp/nw.log
     
          # APPEND LOG OR OVERWRITE
          # Syntax:
          #    202 
          #        0 = append to existing logfile
          #        1 = overwrite existing logfile
     
          202  1
     
          # SERVER DOWN TIME
          # This item sets the time after a SERVER DOWN is issued that the
          # server really goes down.
          # Syntax:
          #    210 
     






Previous page: doc.nettools.ru/UnixMain page: www.nettools.ru