xixitalk's snippet

Post Longer Than 140 Characters Tweets

Oct 19, 2016 - Comments

编译stunnel

现在最新的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可以配置成ucontextpthread或者fork,默认是pthread。如果是pthread模式,创建一个线程处理每个连接;如果是fork模式,创建一个进程处理每个连接。用ps aux | grep stunnel查看,如果很多个stunnel进程,则是fork模式;如果只有一个stunnel进程,那就是ucontext或者pthread模式。ucontext实现了用户空间一个进程中上下文切换,用这种机制可以实现协程(Coroutine),从资源利用上来说ucontextpthreadfork更好一点。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 国际许可协议进行许可。