123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260 |
- This file describes the installation process for ppp-2.4 on systems
- running Solaris. The Solaris and SVR4 ports share a lot of code but
- are not identical. The STREAMS kernel modules and driver for Solaris
- are in the solaris directory (and use some code from the modules
- directory).
- NOTE: Although the kernel driver and modules have been designed to
- operate correctly on SMP systems, they have not been extensively
- tested on SMP machines. Some users of SMP Solaris x86 systems have
- reported system problems apparently linked to the use of previous
- versions of this software. I believe these problems have been fixed.
- Installation.
- *************
- 1. Run the configure script and make the user-level programs and the
- kernel modules.
- ./configure
- make
- The configure script will automatically find Sun's cc if it's in
- the standard location (/opt/SUNWspro/bin/cc). If you do not have
- Sun's WorkShop compiler, configure will attempt to use 'gcc'. If
- this is found and you have a 64 bit kernel, it will check that gcc
- accepts the "-m64" option, which is required to build kernel
- modules.
- You should not have to edit the Makefiles for most ordinary cases.
- 2. Install the programs and kernel modules: as root, do
- make install
- This installs pppd, chat and pppstats in /usr/local/bin and the
- kernel modules in /kernel/drv and /kernel/strmod, and creates the
- /etc/ppp directory and populates it with default configuration
- files. You can change the installation directories by editing
- solaris/Makedefs. If you have a 64 bit kernel, the 64-bit drivers
- are installed in /kernel/drv/sparcv9 and /kernel/strmod/sparcv9.
- If your system normally has only one network interface at boot
- time, the default Solaris system startup scripts will disable IP
- forwarding in the IP kernel module. This will prevent the remote
- machine from using the local machine as a gateway to access other
- hosts. The solution is to create an /etc/ppp/ip-up script
- containing something like this:
- #!/bin/sh
- /usr/sbin/ndd -set /dev/ip ip_forwarding 1
- See the man page for ip(7p) for details.
- Integrated pppd
- ***************
- Solaris 8 07/01 (Update 5) and later have an integrated version of
- pppd, known as "Solaris PPP 4.0," and is based on ppp-2.4.0. This
- version comes with the standard Solaris software distribution and is
- supported by Sun. It is fully tested in 64-bit and SMP modes, and
- with bundled and unbundled synchronous drivers. Solaris 8 10/01
- (Update 6) and later includes integrated PPPoE client and server
- support, with kernel-resident data handling. See pppd(1M).
- The feature is part of the regular full installation, and is
- provided by these packages:
- SUNWpppd - 32-bit mode kernel drivers
- SUNWpppdr - root-resident /etc/ppp config samples
- SUNWpppdu - /usr/bin/pppd itself, plus chat
- SUNWpppdx - 64-bit mode kernel drivers
- SUNWpppdt - PPPoE support
- SUNWpppg - GPL'd optional 'pppdump' and plugins
- SUNWpppgS - Source for GPL'd optional features
- Use the open source version of pppd if you wish to recompile to add
- new features or to experiment with the code. Production systems,
- however, should run the Sun-supplied version, if at all possible.
- You can run both versions on a single system if you wish. The
- Solaris PPP 4.0 interfaces are named "spppN," while this open source
- version names its interfaces as "pppN". The STREAMS modules are
- similarly separated. The Sun-supplied pppd lives in /usr/bin/pppd,
- while the open source version installs (by default) in
- /usr/local/bin/pppd.
- Dynamic STREAMS Re-Plumbing Support.
- ************************************
- Solaris 8 (and later) includes dynamic re-plumbing support. With
- this feature, modules below ip can be inserted, or removed, without
- having the ip stream be unplumbed, and re-plumbed again. All state
- in ip for the interface will be preserved as modules are added or
- removed. Users can install (or upgrade) modules such as firewall,
- bandwidth manager, cache manager, tunneling, etc., without shutting
- the interface down.
- To support this, ppp driver now uses /dev/udp instead of /dev/ip for
- the ip stream. The interface stream (where ip module pushed on top
- of ppp) is then I_PLINK'ed below the ip stream. /dev/udp is used
- because STREAMS will not let a driver be PLINK'ed under itself, and
- /dev/ip is typically the driver at the bottom of the tunneling
- interfaces stream. The mux ids of the ip streams are then added
- using SIOCSxIFMUXID ioctl.
- Users will be able to see the modules on the interface stream by,
- for example:
- pikapon# ifconfig ppp modlist
- 0 ip
- 1 ppp
- Or arbitrarily if bandwidth manager and firewall modules are installed:
- pikapon# ifconfig hme0 modlist
- 0 arp
- 1 ip
- 2 ipqos
- 3 firewall
- 4 hme
- Snoop Support.
- **************
- This version includes support for /usr/sbin/snoop. Tests have been
- done on Solaris 7 through 9. Only IPv4 and IPv6 packets will be sent
- up to stream(s) marked as promiscuous (i.e., those used by snoop).
- Users will be able to see the packets on the ppp interface by, for
- example:
- snoop -d ppp0
- See the man page for snoop(1M) for details.
- IPv6 Support.
- *************
- This is for Solaris 8 and later.
- This version has been tested under Solaris 8 and 9 running IPv6.
- Interoperability testing has only been done between Solaris machines
- in terms of the IPV6 NCP. An additional command line option for the
- pppd daemon has been added: ipv6cp-use-persistent.
- By default, compilation for IPv6 support is not enabled. Uncomment
- the necessary lines in pppd/Makefile.sol2 to enable it. Once done,
- the quickest way to get IPv6 running is to add the following
- somewhere in the command line option:
- +ipv6 ipv6cp-use-persistent
- The persistent id for the link-local address was added to conform to
- RFC 2472; such that if there's an EUI-48 available, use that to make
- up the EUI-64. As of now, the Solaris implementation extracts the
- EUI-48 id from the Ethernet's MAC address (the ethernet interface
- needs to be up). Future work might support other ways of obtaining
- a unique yet persistent id, such as EEPROM serial numbers, etc.
- There need not be any up/down scripts for ipv6,
- e.g. /etc/ppp/ipv6-up or /etc/ppp/ipv6-down, to trigger IPv6
- neighbor discovery for auto configuration and routing. The in.ndpd
- daemon will perform all of the necessary jobs in the
- background. /etc/inet/ndpd.conf can be further customized to enable
- the machine as an IPv6 router. See the man page for in.ndpd(1M) and
- ndpd.conf(4) for details.
- Below is a sample output of "ifconfig -a" with persistent link-local
- address. Note the UNNUMBERED flag is set because hme0 and ppp0 both
- have identical link-local IPv6 addresses:
- lo0: flags=1000849<UP,LOOPBACK,RUNNING,MULTICAST,IPv4> mtu 8232 index 1
- inet 127.0.0.1 netmask ff000000
- hme0: flags=1000843<UP,BROADCAST,RUNNING,MULTICAST,IPv4> mtu 1500 index 2
- inet 129.146.86.248 netmask ffffff00 broadcast 129.146.86.255
- ether 8:0:20:8d:38:c1
- lo0: flags=2000849<UP,LOOPBACK,RUNNING,MULTICAST,IPv6> mtu 8252 index 1
- inet6 ::1/128
- hme0: flags=2000841<UP,RUNNING,MULTICAST,IPv6> mtu 1500 index 2
- ether 8:0:20:8d:38:c1
- inet6 fe80::a00:20ff:fe8d:38c1/10
- hme0:1: flags=2080841<UP,RUNNING,MULTICAST,ADDRCONF,IPv6> mtu 1500 index 2
- inet6 fec0::56:a00:20ff:fe8d:38c1/64
- hme0:2: flags=2080841<UP,RUNNING,MULTICAST,ADDRCONF,IPv6> mtu 1500 index 2
- inet6 2000::56:a00:20ff:fe8d:38c1/64
- hme0:3: flags=2080841<UP,RUNNING,MULTICAST,ADDRCONF,IPv6> mtu 1500 index 2
- inet6 2::56:a00:20ff:fe8d:38c1/64
- ppp0: flags=10008d1<UP,POINTOPOINT,RUNNING,NOARP,MULTICAST,IPv4> mtu 1500 index 12
- inet 172.16.1.1 --> 172.16.1.2 netmask ffffff00
- ppp0: flags=2202851<UP,POINTOPOINT,RUNNING,MULTICAST,UNNUMBERED,NONUD,IPv6> mtu 1500 index 12
- inet6 fe80::a00:20ff:fe8d:38c1/10 --> fe80::a00:20ff:fe7a:24fb
- Note also that a plumbed ipv6 interface stream will exist throughout
- the entire PPP session in the case where the peer rejects IPV6CP,
- which further causes the interface state to stay down. Unplumbing
- will happen when the daemon exits. This is done by design and is not
- a bug.
- 64-bit Support.
- ***************
- This version has been tested under Solaris 7 through 9 in both 32-
- and 64-bit environments (Ultra class machines). Installing the
- package by executing "make install" will result in additional files
- residing in /kernel/drv/sparcv9 and /kernel/strmod/sparcv9
- subdirectories.
- 64-bit modules and driver have been compiled and tested using Sun's
- cc and gcc.
- Synchronous Serial Support.
- ***************************
- This version has working but limited support for the on-board
- synchronous HDLC interfaces. It has been tested with the
- /dev/se_hdlc, /dev/zsh, HSI/S, and HSI/P drivers. Synchronous mode
- was tested with a Cisco router.
- The ppp daemon does not directly support controlling the serial
- interface. It relies on the /usr/sbin/syncinit command to
- initialize HDLC mode and clocking.
- There is a confirmed bug with NRZ/NRZI mode in the /dev/se_hdlc
- driver, and Solaris patch 104596-11 is needed to correct it.
- (However this patch seems to introduce other serial problems. If
- you don't apply the patch, the workaround is to change the nrzi mode
- to yes or no, whichever works.)
- How to start pppd with synchronous support:
- #!/bin/sh
- local=1.1.1.1 # your ip address here
- baud=38400 # needed, but ignored by serial driver
- # Change to the correct serial driver/port
- #dev=/dev/zsh0
- dev=/dev/se_hdlc0
-
- # Change the driver, nrzi mode, speed and clocking to match
- # your setup.
- # This configuration is for external clocking from the DCE
- connect="syncinit se_hdlc0 nrzi=no speed=64000 txc=rxc rxc=rxc"
-
- /usr/sbin/pppd $dev sync $baud novj noauth $local: connect "$connect"
- Sample Cisco router config excerpt:
- !
- ! Cisco router setup as DCE with RS-232 DCE cable
- !
- !
- interface Serial0
- ip address 1.1.1.2 255.255.255.0
- encapsulation ppp
- clockrate 64000
- no nrzi-encoding
- no shutdown
- !
|