<html xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns="http://www.w3.org/TR/REC-html40"><head><meta http-equiv=Content-Type content="text/html; charset=utf-8"><meta name=Generator content="Microsoft Word 15 (filtered medium)"><style><!--
/* Font Definitions */
@font-face
        {font-family:Wingdings;
        panose-1:5 0 0 0 0 0 0 0 0 0;}
@font-face
        {font-family:"Cambria Math";
        panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
        {font-family:Calibri;
        panose-1:2 15 5 2 2 2 4 3 2 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0in;
        margin-bottom:.0001pt;
        font-size:12.0pt;
        font-family:"Times New Roman",serif;}
a:link, span.MsoHyperlink
        {mso-style-priority:99;
        color:#0563C1;
        text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
        {mso-style-priority:99;
        color:#954F72;
        text-decoration:underline;}
span.EmailStyle17
        {mso-style-type:personal-reply;
        font-family:"Calibri",sans-serif;
        color:#1F497D;}
.MsoChpDefault
        {mso-style-type:export-only;
        font-family:"Calibri",sans-serif;}
@page WordSection1
        {size:8.5in 11.0in;
        margin:1.0in 1.0in 1.0in 1.0in;}
div.WordSection1
        {page:WordSection1;}
--></style><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext="edit" spidmax="1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext="edit">
<o:idmap v:ext="edit" data="1" />
</o:shapelayout></xml><![endif]--></head><body lang=EN-US link="#0563C1" vlink="#954F72"><div class=WordSection1><p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1F497D'>Yes.  Use inetd (or equivalent).  Making an independent server work is difficult due to the problems like you are having.  Inetd is in many O/S included and essential, others available.  It always works.  Always.  Yes, there is a tiny amount of overhead for making connections.  On an ancient AIX IBM I manage 2-4 million XML documents exchanged per day with no problems, all with inetd.  Try it – save yourself some misery.  Or maybe it won’t help at all except to add information </span><span style='font-size:11.0pt;font-family:Wingdings;color:#1F497D'>J</span><span style='font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1F497D'> <o:p></o:p></span></p><p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1F497D'><o:p> </o:p></span></p><p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1F497D'>E<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1F497D'><o:p> </o:p></span></p><p class=MsoNormal><b><span style='font-size:11.0pt;font-family:"Calibri",sans-serif'>From:</span></b><span style='font-size:11.0pt;font-family:"Calibri",sans-serif'> stunnel-users [mailto:stunnel-users-bounces@stunnel.org] <b>On Behalf Of </b>Martin Got<br><b>Sent:</b> Monday, May 13, 2019 9:08 AM<br><b>To:</b> stunnel-users@stunnel.org<br><b>Subject:</b> [stunnel-users] Stunnel 5.44 server side 'exec = pppd' runs second child 'pppd' process after reconnection. Bug?<o:p></o:p></span></p><p class=MsoNormal><o:p> </o:p></p><div><p class=MsoNormal>I'm trying to make stunnel wrapped ppp connection to achieve bidirectional data transfer over stunnel like shown below.<o:p></o:p></p></div><div><p class=MsoNormal><o:p> </o:p></p></div><div><p class=MsoNormal>Stunnel client   --connect-->    Stunnel server<o:p></o:p></p></div><div><p class=MsoNormal>pppd client       --connect-->    pppd server<o:p></o:p></p></div><div><p class=MsoNormal>10.0.1.2             <--data-->     10.0.1.1<o:p></o:p></p></div><div><p class=MsoNormal><o:p> </o:p></p></div><div><p class=MsoNormal>OpenBSD 6.4amd64 with Stunnel 5.44 server works till stunnel retries 'exec = pppd' section once stunnel client is reconnected. Also 'exec = pppd' section retries after a short network related communication lag also. Previous 'pppd' child instance haven't killed by stunnel 5.44 before new instance started.<o:p></o:p></p></div><div><p class=MsoNormal><o:p> </o:p></p></div><div><p class=MsoNormal>So second 'pppd' process started and runs simultaneously with the first 'pppd' and link down. Restarting Stunnel server can clear child 'pppd' processes. So newly reestablished 'pppd' link between 10.0.1.1 <--> 10.0.1.2 endpoints works till next interconnection.<o:p></o:p></p></div><div><p class=MsoNormal><o:p> </o:p></p></div><div><p class=MsoNormal>Does stunnel server have an option to start only one instance in 'exec' section or what should be done to fix this?<o:p></o:p></p></div><div><p class=MsoNormal><o:p> </o:p></p></div><div><p class=MsoNormal>Any suggestions highly appreciated.<o:p></o:p></p></div><div><p class=MsoNormal><o:p> </o:p></p></div><div><p class=MsoNormal># ps -axu | grep pppd<o:p></o:p></p></div><div><p class=MsoNormal>user 43231 0.0  0.0   476 0:00.01 persist lock passive 10.0.1.1:10.0.1.2 local noauth (pppd)<o:p></o:p></p></div><div><p class=MsoNormal>user 39187 0.0  0.0   468 0:00.01 persist lock passive 10.0.1.1:10.0.1.2 local noauth (pppd)<o:p></o:p></p></div><div><p class=MsoNormal><o:p> </o:p></p></div><div><p class=MsoNormal># tail -n 10 /var/log/daemon<o:p></o:p></p></div><div><p class=MsoNormal>pppd[39187] pppd 2.3.5 started by user, uid 0<o:p></o:p></p></div><div><p class=MsoNormal>pppd[43231] Using interface ppp1<o:p></o:p></p></div><div><p class=MsoNormal>pppd[43231] Connect: ppp0 <--> /dev/ttyp2<o:p></o:p></p></div><div><p class=MsoNormal>pppd[43231] Local IP address 10.0.1.1<o:p></o:p></p></div><div><p class=MsoNormal>pppd[43231] Remote IP address 10.0.1.2<o:p></o:p></p></div><div><p class=MsoNormal>pppd[39187] pppd 2.3.5 started by user, uid 0<o:p></o:p></p></div><div><p class=MsoNormal>pppd[39187] Using interface ppp0<o:p></o:p></p></div><div><p class=MsoNormal>pppd[39187] Connect: ppp0 <--> /dev/ttyp5<o:p></o:p></p></div><div><p class=MsoNormal>pppd[39187] Couldn't set interface address: Address 10.0.1.1 or destination 10.0.1.2 already exists<o:p></o:p></p></div><div><p class=MsoNormal><o:p> </o:p></p></div><div><p class=MsoNormal>Stunnel configurations for server and client:<o:p></o:p></p></div><div><p class=MsoNormal><o:p> </o:p></p></div><div><p class=MsoNormal>1. Server's configuration<o:p></o:p></p></div><div><p class=MsoNormal>...<o:p></o:p></p></div><div><p class=MsoNormal>foreground = yes<o:p></o:p></p></div><div><p class=MsoNormal>debug = 7<o:p></o:p></p></div><div><p class=MsoNormal><o:p> </o:p></p></div><div><p class=MsoNormal>socket = l:TCP_NODELAY=1<o:p></o:p></p></div><div><p class=MsoNormal>socket = r:TCP_NODELAY=1<o:p></o:p></p></div><div><p class=MsoNormal>;socket = l:SO_LINGER=1:60<o:p></o:p></p></div><div><p class=MsoNormal><o:p> </o:p></p></div><div><p class=MsoNormal>; Session cache<o:p></o:p></p></div><div><p class=MsoNormal>sessionCacheSize = 100<o:p></o:p></p></div><div><p class=MsoNormal>sessionCacheTimeout = 600<o:p></o:p></p></div><div><p class=MsoNormal><o:p> </o:p></p></div><div><p class=MsoNormal>stack = 65536<o:p></o:p></p></div><div><p class=MsoNormal><o:p> </o:p></p></div><div><p class=MsoNormal>TIMEOUTbusy = 600<o:p></o:p></p></div><div><p class=MsoNormal>TIMEOUTconnect = 10<o:p></o:p></p></div><div><p class=MsoNormal>TIMEOUTidle = 43200<o:p></o:p></p></div><div><p class=MsoNormal>TIMEOUTclose = 5<o:p></o:p></p></div><div><p class=MsoNormal><o:p> </o:p></p></div><div><p class=MsoNormal>[ppp]<o:p></o:p></p></div><div><p class=MsoNormal>accept = LOCAL-IP:PORT<o:p></o:p></p></div><div><p class=MsoNormal>exec = /usr/sbin/pppd<o:p></o:p></p></div><div><p class=MsoNormal>execargs = lock 10.0.1.1:10.0.1.2 local debug noauth<o:p></o:p></p></div><div><p class=MsoNormal>;execargs = lock passive 10.0.1.1:10.0.1.2 local debug noauth<o:p></o:p></p></div><div><p class=MsoNormal>pty = yes<o:p></o:p></p></div><div><p class=MsoNormal>CAfile = ca.crt<o:p></o:p></p></div><div><p class=MsoNormal>cert = server.crt<o:p></o:p></p></div><div><p class=MsoNormal>key = server.key<o:p></o:p></p></div><div><p class=MsoNormal>verifyChain = yes<o:p></o:p></p></div><div><p class=MsoNormal><o:p> </o:p></p></div><div><p class=MsoNormal><o:p> </o:p></p></div><div><p class=MsoNormal>2. Stunnel client's configuration<o:p></o:p></p></div><div><p class=MsoNormal>...<o:p></o:p></p></div><div><p class=MsoNormal>foreground = yes<o:p></o:p></p></div><div><p class=MsoNormal>debug = 7<o:p></o:p></p></div><div><p class=MsoNormal><o:p> </o:p></p></div><div><p class=MsoNormal>socket = l:TCP_NODELAY=1<o:p></o:p></p></div><div><p class=MsoNormal>socket = r:TCP_NODELAY=1<o:p></o:p></p></div><div><p class=MsoNormal><o:p> </o:p></p></div><div><p class=MsoNormal>; Session cache<o:p></o:p></p></div><div><p class=MsoNormal>sessionCacheSize = 1<o:p></o:p></p></div><div><p class=MsoNormal>sessionCacheTimeout = 600<o:p></o:p></p></div><div><p class=MsoNormal><o:p> </o:p></p></div><div><p class=MsoNormal>failover = rr<o:p></o:p></p></div><div><p class=MsoNormal><o:p> </o:p></p></div><div><p class=MsoNormal>[ppp]<o:p></o:p></p></div><div><p class=MsoNormal>client = yes<o:p></o:p></p></div><div><p class=MsoNormal>retry = yes<o:p></o:p></p></div><div><p class=MsoNormal>connect = REMOTE-IP:PORT<o:p></o:p></p></div><div><p class=MsoNormal>exec = /usr/sbin/pppd<o:p></o:p></p></div><div><p class=MsoNormal>execargs = defaultroute persist lock passive 10.0.1.2:10.0.1.1 local debug noauth name ppp-client<o:p></o:p></p></div><div><p class=MsoNormal>pty = yes<o:p></o:p></p></div><div><p class=MsoNormal>CAfile = ca.crt<o:p></o:p></p></div><div><p class=MsoNormal>cert = client.crt<o:p></o:p></p></div><div><p class=MsoNormal>key = client.key<o:p></o:p></p></div><div><p class=MsoNormal>verifyChain = yes<o:p></o:p></p></div><div><p class=MsoNormal>checkHost = REMOTE-HOSTNAME<o:p></o:p></p></div><div><p class=MsoNormal>;checkIP = 1.2.3.4<o:p></o:p></p></div><div><p class=MsoNormal><o:p> </o:p></p></div><div><p class=MsoNormal><o:p> </o:p></p></div></div></body></html>