To create this internal network, use the ipx_internal_net command included in Greg Page's IPX tools package. Again, a simple example demonstrates its use:
# ipx_internal_net add 10000010 000000000001
This command would create an IPX internal network with address 10000010 and a node address of 000000000001. The network address, just like any other IPX network address, must be unique on your network. The node address is completely arbitrary, as there will normally be only one node on the network. Each host may have only one IPX Internal Network, and if configured, the Internal Network will always be the primary network.
To delete an IPX Internal Network, use:
# ipx_internal_net del
An internal IPX network is of absolutely no use to you unless your host both provides a service and has more than one IPX interface active.
Mounting a Remote NetWare Volume
IPX is commonly used to mount NetWare volumes in the Linux filesystem. This allows file-based data sharing between other operating systems and Linux. Volker Lendecke developed the NCP client for Linux and a suite of associated tools that make data sharing possible.
In an NFS environment, we'd use the Linux mount command to mount the remote filesystem. Unfortunately, the NCP filesystem has unique requirements that make it impractical to build it into the normal mount. Linux has an ncpmount command that we will use instead. The ncpmount command is one of the tools in Volker's ncpfs package, which is available prepackaged in most modern distributions or in source form from ftp.gwdg.de in the /pub/linux/misc/ncpfs/ directory. The version current at the time of writing is 2.2.0.
Before you can mount remote NetWare volumes, you must ensure your IPX network interface is configured correctly (as described earlier). Next, you must know your login details on the NetWare server you wish to mount; this includes the user ID and password. Lastly, you need to know which volume you wish to mount and what local directory you wish to mount it under.
A Simple ncpmount Example
A simple example of ncpmount usage looks like this:
# ncpmount -S ALES_F1 -U rick -P d00-b-gud /mnt/brewery
This command mounts all volumes of the ALES_F1 fileserver under the /mnt/brewery directory, using the NetWare login rick with the password d00-b-gud.
The ncpmount command is normally setuid to root and may therefore be used by any Linux user. By default, that user owns the connection and only he or the root user will be able to unmount it.
NetWare embodies the notion of a volume, which is analogous to a filesystem in Linux. A NetWare volume is the logical representation of a NetWare filesystem, which might be a single disk partition be spread across many partitions. By default, the Linux NCPFS support treats volumes as subdirectories of a larger logical filesystem represented by the whole fileserver. The ncpmount command causes each of the NetWare volumes of the mounted fileserver to appear as a subdirectory under the mount point. This is convenient if you want access to the whole server, but for complex technical reasons you will be unable to re-export these directories using NFS, should you wish to do so. We'll discuss a more complex alternative that works around this problem in a moment.
The ncpmount Command in Detail
The ncpmount has a large number of command line options that allow you quite a lot of flexibility in how you manage your NCP mounts. The most important of these are described in Table 15.2.
Table 15.2: ncpmount Command Arguments
| Argument | Description |
|---|---|
| - S server | The name of the fileserver to mount. |
| - U user_name | The NetWare user ID to use when logging in to the fileserver. |
| - P password | The password to use for the NetWare login. |
| - n | This option must be used for NetWare logins that don't have a password associated with them. |
| - C | This argument disables automatic conversion of passwords to uppercase. |
| - c client_name | This option allows you to specify who owns the connection to the fileserver. This is useful for NetWare printing, which we will discuss in more detail later. |
| - u uid | The Linux user ID that should be shown as the owner of files in the mounted directory. If this is not specified, it defaults to the user ID of the user who invokes the ncpmount command. |
| - g gid | The Linux group ID that should be shown as the owner of files in the mounted directory. If this is not specified, it will default to the group ID of the user who invokes the ncpmount command. |
| - f file_mode | This option allows you to specify the file mode (permissions) that files in the mounted directory should have. The value should be specified in octal, e.g., 0664. The permissions that you will actually have are the file mode permissions specified with this option masked with the permissions that your NetWare login ID has for the files on the fileserver. You must have rights on the server and rights specified by this option in order to access a file. The default value is derived from the current umask. |
| - d dir_mode | This option allows you to specify the directory permissions in the mounted directory. It behaves in the same way as the -f option, except that the default permissions are derived from the current umask. Execute permissions are granted where read access is granted. |
| - V volume | This option allows you to specify the name of a single NetWare volume to mount under the mount point, rather than mounting all volumes of the target server. This option is necessary if you wish to re-export a mounted NetWare volume using NFS. |
| - t time_out | This option allows you to specify the time that the NCPFS client will wait for a response from a server. The default value is 60mS and the timeout is specified in hundredths of a second. If you experience any stability problems with NCP mounts, you should try increasing this value. |
| - r retry_count | The NCP client code attempts to resend datagrams to the server a number of times before deciding the connection is dead. This option allows you to change the retry count from the default of 5. |