README.sol2 10 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260
  1. This file describes the installation process for ppp-2.4 on systems
  2. running Solaris. The Solaris and SVR4 ports share a lot of code but
  3. are not identical. The STREAMS kernel modules and driver for Solaris
  4. are in the solaris directory (and use some code from the modules
  5. directory).
  6. NOTE: Although the kernel driver and modules have been designed to
  7. operate correctly on SMP systems, they have not been extensively
  8. tested on SMP machines. Some users of SMP Solaris x86 systems have
  9. reported system problems apparently linked to the use of previous
  10. versions of this software. I believe these problems have been fixed.
  11. Installation.
  12. *************
  13. 1. Run the configure script and make the user-level programs and the
  14. kernel modules.
  15. ./configure
  16. make
  17. The configure script will automatically find Sun's cc if it's in
  18. the standard location (/opt/SUNWspro/bin/cc). If you do not have
  19. Sun's WorkShop compiler, configure will attempt to use 'gcc'. If
  20. this is found and you have a 64 bit kernel, it will check that gcc
  21. accepts the "-m64" option, which is required to build kernel
  22. modules.
  23. You should not have to edit the Makefiles for most ordinary cases.
  24. 2. Install the programs and kernel modules: as root, do
  25. make install
  26. This installs pppd, chat and pppstats in /usr/local/bin and the
  27. kernel modules in /kernel/drv and /kernel/strmod, and creates the
  28. /etc/ppp directory and populates it with default configuration
  29. files. You can change the installation directories by editing
  30. solaris/Makedefs. If you have a 64 bit kernel, the 64-bit drivers
  31. are installed in /kernel/drv/sparcv9 and /kernel/strmod/sparcv9.
  32. If your system normally has only one network interface at boot
  33. time, the default Solaris system startup scripts will disable IP
  34. forwarding in the IP kernel module. This will prevent the remote
  35. machine from using the local machine as a gateway to access other
  36. hosts. The solution is to create an /etc/ppp/ip-up script
  37. containing something like this:
  38. #!/bin/sh
  39. /usr/sbin/ndd -set /dev/ip ip_forwarding 1
  40. See the man page for ip(7p) for details.
  41. Integrated pppd
  42. ***************
  43. Solaris 8 07/01 (Update 5) and later have an integrated version of
  44. pppd, known as "Solaris PPP 4.0," and is based on ppp-2.4.0. This
  45. version comes with the standard Solaris software distribution and is
  46. supported by Sun. It is fully tested in 64-bit and SMP modes, and
  47. with bundled and unbundled synchronous drivers. Solaris 8 10/01
  48. (Update 6) and later includes integrated PPPoE client and server
  49. support, with kernel-resident data handling. See pppd(1M).
  50. The feature is part of the regular full installation, and is
  51. provided by these packages:
  52. SUNWpppd - 32-bit mode kernel drivers
  53. SUNWpppdr - root-resident /etc/ppp config samples
  54. SUNWpppdu - /usr/bin/pppd itself, plus chat
  55. SUNWpppdx - 64-bit mode kernel drivers
  56. SUNWpppdt - PPPoE support
  57. SUNWpppg - GPL'd optional 'pppdump' and plugins
  58. SUNWpppgS - Source for GPL'd optional features
  59. Use the open source version of pppd if you wish to recompile to add
  60. new features or to experiment with the code. Production systems,
  61. however, should run the Sun-supplied version, if at all possible.
  62. You can run both versions on a single system if you wish. The
  63. Solaris PPP 4.0 interfaces are named "spppN," while this open source
  64. version names its interfaces as "pppN". The STREAMS modules are
  65. similarly separated. The Sun-supplied pppd lives in /usr/bin/pppd,
  66. while the open source version installs (by default) in
  67. /usr/local/bin/pppd.
  68. Dynamic STREAMS Re-Plumbing Support.
  69. ************************************
  70. Solaris 8 (and later) includes dynamic re-plumbing support. With
  71. this feature, modules below ip can be inserted, or removed, without
  72. having the ip stream be unplumbed, and re-plumbed again. All state
  73. in ip for the interface will be preserved as modules are added or
  74. removed. Users can install (or upgrade) modules such as firewall,
  75. bandwidth manager, cache manager, tunneling, etc., without shutting
  76. the interface down.
  77. To support this, ppp driver now uses /dev/udp instead of /dev/ip for
  78. the ip stream. The interface stream (where ip module pushed on top
  79. of ppp) is then I_PLINK'ed below the ip stream. /dev/udp is used
  80. because STREAMS will not let a driver be PLINK'ed under itself, and
  81. /dev/ip is typically the driver at the bottom of the tunneling
  82. interfaces stream. The mux ids of the ip streams are then added
  83. using SIOCSxIFMUXID ioctl.
  84. Users will be able to see the modules on the interface stream by,
  85. for example:
  86. pikapon# ifconfig ppp modlist
  87. 0 ip
  88. 1 ppp
  89. Or arbitrarily if bandwidth manager and firewall modules are installed:
  90. pikapon# ifconfig hme0 modlist
  91. 0 arp
  92. 1 ip
  93. 2 ipqos
  94. 3 firewall
  95. 4 hme
  96. Snoop Support.
  97. **************
  98. This version includes support for /usr/sbin/snoop. Tests have been
  99. done on Solaris 7 through 9. Only IPv4 and IPv6 packets will be sent
  100. up to stream(s) marked as promiscuous (i.e., those used by snoop).
  101. Users will be able to see the packets on the ppp interface by, for
  102. example:
  103. snoop -d ppp0
  104. See the man page for snoop(1M) for details.
  105. IPv6 Support.
  106. *************
  107. This is for Solaris 8 and later.
  108. This version has been tested under Solaris 8 and 9 running IPv6.
  109. Interoperability testing has only been done between Solaris machines
  110. in terms of the IPV6 NCP. An additional command line option for the
  111. pppd daemon has been added: ipv6cp-use-persistent.
  112. By default, compilation for IPv6 support is not enabled. Uncomment
  113. the necessary lines in pppd/Makefile.sol2 to enable it. Once done,
  114. the quickest way to get IPv6 running is to add the following
  115. somewhere in the command line option:
  116. +ipv6 ipv6cp-use-persistent
  117. The persistent id for the link-local address was added to conform to
  118. RFC 2472; such that if there's an EUI-48 available, use that to make
  119. up the EUI-64. As of now, the Solaris implementation extracts the
  120. EUI-48 id from the Ethernet's MAC address (the ethernet interface
  121. needs to be up). Future work might support other ways of obtaining
  122. a unique yet persistent id, such as EEPROM serial numbers, etc.
  123. There need not be any up/down scripts for ipv6,
  124. e.g. /etc/ppp/ipv6-up or /etc/ppp/ipv6-down, to trigger IPv6
  125. neighbor discovery for auto configuration and routing. The in.ndpd
  126. daemon will perform all of the necessary jobs in the
  127. background. /etc/inet/ndpd.conf can be further customized to enable
  128. the machine as an IPv6 router. See the man page for in.ndpd(1M) and
  129. ndpd.conf(4) for details.
  130. Below is a sample output of "ifconfig -a" with persistent link-local
  131. address. Note the UNNUMBERED flag is set because hme0 and ppp0 both
  132. have identical link-local IPv6 addresses:
  133. lo0: flags=1000849<UP,LOOPBACK,RUNNING,MULTICAST,IPv4> mtu 8232 index 1
  134. inet 127.0.0.1 netmask ff000000
  135. hme0: flags=1000843<UP,BROADCAST,RUNNING,MULTICAST,IPv4> mtu 1500 index 2
  136. inet 129.146.86.248 netmask ffffff00 broadcast 129.146.86.255
  137. ether 8:0:20:8d:38:c1
  138. lo0: flags=2000849<UP,LOOPBACK,RUNNING,MULTICAST,IPv6> mtu 8252 index 1
  139. inet6 ::1/128
  140. hme0: flags=2000841<UP,RUNNING,MULTICAST,IPv6> mtu 1500 index 2
  141. ether 8:0:20:8d:38:c1
  142. inet6 fe80::a00:20ff:fe8d:38c1/10
  143. hme0:1: flags=2080841<UP,RUNNING,MULTICAST,ADDRCONF,IPv6> mtu 1500 index 2
  144. inet6 fec0::56:a00:20ff:fe8d:38c1/64
  145. hme0:2: flags=2080841<UP,RUNNING,MULTICAST,ADDRCONF,IPv6> mtu 1500 index 2
  146. inet6 2000::56:a00:20ff:fe8d:38c1/64
  147. hme0:3: flags=2080841<UP,RUNNING,MULTICAST,ADDRCONF,IPv6> mtu 1500 index 2
  148. inet6 2::56:a00:20ff:fe8d:38c1/64
  149. ppp0: flags=10008d1<UP,POINTOPOINT,RUNNING,NOARP,MULTICAST,IPv4> mtu 1500 index 12
  150. inet 172.16.1.1 --> 172.16.1.2 netmask ffffff00
  151. ppp0: flags=2202851<UP,POINTOPOINT,RUNNING,MULTICAST,UNNUMBERED,NONUD,IPv6> mtu 1500 index 12
  152. inet6 fe80::a00:20ff:fe8d:38c1/10 --> fe80::a00:20ff:fe7a:24fb
  153. Note also that a plumbed ipv6 interface stream will exist throughout
  154. the entire PPP session in the case where the peer rejects IPV6CP,
  155. which further causes the interface state to stay down. Unplumbing
  156. will happen when the daemon exits. This is done by design and is not
  157. a bug.
  158. 64-bit Support.
  159. ***************
  160. This version has been tested under Solaris 7 through 9 in both 32-
  161. and 64-bit environments (Ultra class machines). Installing the
  162. package by executing "make install" will result in additional files
  163. residing in /kernel/drv/sparcv9 and /kernel/strmod/sparcv9
  164. subdirectories.
  165. 64-bit modules and driver have been compiled and tested using Sun's
  166. cc and gcc.
  167. Synchronous Serial Support.
  168. ***************************
  169. This version has working but limited support for the on-board
  170. synchronous HDLC interfaces. It has been tested with the
  171. /dev/se_hdlc, /dev/zsh, HSI/S, and HSI/P drivers. Synchronous mode
  172. was tested with a Cisco router.
  173. The ppp daemon does not directly support controlling the serial
  174. interface. It relies on the /usr/sbin/syncinit command to
  175. initialize HDLC mode and clocking.
  176. There is a confirmed bug with NRZ/NRZI mode in the /dev/se_hdlc
  177. driver, and Solaris patch 104596-11 is needed to correct it.
  178. (However this patch seems to introduce other serial problems. If
  179. you don't apply the patch, the workaround is to change the nrzi mode
  180. to yes or no, whichever works.)
  181. How to start pppd with synchronous support:
  182. #!/bin/sh
  183. local=1.1.1.1 # your ip address here
  184. baud=38400 # needed, but ignored by serial driver
  185. # Change to the correct serial driver/port
  186. #dev=/dev/zsh0
  187. dev=/dev/se_hdlc0
  188. # Change the driver, nrzi mode, speed and clocking to match
  189. # your setup.
  190. # This configuration is for external clocking from the DCE
  191. connect="syncinit se_hdlc0 nrzi=no speed=64000 txc=rxc rxc=rxc"
  192. /usr/sbin/pppd $dev sync $baud novj noauth $local: connect "$connect"
  193. Sample Cisco router config excerpt:
  194. !
  195. ! Cisco router setup as DCE with RS-232 DCE cable
  196. !
  197. !
  198. interface Serial0
  199. ip address 1.1.1.2 255.255.255.0
  200. encapsulation ppp
  201. clockrate 64000
  202. no nrzi-encoding
  203. no shutdown
  204. !