New versions of the pppd PPP daemon for Linux have support that allows you to carry IPX packets across a PPP serial link. You need at least version
ppp-2.2.0d of the daemon. See the PPP-HOWTO for details on where to find it. When you compile pppd you must ensure you enable the IPX support by adding the following two lines:
IPX_CHANGE = 1 USE_MS_DNS = 1
IPX_CHANGE is what configures the IPX support into PPP. The
USE_MS_DNS define allows Microsoft Windows95 machines to do Name Lookups.
The real trick to getting it to work in knowing how to configure it.
There are many ways of doing this, but I'm only going to describe the two that I've received any information on. I've tried neither yet, so consider this section experimental, and if you get something to work, please let me know.
The first thing you need to do is configure your Linux machine as an IP/PPP server. Don't panic! This isn't difficult. Again, follow the instructions in the PPP-HOWTO and you should be pretty much ok. When you have this done there are a couple of simple modifications you need to make to get IPX working over the same configuration.
One of the first steps you must take is to configure your linux machine as an IPX router as described in the appropriate section earlier in this document. You won't need to use the ipx_route command for the
ppp interface because pppd will configure these for you as it does for IP. When you have the ipxd daemon running it will automatically detect any new IPX interfaces and propogates routes for them. In this way your dialup hosts will be seen by other machines automatically when they connect.
When you are running as a server it will normally be your responsibility to assign network address to each of the PPP links when they are established. This is an important point, each PPP link will be an IPX network and will have a unique IPX network address. This means that you must decide how you will allocate addresses and what what they will be. A simple convention is to allocate one IPX network address to each serial device that will support IPX/PPP. You could allocate IPX network addresses based on the login id of the connecting user, but I don't see any particularly good reason to do so.
I will assume that this is what you have done, and that there are two serial devices (modems) that we will use. The addresses I've assigned in this contrived example are:
device IPX Network Address ------ ------------------- ttyS0 0xABCDEF00 ttyS1 0xABCDEF01
/etc/ppp/options.ttyS0 file as follows:
ipx-network 0xABCDEF00 ipx-node 2:0 ipxcp-accept-remote
/etc/ppp/options.ttyS1 file as:
ipx-network 0xABCDEF01 ipx-node 3:0 ipxcp-accept-remote
These will ask pppd to allocate the appropriate IPX network addresses to the link when the link is established, set the local node number to
3 and will let the remote node overwrite what the remote node number with what it thinks it is. Note that each of the addresses are hexadecimal numbers and that
0x is required at the start of the network address, but not required at the start of the node address.
There are other places this information could be configured. If you have only one dialin modem then an entry could go into the
/etc/ppp/options file. Alternatively this information can be passed on the command line to pppd.
To test the configuration you will need to have a client configuration that is known to work. When the caller dials in, logs in and pppd starts it will assign the network address, advise the client of the servers node number and negotiate the clients node number. When this has completed, and after ipxd has detected the new interface the client should be able to establish IPX connections to remote hosts.
In a client configuration, whether or not you configure your Linux machine as an IPX router depends on whether you have a local LAN that you wish to act as an IPX router for. If you are a standalone machine connecting to an IPX/PPP dialin server then you won't need to run ipxd, but if you have a LAN and wish all of the machines on the LAN to make use of the IPX/PPP route then you must configure and run ipxd as described. This configuration is much simpler because you do not have multiple serial devices to configure.
The simplest configuration is one that allows the server to supply all of the IPX network configuration information. This configuration would be compatible with the server configuration described above.
Again you need to add some options to your
/etc/ppp/options file, they are:
ipxcp-accept-network ipxcp-accept-remote ipxcp-accept-local
These options tell pppd to act completely passively and accept all of the configuration details from the server. You could supply default values here for servers that don't supply details by adding
ipx-node entries similar to the server configuration.
To test the client you will need a known working server to dial into. After you have dialled in and pppd has run you should see the IPX details configured on your
ppp0 device when you run the ifconfig command and you should be able to use ncpmount.
I'm not sure whether you will have to manually add IPX routes so that you can reach distant fileserver or not. This seems likely. If anyone running this configuration could tell me I'd be grateful.