一半君的总结纸

听话只听一半君

Shadowsocks 1.4.1 OpenSSL PolarSSL 动态/静态编译全版 人肉备份

这个贴似乎被和谐了,人肉备份一下,原贴地址

恩山WIFI论坛

标题: Shadowsocks 1.4.1 OpenSSL PolarSSL 动态/静态编译全版 [打印本页]


作者: SZPUNK    时间: 2013-11-17 05:14
标题: Shadowsocks 1.4.1 OpenSSL PolarSSL 动态/静态编译全版
静态版全部已经在 asus ac66u/n16, belkin f7d4302 裸体 Shibby’s Tomato 112/114 上测试通过。

静态版 packed 目录内为 upx 压缩过的执行文件,压缩后 PolarSSL 的静态版几乎和 OpenSSL 动态版文件大小类似~

ss141

下载: http://pan.baidu.com/s/1j9spp


作者: haxc    时间: 2013-11-17 22:51
请教怎么编译 静态编译


作者: SZPUNK    时间: 2013-11-18 19:03

haxc 发表于 2013-11-17 22:51
请教怎么编译 静态编译

 

#整理shadowsocks一下编译过程

wget http://http://www.ddwrt.com/ddwrtv2/downloads/others/sourcecode/toolchains/currenttoolchains.tar.bz2
tar jxf currenttoolchains.tar.bz2

export PATH=/root/toolchainmipsel_gcc4.1.2/bin/:$PATH
export CC=mipsellinuxgcc

wget http://http://www.openssl.org/source/openssl1.0.1e.tar.gz
tar zxf openssl1.0.1e.tar.gz
./config noasm prefix=/usr/src/openssl

vi Makefile

#查找-m64参数全部删掉

make && make install

git clone https://github.com/madeye/shadowsockslibev.git
vi configure
#注释掉
$as_echo “#define malloc rpl_malloc” >>confdefs.h

vi libev/ev.c

#修改
#elif defined __mips__
#define ECB_MEMORY_FENCE __asm__ __volatile__ (“.set mips2; sync; .set mips0″: : :”memory”)

./configure host=mipsellinux withopensslinclude=/usr/src/openssl/include withopenssllib=/usr/src/openssl/lib LDFLAGS=ldl
make

#我使用的是tomato的toolchains,编译过程差不多,其中openssl参数为:

./config prefix=/opt/usr/openssl crosscompileprefix=/opt/brcm/K26/hndtoolsmipseluclibc4.2.4/bin/mipsellinuxshared noasm

#shadowsocks参数为:

./configure host=mipsellinux target=mipsellinux prefix=/opt/usr withopenssllib=/opt/usr/openssl/lib withopensslinclude=/opt/usr/openssl/include cachefile=linux.cache LDFLAGS=“-ldl -Wl,-rpath,/opt/usr/lib”

#修改的地方差不多,只不过我是通过cache欺骗来修改的`rpl_malloc’错误,其次编译时引入了rpath,指定so文件。同时我也做了一个将openssl静态编译进去的版本,能正常工作,缺点是比较大。



#上面是 V2EX 上面整理的

#下面是我自己成功编译使用的参数

#polarssl version
git clone https://github.com/polarssl/polarssl.git
cd polarssl
./configure prefix=/opt
make && make install

./configure withcryptolibrary=polarssl withpolarssl=/opt/include/polarssl LDFLAGS=“-Wl,-static -static -static-libgcc”

#openssl version
./configure host=mipsellinux target=mipsellinux prefix=/opt/usr withopenssllib=/opt/usr/openssl/lib withopensslinclude=/opt/usr/openssl/include cachefile=linux.cache LDFLAGS=“-ldl -Wl,-rpath,/opt/usr/lib”


作者: SZPUNK    时间: 2013-11-18 19:07
另外,我是直接在 AC66U 上面编译的。。。缺什么补什么现在OPT目录打包150多M了。。。基础编译工具包用的是:

https://www.lancethepants.com/files/index.php?dir=Tomatoware/


作者: haxc    时间: 2013-11-18 19:21
感谢分享,我回去试试


作者: trob    时间: 2013-11-19 22:50

SZPUNK 发表于 2013-11-18 19:03
#整理shadowsocks一下编译过程wget http://www.dd%5B/ba

看了下,感情第一个Tomato环境下的shadowsocks还是我编译出来的。
我看了你共享的盘里,非常丰富,借鉴不少,感谢。
redsocks最近更新了,麻烦编译一下,我的虚拟机已经删除了。


作者: trob    时间: 2013-11-19 22:54
至此,我也分享一下之前编译shadowsocks的记录,可以参考一下,同时希望以后有网友能编译出更多更好的软件来。
1.配置交叉编译环境:

nano /root/.profile
在最后一行处加入
if [ -d “/opt/brcm” ] ; then
PATH=/opt/brcm/K26/hndtools-mipsel-uclibc-4.2.4/bin:/opt/brcm/K26/hndtools-mipsel-uclibc-4.2.4/mipsel-linux-uclibc/bin:$PATH
export PATH
fi
按ctrl+x y 保存退出, 以便每次启动linux时能找到编译器.

ref:

http://www.right.com.cn/forum/thread-53623-1-1.html

http://digiland.tw/viewtopic.php?pid=9177

2.编译openssl:

参数配置:

./config –prefix=/opt/usr/openssl –cross-compile-prefix=/opt/brcm/K26/hndtools-mipsel-uclibc-4.2.4/bin/mipsel-linux- shared no-asm
3.编译shadowsocks-libev:

参数配置:

./configure –host=mipsel-linux –target=mipsel-linux –prefix=/opt/usr  –with-openssl-lib=/opt/usr/openssl/lib –with-openssl-include=/opt/usr/openssl/include –cache-file=linux.cache LDFLAGS=”-ldl -Wl,-rpath,/opt/usr/lib”

1.error:

undefined reference to `rpl_malloc’

then:

echo “ac_cv_func_malloc_0_nonnull=yes” >linux.cache

2.error:

opcode not supported on this processor: mips1 (mips1) `sync’

then:

修改 /libev/ev.c 文件,如下:

#define ECB_MEMORY_FENCE         __asm__ __volatile__ (“sync”     : : : “memory”)

修改为:

#define ECB_MEMORY_FENCE         __asm__ __volatile__ (“.set mips2; sync; .set mips0″: : :”memory”)

4.制作ipkg:

./ipkg-build -c -o root -g root  /opt/shadowsocks-libev

ref:

http://digiland.tw/viewtopic.php?id=1804


作者: SZPUNK    时间: 2013-11-22 00:36
本帖最后由 SZPUNK 于 2013-11-22 00:40 编辑

trob 发表于 2013-11-19 22:50
看了下,感情第一个Tomato环境下的shadowsocks还是我编译出来的。
我看了你共享的盘里,非常丰富, …

http://pan.baidu.com/s/1AEeOt


作者: trob    时间: 2013-11-22 10:03

请教一下,我在tomato里搭建了shadowsocks和redsocks。但是在实际使用过程中发现redsocks+ss-local配合 iptables的效果很不好,速度慢且有时还连不上;而直接使用rr-redir配合iptables的效果却非常好,不知什么原因,搞了两天,郁闷。


作者: SZPUNK    时间: 2013-11-22 17:10
rs+ss-local 需要处理好 dns 污染的问题,而且用 auto 方式判定,效率肯定不如直接把被X网站转向ss-redir;但是用ss-redir需要维护被X网站列表太痛苦了。

目前我还是用 rs+ss-local,没有感觉特别慢,实际上rs本身有缓存,只要访问过的站点,不会慢多少的,timeout 设置为 5 秒。


作者: jmhjl    时间: 2013-11-24 02:51
大神,能搞个教程出来,直接在tt里用吗?帐号已经有了。


作者: trob    时间: 2013-11-28 21:05

SZPUNK 发表于 2013-11-22 17:10
rs+ss-local 需要处理好 dns 污染的问题,而且用 auto 方式判定,效率肯定不如直接把被X网站转向ss-redir; …

我之前已解决dns的问题,前端使用了pdnsd+dnscrypt。我再试试local+rs的模式,感觉是不是rs什么参数没有设置好。
感谢回复。


作者: trob    时间: 2013-11-28 21:09

jmhjl 发表于 2013-11-24 02:51
大神,能搞个教程出来,直接在tt里用吗?帐号已经有了。

这个就不好说了啊,起码你应该知道以下几点:
1、dns设置,比如dnscrypt、pdnsd什么的
2、ss的使用
3、rs的使用及工作原理
4、iptables的使用
我告诉你一个可以学习的地方,请查看RA-MOD的源码,虽然是openwrt的,但是原理基本是一样的。


作者: jmhjl    时间: 2013-11-29 09:47

trob 发表于 2013-11-28 21:09
这个就不好说了啊,起码你应该知道以下几点:
1、dns设置,比如dnscrypt、pdnsd什么的
2、ss的使用

好的。谢谢哈


作者: jmhjl    时间: 2013-11-29 09:57
对了,问下,这个动态版在tt里怎么安装进去呢?不是ipk文件啊?


作者: trob    时间: 2013-12-4 14:28

jmhjl 发表于 2013-11-29 09:57
对了,问下,这个动态版在tt里怎么安装进去呢?不是ipk文件啊?

拷贝文件至tomato执行目录(jffs或者外置U盘)中,并修改文件权限(chmod +x),然后文件就可以直接执行了。
那个目录一般为/opt/bin或者/opt/sbin,当然你得先安装optware。


作者: jmhjl    时间: 2013-12-4 16:11

trob 发表于 2013-12-4 14:28
拷贝文件至tomato执行目录(jffs或者外置U盘)中,并修改文件权限(chmod +x),然后文件就可以直接执行了 …

非常感谢,试试看!


作者: nyhpro    时间: 2015-6-19 07:07
大神可以的,但是没有介绍如何使用啊


欢迎光临 恩山WIFI论坛 (http://www.right.com.cn/forum/) Powered by Discuz! X3.2
Advertisements

发表评论

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / 更改 )

Twitter picture

You are commenting using your Twitter account. Log Out / 更改 )

Facebook photo

You are commenting using your Facebook account. Log Out / 更改 )

Google+ photo

You are commenting using your Google+ account. Log Out / 更改 )

Connecting to %s

%d 博主赞过: