# pkginfo | grep -i pppIf you have 64-bit Solaris, the following should also appear:
system SUNWapppr PPP/IP Asynchronous PPP daemon configuration files
system SUNWapppu PPP/IP Asynchronous PPP daemon and PPP login service
system SUNWpppk PPP/IP and IPdialup Device Drivers
#
system SUNWpppkx PPP/IP and IPdialup Device Drivers (64-bit)ASPPP also requires several UUCP support packages. They are:
# pkginfo | grep -i bnuIf pkginfo shows another PPP implementation (such as Solstice) is already installed, you need to decide whether to keep and use that installation or not. If not, then remove those PPP installations from the system with the pkgrm utility. Multiple PPP installations, on the same workstation, can interfere with each other.
system SUNWbnur Networking UUCP Utilities, (Root)
system SUNWbnuu Networking UUCP Utilities, (Usr)
#
# pkgadd -d . SUNWpppkFinally, aspppd should be patched after installation. Many first customer ship (FCS) versions had all sorts of bugs and problems. Patches for aspppd, if any, are available from SunSolve.
# pkgadd -d . SUNWpppkx # For 64-bit Solaris, if needed
# pkgadd -d . SUNWapppr
# pkgadd -d . SUNWapppu
# pkgadd -d . SUNWbnur
# pkgadd -d . SUNWbnuu
# reboot -- -r # Reboot and reconfigure devices
rp-pppoe-3.3.tar.gz |
Roaring
Penguin's PPPoE
product An open-source PPPoE implementation for Solaris/Linux that manages PPP traffic over ethernet. Note RP-PPPoE does not implement PPP itself. |
ptysh2-sysv.c |
A pseudo terminal (pty) redirector It's from O'Reilly's book Using and Managing PPP . This redirector creates a virtual serial interface with /bin/sh functioning as the modem. |
snprintf_2.2.tar.gz |
snprintf,
a portable implementation by Mark
Martinec Includes vsnprintf.c, asnprintf, vasnprintf, asprintf, and vasprintf. |
$ gunzip -c snprintf_2.2.tar.gz | tar xf -The desired output file is snprintf.o, which may be left in the snprintf_2.2 source directory for later use.
$ cd snprintf_2.2
$ ls
INSTALL README snprintf.h
LICENSE.txt README.html test.c
Makefile snprintf.c with_autoconf
$ cc -c snprintf.c
$
$ gunzip -c rp-pppoe-3.3.tar.gz | tar xf -
$ cd rp-pppoe-3.3
$ ls
README doc gui scripts
SERVPOET go man src
configs go-gui rp-pppoe.spec
$ cd src
$ ./configure
. . .
-n checking for Linux 2.4.X kernel-mode PPPoE support...
no*** Oops! I couldn't find pppd, the PPP daemon anywhere.
*** You must install pppd, version 2.3.10 or later.
*** I will keep going, but it may not work../configure: NOTFOUND: not found
*** Oops. I cannot figure out what version of pppd you have.
*** All I got back was ''
*** I will keep going, but it may not work.-n checking packing order of bit fields...
normal
Type 'make' to compile the software.
$
RP-PPPoE expects to work with an ANU PPP installation. Because we plan to use Solaris ASPPP instead, the configure script will complain that pppd is not found. We can safely ignore this error. Next we run make:
$ make
. . .cc -o pppoe-server pppoe-server.o if.o debug.o common.o md5.o
Undefined first referenced
symbol in file
snprintf pppoe-server.o
ld: fatal: Symbol referencing errors. No output written to pppoe-server
*** Error code 1
make: Fatal error: Command failed for target `pppoe-server'
$
The above is a compilation failure on Solaris 2.5.1, because of the aforementioned missing snprintf. We can correct this by manually invoking a variation of the failed compile command. Then run make again to finish up.
The make install recommendation causes RP-PPPoE to scribble itself throughout the system, including writing files in /usr/sbin, /usr/doc, /usr/man, and /etc/ppp. For the purpose of this document, the only file of critical importance is the pppoe client program. Therefore, we'll just install pppoe by copying it.$ cc -o pppoe-server pppoe-server.o if.o debug.o common.o md5.o ../../snprintf_2.2/snprintf.o
$ make
. . .
Type 'make install' as root to install the software.
$
$ suNow execute pppoe as follows. This detects the presence of any functioning access concentrators, via broadband ADSL modem, that are available through the workstation's ethernet interface, le0.
Password:
# cp pppoe /usr/local/bin
#
# /usr/local/bin/pppoe -I/dev/le0 -AIf no access concentrators were found, then PPPoE won't work. Low level troubleshooting (Is ADSL modem powered? Is network hub and wiring ok?) would be the next steps. However, if all is well, then continue on.
Access-Concentrator: adsl
Got a cookie: e2 6a 40 25 f3 72 5a 1b 59 f8 15 70 d4 0c e8 2d 17 07 00 00
--------------------------------------------------
AC-Ethernet-Address: 00:50:ba:89:7c:e1
--------------------------------------------------
#
$ cc -o ptysh2-sysv ptysh2-sysv.cTo execute the redirector, specify a single argument for a device name the redirector will create. The redirector then sets up a symbolic link to a pseudo terminal and attaches it to /bin/sh. Here we will use /dev/pppoe as the device name. All the PPP setup procedures later will reference this device name.
$ su
Password:
# cp ptysh2-sysv /usr/local/bin
#
# /usr/local/bin/ptysh2-sysv /dev/pppoe &Beware that there may be local workstation security implications by running a root pty redirector that's attached to a root shell.
# ls -la /dev/pppoe
lrwxrwxrwx 1 root other 10 Dec 24 18:47 /dev/pppoe -> /dev/pts/1
#
# tip -9600 /dev/pppoeThe redirector is functioning correctly if tip successfully connects, and we receive a shell prompt after sending a carriage return.
connected
# # ^D
Connection Closed
[EOT]
#
/etc/uucp/Systems
# name time type class phone login/etc/uucp/Devices
adsl Any p3oe 9600 - "" P_ZERO "" "" #--# stty\sraw\s-echo;exec\s/usr/local/bin/pppoe\s-I/dev/le0
# type device - speed modemprofile/etc/uucp/Dialers
p3oe pppoe - Any direct
# modemprofile 801codes chatWe use adsl as the target name to invoke a PPP connection. The main purpose for the script is to execute the UNIX command string:
direct
stty raw -echo;exec /usr/local/bin/pppoe -I/dev/le0If necessary, the string /dev/le0 may need to be changed to match the device name of your workstation's ethernet interface.
# chmod 666 /dev/pppoe; cu -d -L adslThe apparent junk characters are PPP frames, and indicate the chat script and pppoe are definitely working. Another possibility is to encounter a pppoe error message. Finally, you might also encounter an ADSL service access concentrator that doesn't respond at all, because it's waiting for your workstation to start PPP traffic first.
conn(adsl)
Trying entry from '/etc/uucp/Systems' - device type p3oe.
Device Type p3oe wanted
Trying device entry 'pppoe' from '/etc/uucp/Devices'.
processdev: calling setdevcfg(cu, p3oe)
fd_mklock: ok
fixline(6, 9600)
gdial(direct) called
Trying caller script 'direct' from '/etc/uucp/Dialers'.
getto ret 6
expect: ("")
got it
expect: ("")
got it
""
sendthem (^M)
expect: (#)
^M^J#got it
sendthem (stty raw -echo;exec /usr/local/bin/pppoe -I/dev/le0^M)
device status for fd=6
F_GETFL=2,iflag=`12005',oflag=`0',cflag=`2275',lflag=`0',line=`0'
cc[0]=`3',[1]=`34',[2]=`177',[3]=`25',[4]=`1',[5]=`0',[6]=`0',[7]=`0',
call _mode(1)
Connected
_receive started
# stty raw -echo;exec /usr/local/bin/pppoe -I/dev/le0
transmit started
~ÿ}#À!}!}!} }2}!}$}%Ô}#}$À#}%}&}5}?ðHÚ~~ÿ}#À!}!}!} }2}!}$}%Ô}#}$À#}%}&}5}?ðHÚ~~ÿ}#À!}!}!} }2}!}$}%Ô}#}$À#}%}&}5}?ðHÚ~
call _rcvdead(4)
Lost Carrier
call _bye(16)
Disconnected
call cleanup(4)
call _mode(0)
#
ifconfig ipdptp0 plumb 10.1.1.1 10.2.2.2 mtu 1492 upConfiguration keywords important for PPPoE are lcp_compression (ACFC), the absence of ipcp_async_map (ACCM), lcp_mru (MRU), and mtu. Solaris ASPPP does not support alternative FCS and will automatically reject that option.
path
interface ipdptp0
peer_system_name adsl
lcp_mru 1492
lcp_compression off
will_do_authentication pap
pap_id username
pap_password password
negotiate_address on
default_route
inactivity_timeout 600
debug_level 8
The descriptions for other configuration keywords, including keywords not mentioned here, are in the man page for aspppd.will_do_authentication chap
chap_name username
chap_secret password
# /etc/init.d/asppp starttext
# ifconfig ipdptp0
ipdptp0: flags=8d1<UP,POINTOPOINT,RUNNING,NOARP,MULTICAST> mtu 1492
inet 10.1.1.1 --> 10.2.2.2 netmask ff000000
ether 0:0:0:0:0:0
# ping 10.2.2.2
# cd /var/adm/logtext
# more asppp.log
21:09:34 process_ipd_msg: ipdptp0 needs connection
conn(adsl)
Trying entry from '/etc/uucp/Systems' - device type p3oe.
Device Type p3oe wanted
Trying device entry 'pppoe' from '/etc/uucp/Devices'.
processdev: calling setdevcfg(ppp, p3oe)
fd_mklock: ok
fixline(10, 9600)
gdial(direct) called
Trying caller script 'direct' from '/etc/uucp/Dialers'.
getto ret 10
expect: ("")
got it
expect: ("")
got it
""
sendthem (^M)
expect: (#)
^M^J#got it
sendthem (stty raw -echo;exec /usr/local/bin/pppoe -I/dev/le0^M)
call cleanup(0)
21:09:41 002065 ipdptp1916 ppp_diag: PPP DIAG OPEN
21:09:41 002066 ipdptp0 ppp_diag: SEND PPP ASYNC 19 Octets LCP Config-Req ID=66 LEN=14 MRU=1492 MAG#=2c9fbcd5
21:09:41 002067 ipdptp0 ppp_diag: RECEIVE {Unescaped characters} PPP ASYNC 24 Octets {BAD FCS} {Unrecognized protocol: 820 }
21:09:42 002068 ipdptp0 ppp_diag: RECEIVE PPP ASYNC 23 Octets LCP Config-Req ID=01 LEN=18 MRU=1492 Auth=PAP MAG#=0319ff20
21:09:42 002069 ipdptp0 ppp_diag: SEND PPP ASYNC 19 Octets LCP Config-Req ID=67 LEN=14 MRU=1492 MAG#=2c9fbcd5
21:09:42 002070 ipdptp0 ppp_diag: SEND PPP ASYNC 23 Octets LCP Config-ACK ID=01 LEN=18 MRU=1492 Auth=PAP MAG#=0319ff20
21:09:42 002071 ipdptp0 ppp_diag: RECEIVE PPP ASYNC 19 Octets LCP Config-ACK ID=67 LEN=14 MRU=1492 MAG#=2c9fbcd5
21:09:42 002072 ipdptp0 ppp_diag: SEND PPP ASYNC 27 Octets AuthPAP Authenticate ID=01 LEN=22 Peer-ID-Length= 8 Peer-ID: 75 73 65 72 6e 61 6d 65 Passwd-Length= 8 Passwd: 70 61 73 73 77 6f 72 64
21:09:42 002073 ipdptp0 ppp_diag: RECEIVE PPP ASYNC 13 Octets LCP Echo-REQ ID=00 LEN=8 MAG#=0319ff20 Req_info:
21:09:42 002074 ipdptp0 ppp_diag: SEND PPP ASYNC 13 Octets LCP Echo-REPLY ID=00 LEN=8 MAG#=2c9fbcd5 Req_info:
21:09:42 002075 ipdptp0 ppp_diag: RECEIVE PPP ASYNC 18 Octets AuthPAP Auth ACK ID=01 LEN=13 Msg-Length= 8 Login ok
21:09:42 002076 ipdptp0 ppp_diag: SEND PPP ASYNC 21 Octets IP_NCP Config-Req ID=68 LEN=16 VJCOMP MAXSID=15 Sid-comp-OK IPADDR=0.0.0.0
21:09:42 002077 ipdptp0 ppp_diag: RECEIVE PPP ASYNC 21 Octets IP_NCP Config-Req ID=01 LEN=16 IPADDR=10.0.0.1 VJCOMP MAXSID=15 Sid-comp-OK
21:09:42 start_ip: IP up on interface ipdptp0, timeout set for 600 seconds
21:09:42 002078 ipdptp0 ppp_diag: SEND PPP ASYNC 21 Octets IP_NCP Config-ACK ID=01 LEN=16 IPADDR=10.0.0.1 VJCOMP MAXSID=15 Sid-comp-OK
21:09:42 002079 ipdptp0 ppp_diag: RECEIVE PPP ASYNC 15 Octets IP_NCP Config-NACK ID=68 LEN=10 IPADDR=10.67.15.22
21:09:42 002080 ipdptp0 ppp_diag: SEND PPP ASYNC 21 Octets IP_NCP Config-Req ID=69 LEN=16 VJCOMP MAXSID=15 Sid-comp-OK IPADDR=10.67.15.22
21:09:42 002081 ipdptp0 ppp_diag: RECEIVE PPP ASYNC 21 Octets IP_NCP Config-ACK ID=69 LEN=16 VJCOMP MAXSID=15 Sid-comp-OK IPADDR=10.67.15.22
21:09:42 002082 ipdptp0 ppp_diag: SEND PPP ASYNC 89 Octets IP_PROTO
21:09:42 002090 ipdptp0 ppp_diag: SEND PPP ASYNC 89 Octets IP_PROTO
21:09:42 002091 ipdptp0 ppp_diag: RECEIVE PPP ASYNC 89 Octets IP_PROTO
21:09:52 002092 ipdptp0 ppp_diag: RECEIVE PPP ASYNC 13 Octets LCP Echo-REQ ID=01 LEN=8 MAG#=0319ff20 Req_info:
21:09:52 002093 ipdptp0 ppp_diag: SEND PPP ASYNC 13 Octets LCP Echo-REPLY ID=01 LEN=8 MAG#=2c9fbcd5 Req_info:
21:13:52 002140 ipdptp0 ppp_diag: RECEIVE PPP ASYNC 13 Octets LCP Echo-REQ ID=19 LEN=8 MAG#=0319ff20 Req_info:
21:13:52 002141 ipdptp0 ppp_diag: SEND PPP ASYNC 13 Octets LCP Echo-REPLY ID=19 LEN=8 MAG#=2c9fbcd5 Req_info:
21:13:53 process_ipd_msg: interface ipdptp0 has disconnected
21:13:53 disconnect: disconnected connection from ipdptp0
21:13:53 002142 ipdptp0 ppp_diag: PPP ASYNC DEVICE HANGUP
21:13:53 002143 ipdptp0 ppp_diag: PPP DIAG CLOSE