现在最新的stunnel是v5.36,而很多平台都还是stunnel4
下载stunnel-5.36.tar.gz,解压。
wget https://www.stunnel.org/downloads/stunnel-5.36.tar.gz
tar -zxvf stunnel-5.36.tar.gz
用./configure --help
查看编译配置选项。
cd stunnel-5.36
./configure --help
配置选项中--with-threads
可以配置成ucontext
、pthread
或者fork
,默认是pthread
。如果是pthread
模式,创建一个线程处理每个连接;如果是fork
模式,创建一个进程处理每个连接。用ps aux | grep stunnel
查看,如果很多个stunnel
进程,则是fork
模式;如果只有一个stunnel
进程,那就是ucontext
或者pthread
模式。ucontext
实现了用户空间一个进程中上下文切换,用这种机制可以实现协程(Coroutine),从资源利用上来说ucontext
比pthread
和fork
更好一点。fork
方式稳定性和安全性应该最好,一是代码最简单,二是进程独立空间。pthread
是默认配置,稳定性也有保障。
用configure
生成Makefile
,下面配置选项含义:禁用ipv6
,禁用fips,禁用TCP Wrappers,每个网络连接创建一个线程处理。选项根据自己需要增删。
备注:TCP Wrappers作用是用/etc/hosts.allow
和 /etc/hosts.deny
进行IP地址过滤,属于安全增强。
./configure --disable-ipv6 --disable-fips --disable-libwrap --with-threads=pthread
生成Makefile
之后,make
进行编译。
make
make
编译完成编译好的stunnel位于src/stunnel
,根据发行版本配置启动。我偷懒,直接覆盖了原来安装的/usr/bin/stunnel4
命令,其他的脚本还用stunnel4
的,目前没有发现问题。
sudo service stunnel4 stop
sudo cp /usr/bin/stunnel4 /usr/bin/stunnel4.backup
sudo cp src/stunnel /usr/bin/stunnel4
sudo service stunnel4 start
本作品采用知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议进行许可。