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
to: /usr/src/linux/pppd-2.2.0f/pppd/Makefile.linux
.
The 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
Configure your /etc/ppp/options.ttyS0
file as follows:
ipx-network 0xABCDEF00
ipx-node 2:0
ipxcp-accept-remote
and your /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
2
or 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-network
and 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.