小米路由器高级玩法:[5]开启squid透明代理
1、下载squid源码
从官方下载最新的 3.4.5,我试过其它版本有问题,只解决了这个版本遇到的问题,其它版本的问题未解决。
wget http://www.squid-cache.org/Versions/v3/3.4/squid-3.4.5.tar.gz
tar xfz squid-3.4.5.tar.gz; cd squid-3.4.5
2、编译squid
# configure 的时候需要去掉认证模块,否则会出错无法通过 使用参数:--enable-auth-basic=none
# 另外,configure的时候会报一个krb5的错,所以添加了--with-krb5-config=/usr/local/arm/krb5/bin/krb5-config,krb5环境的编译参考:交叉编译krb5的文章# 即便加上了这个,还是报错 krb5.h找不到,实际上是有的,所以修改一下configure文件吧:vim configure
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for broken Heimdal krb5.h" >&5
$as_echo_n "checking for broken Heimdal krb5.h... " >&6; }
squid_cv_broken_heimdal_krb5_h=/usr/local/arm/krb5/include/krb5.h
if ${squid_cv_broken_heimdal_krb5_h+:} false; then :
$as_echo_n "(cached) " >&6
# 注意到,在24872行的位置添加了:squid_cv_broken_heimdal_krb5_h=/usr/local/arm/krb5/include/krb5.h 指定了krb5的头文件位置
下面开始编译
./configure --prefix=/userdisk/mine/squid --host=arm-xiaomi-linux-uclibcgnueabi --with-krb5-config=/usr/local/arm/krb5/bin/krb5-config --enable-auth-basic=none --enable-epoll
make -j8
中途还是会有一个报错,大概是这样的:
make[1]: Entering directory `/root/c/squid-3.4.5/src'
·······
arm-xiaomi-linux-uclibcgnueabi-g++ -o cf_gen ./cf_gen.cc -I. -I../include/ -I../src
./cf_gen cf.data ./cf.data.depend
/bin/bash: ./cf_gen: cannot execute binary file
make[1]: *** [cf_parser.cci] Error 126
make[1]: Leaving directory `/root/c/squid-3.4.5/src'
make: *** [all-recursive] Error 1
说cf_gen无法执行,编译使用的是xiaomi环境的gcc编译的软件当然没办法执行了,需要先去掉交叉编译环境:unset CC CXX
将squid源码解压到其它目录,用ubuntu系统的gcc编译一次tar xfz squid-3.4.5.tar.gz;cd squid-3.4.5./configurecd srcmake -j8
稍微编译一会就可以ctrl+c 中断编译过程就已经编译出来了,将编译出来的cf_gen 拷贝到xiaomi的交叉编译环境对应的/root/c/squid-3.4.5/src 目录里面,source /etc/profile
继续
make -j8
make intstall
3、部署squid
将 /userdisk/mine/squid
放到小米路由器对应的目录里面就可以使用了,启动的话执行:
/userdisk/mine/squid/sbin/squid -z #生成目录
/userdisk/mine/squid/sbin/squid
就可以启动了。
想要配置好透明代理的话还需要配置好 squid.conf,具体的通过“参考资料”的链接去下载吧。