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