Written by Martha Starkey, from information originally compiled by Ken "The Dr." Corum.
Last updated June, 2015.
|Table of Contents|
PPP 4.0 was introduced with the July, 2001 release (a.k.a. "update 5") of the Solaris 8 operating system. Solaris 8 releases prior to July, 2001 still contain the aspppd software. PPPoE (PPP over Ethernet) capability was added in the Solaris 8 October, 2001 release (a.k.a. "update 6").
The /etc/release file will state which version of the Solaris 8 release is installed. Don't waste your time attempting to load and configure the PPP 4.0 packages on a release of Solaris prior to 07/01. There is no kernel support for them in the earlier versions and and it won't work. You can compile and run the non-Oracle versions of pppd on any release of Solaris, but Oracle only supports their own PPP versions.
Prior to Solaris 11: On disk 2 of the Solaris install cds:
Under most circumstances, only one type of any PPP software is all that is needed. If more than one version/type of Oracle's PPP software is needed, use the guidelines below:
Prior to Solaris 11: PPP 4.0 specific patches must be obtained from the vendor and will most likely require a support contract
For info on patch availability,see Oracle's Support page or the support.oracle.com website
Solaris 11x: Use the pkg command to install or update the pkgs listed above.
How to setup PPP logging: [Top of page]
Unlike aspppd and Solstice PPP 3.0.1, which have their own logging facilities, PPP 4.0 utilizes the syslog daemon via the LOG_DAEMON facility.
To generate logging to a file:
daemon.debug /var/log/ppp local2.debug /var/log/local2
Here's a recipe for connecting to a regional ISP that does no chat sequence and requires PAP. The options and options.ttya files are not used (all entries there are commented):
# more /etc/ppp/netway-chat "" AT&F1 #initialize the modem. AT&F can also be used. consult modem documentation. ABORT BUSY ABORT 'NO CARRIER' REPORT CONNECT TIMEOUT 10 "" "AT" SAY "Calling Netway.com\n" TIMEOUT 60 OK "ATDT5555551212" CONNECT \r #if \r, which sends a carriage return, confuses the peer, use \c #ogin: "pppusername" #if peer uses a traditional type of login/password, put keywords here #word: "pppuserpassword" #and comment out pap-secrets file unless it is also required by peer # more /etc/ppp/peers/netway user pppuser connect "/usr/bin/chat -v -f /etc/ppp/netway-chat" noipdefault defaultroute updetach #can be removed after successful debugging of connection along with "debug" lock modem crtscts ttya #the dialout device cua/a can also be used if the ttya device is problematic. see the man pages for se and zs. debug #can be removed after successful debugging of connection along with "updetach" 38400 noccp # #for increased speed, remove "updetach" and "debug" more /etc/ppp/pap-secrets pppusername * "password" * (note: "pppusername" and "password" used for example. Use the appropriate username and password.) # more /etc/resolv.conf domain netway.com nameserver 216.xxx.xxx.254 nameserver 216.xxx.xxx.253 (note: "x" characters used for example. Use real DNS server IP addresses appropriate to the domain or ISP) # more /etc/nsswitch.conf (purposely truncated) hosts: files dns To connect: pppd call netway.com To disconnect: pkill pppd
If PAP and/or CHAP are not needed:
The pap-secrets or chap-secrets file is not used and the "ogin:" and "ssword:" keywords and values would be placed in the chat script (the netway-chat file in the previous example).
Populating /etc/resolv.conf with the usepeerdns option:
If the ISP/peer does dynamic ip addressing and provides DNS information during the ppp negotiation, add a keyword and a required softlinked file to capture that information. This is handy when the specific DNS server IP addresses that the /etc/resolv.conf file utilizes are not known:
# rm -f /etc/resolv.conf # ln -s /etc/ppp/resolv.conf /etc/resolv.conf # ls -la res* lrwxrwxrwx 1 root other 20 Aug 13 06:10 resolv.conf -> /etc/ppp/resolv.conf
Note: To preserve /etc/resolv.conf, do "mv /etc/resolv.conf /etc/resolv.conf.old" instead of "rm -f". The /etc/ppp/resolv.conf file has to already exist prior to the ln command, but /etc/resolv.conf does not.
If you are reading this because you want to connect your Solaris system to the Internet via Verizon DSL and other high speed providers, you should consider the following.
For well under $100 (usually), you can purchase a "cable modem/DSL router" to very effectively and efficiently do the PPPoE for you. This approach has many advantages:
Once a router is installed and configured, the fastest and easiest way to get the Solaris machine on the Internet is to configure the network interface for DHCP. Oracle has you use the sys-unconfig command to do this. (In Solaris 11, the sys-unconfig command has been replaced by the sysconfig command.) You can also configure a Solaris DHCP client by creating an empty /etc/hostname.(interface) and /etc/dhcp.(interface) and rebooting. The main problem created by configuring the system for DHCP is that you will receive the hostname "unknown" from a Linksys or equivalent device. This is because those devices don't use a network client table, and/or can't reply to the Solaris client's "dhcpinfo" request.
You can work around this and set your hostname locally by editing a few files:
1. For Solaris 2.6 and Solaris 7 Systems. Edit the file /etc/init.d/rootusr and change the line that reads hostname=`/sbin/dhcpinfo Hostname` to # hostname=`/sbin/dhcpinfo Hostname` hostname=`shcat /etc/nodename` uname -S $hostname Save the file and reboot the system. The system's hostname will be the entry in the file /etc/nodename. 2. For Solaris 8 and 9 systems. Edit the file /etc/init.d/network and change the line that reads "dhcp") hostname=`/sbin/dhcpinfo Hostname` ;; to # "dhcp") hostname=`/sbin/dhcpinfo Hostname` ;; "dhcp") hostname=`shcat /etc/nodename` ;; Then, edit the file /etc/init.d/inetsvc and change the line that reads hostname=`/sbin/dhcpinfo Hostname` to # hostname=`/sbin/dhcpinfo Hostname` hostname=`/usr/bin/cat /etc/nodename` Save the files and reboot the system. The system's hostname will be the entry in the file /etc/nodename. 3. For Solaris 10 systems. See: No hostname when using DHCP in Sun Solaris 8/9/10 " .. . . For Solaris 10, . .. . . the hostname in /etc/nodename overrides the hostname provided by the DHCP Server . . ."
sppptun plugin pppoe.so connect "/usr/lib/inet/pppoec hme0 internet"(where "hme0" matches the ethernet interface on the client and "internet" matches the server's configuration. More info in the PPPoE server section below)
#sppptun plumb pppoed hme0 #sppptun plumb pppoe hme0
#pppd call my-isp-file
# pppd debug updetach call my-isp-file
# /usr/lib/inet/pppoec -i hme0
lock nodefaultroute noauth server_ip_or_hostname:client_ip_or_hostname #see note below proxyarp debugNOTE: ip addresses can also be put into /etc/ppp/pap-(or chap-)secrets or /etc/ppp/options.
The required ppp processes will be started when a user logs in with the /usr/bin/pppd shell.
To do a quick test of the ppp server, use any terminal program (tip, cu, Hyperterminal, Tera Term, etc.) to dial the server's phone number, login with the ppp user account name and password at the "login:" prompt and watch for ppp packets. The packets will show up on the screen as a flurry of bracket and brace characters. This demonstrates that the ppp mechanism is setup and operating properly on the server.
A note about proxyarp: To use proxyarp, all of the IP addresses must be on the same network. This includes the ethernet interface AND the sppp interface on the server as well as the IP address that the client will use.
This sample PPPoE server configuration sets up the following scenario: hme0 interface; Oracle clients only; internet service only; connect to server "roscoe" only; plumb interface at boot time. Both examples have been tested and work fine:
server roscoe client 8:0:20:*.*.* service internetExample #2: Set up the /etc/ppp/pppoe file with the device option:
server roscoe client 8:0:20:*.*.* device hme0 service internet
lock nodefaultroute noauth (server ip ppp addr):(client ip ppp addr)
sppptun plumb pppoed hme0 #used in the discovery stage sppptun plumb pppoec hme0 #used in the session stage
# sppptun query
# /usr/lib/inet/pppoec -i hme0