<div>I'm trying to make stunnel wrapped ppp connection to achieve bidirectional data transfer over stunnel like shown below.<br></div><div><br></div><div>Stunnel client   --connect-->    Stunnel server<br></div><div>pppd client       --connect-->    pppd server<br></div><div>10.0.1.2             <--data-->     10.0.1.1<br></div><div><br></div><div>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.<br></div><div><br></div><div>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.<br></div><div><br></div><div>Does stunnel server have an option to start only one instance in 'exec' section or what should be done to fix this?<br></div><div><br></div><div>Any suggestions highly appreciated.<br></div><div><br></div><div># ps -axu | grep pppd<br></div><div>user 43231 0.0  0.0   476 0:00.01 persist lock passive 10.0.1.1:10.0.1.2 local noauth (pppd)<br></div><div>user 39187 0.0  0.0   468 0:00.01 persist lock passive 10.0.1.1:10.0.1.2 local noauth (pppd)<br></div><div><br></div><div># tail -n 10 /var/log/daemon<br></div><div>pppd[39187] pppd 2.3.5 started by user, uid 0<br></div><div>pppd[43231] Using interface ppp1<br></div><div>pppd[43231] Connect: ppp0 <--> /dev/ttyp2<br></div><div>pppd[43231] Local IP address 10.0.1.1<br></div><div>pppd[43231] Remote IP address 10.0.1.2<br></div><div>pppd[39187] pppd 2.3.5 started by user, uid 0<br></div><div>pppd[39187] Using interface ppp0<br></div><div>pppd[39187] Connect: ppp0 <--> /dev/ttyp5<br></div><div>pppd[39187] Couldn't set interface address: Address 10.0.1.1 or destination 10.0.1.2 already exists<br></div><div><br></div><div>Stunnel configurations for server and client:<br></div><div><br></div><div>1. Server's configuration<br></div><div>...<br></div><div>foreground = yes<br></div><div>debug = 7<br></div><div><br></div><div>socket = l:TCP_NODELAY=1<br></div><div>socket = r:TCP_NODELAY=1<br></div><div>;socket = l:SO_LINGER=1:60<br></div><div><br></div><div>; Session cache<br></div><div>sessionCacheSize = 100<br></div><div>sessionCacheTimeout = 600<br></div><div><br></div><div>stack = 65536<br></div><div><br></div><div>TIMEOUTbusy = 600<br></div><div>TIMEOUTconnect = 10<br></div><div>TIMEOUTidle = 43200<br></div><div>TIMEOUTclose = 5<br></div><div><br></div><div>[ppp]<br></div><div>accept = LOCAL-IP:PORT<br></div><div>exec = /usr/sbin/pppd<br></div><div>execargs = lock 10.0.1.1:10.0.1.2 local debug noauth<br></div><div>;execargs = lock passive 10.0.1.1:10.0.1.2 local debug noauth<br></div><div>pty = yes<br></div><div>CAfile = ca.crt<br></div><div>cert = server.crt<br></div><div>key = server.key<br></div><div>verifyChain = yes<br></div><div><br></div><div><br></div><div>2. Stunnel client's configuration<br></div><div>...<br></div><div>foreground = yes<br></div><div>debug = 7<br></div><div><br></div><div>socket = l:TCP_NODELAY=1<br></div><div>socket = r:TCP_NODELAY=1<br></div><div><br></div><div>; Session cache<br></div><div>sessionCacheSize = 1<br></div><div>sessionCacheTimeout = 600<br></div><div><br></div><div>failover = rr<br></div><div><br></div><div>[ppp]<br></div><div>client = yes<br></div><div>retry = yes<br></div><div>connect = REMOTE-IP:PORT<br></div><div>exec = /usr/sbin/pppd<br></div><div>execargs = defaultroute persist lock passive 10.0.1.2:10.0.1.1 local debug noauth name ppp-client<br></div><div>pty = yes<br></div><div>CAfile = ca.crt<br></div><div>cert = client.crt<br></div><div>key = client.key<br></div><div>verifyChain = yes<br></div><div>checkHost = REMOTE-HOSTNAME<br></div><div>;checkIP = 1.2.3.4<br></div><div><br></div><div><br></div>