<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>