搭建APN Proxy (APN代理)翻墙
APN 代理参数小修正(squid)
前面曾经写过两篇与 APN 代理有关的文章,自己的APN 也分享给朋友们使用了有1个月,从自己搭建到公测至今,已经有4个月了。可以说APN代理确实要方便太多,但是这当中也发现一些小问题:土豆,优酷无法在 iOS 上观看。如果你是使用 squid 2.7 ,可以加入以下设定解决,起主要作用的是高亮部分:
#Enable Anonymizer (Anonymous Proxy)
acl all src 0.0.0.0/0
#header_replace User-Agent anonymous
forwarded_for off
header_access Accept allow all
header_access Accept-Charset allow all
header_access Accept-Encoding allow all
header_access Accept-Language allow all
header_access Accept-Ranges allow all
header_access Age allow all
header_access Allow allow all
header_access Authorization allow all
header_access Cache-Control allow all
header_access Connection allow all
header_access Content-Base allow all
header_access Content-Disposition allow all
header_access Content-Encoding allow all
header_access Content-Language allow all
header_access Content-Length allow all
header_access Content-Location allow all
header_access Content-MD5 allow all
header_access Content-Range allow all
header_access Content-Type allow all
header_access Cookie allow all
header_access Date allow all
header_access ETag allow all
header_access Expires allow all
header_access From allow all
header_access Host allow all
header_access If-Match allow all
header_access If-Modified-Since allow all
header_access If-None-Match allow all
header_access If-Range allow all
header_access Last-Modified allow all
header_access Link allow all
header_access Location allow all
header_access Max-Forwards allow all
header_access Mime-Version allow all
header_access Pragma allow all
header_access Proxy-Authenticate allow all
header_access Proxy-Authentication-Info allow all
header_access Proxy-Authorization allow all
header_access Proxy-Connection allow all
header_access Public allow all
#header_access Range allow all
header_access Referer allow all
header_access Request-Range allow all
header_access Retry-After allow all
header_access Server allow all
header_access Set-Cookie allow all
header_access Title allow all
header_access Transfer-Encoding allow all
header_access Upgrade allow all
header_access User-Agent allow all
header_access Vary allow all
header_access Via deny all
header_access Warning allow all
header_access WWW-Authenticate allow all
header_access Authentication-Info allow all
header_access X-Cache allow all
header_access X-Cache-Lookup allow all
header_access X-Forwarded-For allow all
header_access X-Request-URI allow all
header_access X-Squid-Error allow all
header_access All deny all
。
还有个问题,就是 pps , pptv 收看时在 iOS上也有问题,这个的修改参数还没有试验出来,我将仍然在这个帖子中更新方法。
原文:http://bao3.blogspot.com/2012/03/apn-squid.html
========
搭建增强型代理服务器(APN Proxy)
我在上一篇博文中已经写了如何搭建简单APN代理,这一个月中我一直在测试(苦逼的IT男,别人过年带老婆回家,我是带着ipad+ssh 在家测试),于是推翻掉上一篇文章中的方案,使用本文的方案。
本篇原理与上一篇相仿,不同的实现则是使用 Ziproxy+Privoxy(上一篇是使用Squid+Privox/3Proxy/polipo),我的系统是 FreeBSD 8.2-Release ,你可以选用你喜欢的Unix-Like主机。使用Squdi实现的好处是在访问时可以有缓存:由于让PC(或者手持设备---以下统称装置)加快网速, 以抵消由于使用代理带来的网速慢,因此比使用VPN绝对是要快多了。
本文假定你有两台主机,国内主机使用SSH连接到国外主机,事实上如果你只有一台国外主机,则可以直接使用Ziproxy而无需Privoxy,但是请务 必注意,在只有一台国外主机的情况下,请将Ziproxy的端口改成一组特殊端口,抱歉,不能直说是哪几个端口,但是聪明的你应该可以猜到,实在不想猜, 就直接到twitter上问吧
我想多数人在装置应该使用过Opera浏览器,当我们打开一个网页的时候,Opera用自己的OperaTurbo技术加速打开,实际上大家也发现了,用 它打开网页后图像变的模糊了,这是因为被服务器压缩过。而我们今天使用的这个方案就是采用压缩方式来达到节约流量和提高网速。
Ziproxy的主要作用是压缩HTTP请求和优化精简图片,它可以把JS,CSS,HTML和JPEG,PNG,GIF都压缩,然后再传递给你的装置使 用,更好玩的是,它还可以区分用户,比如你想给手机用户使用代理,那么创建一个针对手机的配置,把图片压缩的重一点;而想把代理给ipad或者电脑用,就 创建一个针对电脑的配置,把图片压缩的轻一点;两个配置的端口只要不同就OK了。
Privoxy在这个方案中有两个作用:1 将SSH的 socks5 代理转化为HTTP代理然后给ziproxy使用 ,这是因为 Ziproxy只支持http的父代理。2 区分网站。Privoxy会将被 某国家 屏蔽的网站转发到SSH 代理上,而将没有屏蔽的直接走你的国内主机线路。
方案开始实施:
1 建立到国外主机的连接( SSH -D)
我是使用autossh的,建立你也使用这个工具,它会监视你的ssh连接,在断线时可以自动重连接,不过你可以自己动手写脚本
我的SSH 连接在本地开的端口是 7070 ,这个是大家现在的标配了,不多说。
2 安装和配置Privoxy
freebsd上可以用ports安装也可以直接pkg_add -r ;其他系统也一样有自己的方式安装,Unix-Like中似乎只有Mac有点区别,幸好不会有人用Mac server做这个方案。 :D
这里着重说一下配置
Privoxy的配置文件默认是config ,我的位置是在 freebsd 的 /usr/local/etc/privoxy/
配置文件很短,我们要修改一下
ota# cat /usr/local/etc/privoxy/config
user-manual /usr/local/share/doc/privoxy/user-manual
confdir /usr/local/etc/privoxy
logdir /var/log/privoxy
actionsfile match-all.action
actionsfile default.action
#actionsfile block.action
actionsfile gfw.action
filterfile default.filter
#filterfile user.filter
logfile logfile
hostname www.test.me
#forward-socks5 / 127.0.0.1:7070 .
listen-address 127.0.0.1:8116
toggle 1
enable-remote-toggle 1
enable-remote-http-toggle 0
enable-edit-actions 0
enforce-blocks 0
buffer-limit 5120
#connection-sharing 0
forwarded-connect-retries 3
accept-intercepted-requests 0
allow-cgi-request-crunching 0
activity-animation 1
split-large-forms 0
keep-alive-timeout 0
socket-timeout 120
handle-as-empty-doc-returns-ok 1
诸位请注意以上代码中黑底紫字部分,是我们的关键,其他字段都是是否开关一些功能和是不是支持广告过滤和屏蔽恶意网站。在紫色字体中,我故意注释掉了 forward-socks5的代理转发功能,这个意图是希望Privoxy默认不转发到SSH,即默认情况下让Privoxy直接走国内IP。可是我们 想让一些特殊网站走国外IP,这就是紫色字体中的 actionsfile gfw.action 这里指定。
gfw.action 是一个专门收集一些特殊网站的文件并在些文件中规定了这些网站走SSH -D 的代理(端口是7070).这个文件起先我是自己写的,一个一个加上去,后来直接用正则过滤了autoproxy2pac中的URL,后来我发现一个更好 玩的,你可以直接在这里下载gfw.action这个文件,传送门-> 爱我就摸我一下.。
从以上网站下载的gfw.action文件还不能被我们直接使用,原作者已经提到,需要我们将其中的代理端口改成自己的,我是直接用
sed -i ‘s/7127/7070/’ /usr/local/etc/privoxy/gfw.action
你可以使用vi打开来改第一行(注:FreeBSD 上sed不能使用这条语句需要安装GNU Sed,即gsed方可)。
经过这一步,Privoxy将会默认直接走国内路由,访问特殊网站时则会自动选择SSH代理,达到了区分网站的目的,接下来我们就可以实现将访问流量进行压缩的操作
3 Ziproxy 配置
安装好Ziproxy,Debian/Ubuntu都有源可以直接装。而Ziproxy的配置,在我的 FreeBSD 上存在于 /usr/local/etc/ziproxy/ 下 (这也是FreeBSD一个优点,所有第三方都放在这个位置),cp ziproxy.conf.sample ziproxy.conf ,使用默认配置。
默认配置当然不合我们的要求,修改以下参数:
1 Port = 6060
这是指Ziproxy 的监听端口,这个端口将来用来给你的其他装置用
2 #Address = “127.0.0.1”
这个是指将Ziproxy的代理绑定到你主机的哪个IP上(如果有多个的话),默认是绑定到所有的IP上,但需要注意一下是否是这样,免得手机连接不上代理却是因这个,那就是笑话了。
3 #OnlyFrom = “127.0.0.1”
这个是访问限制,可以限制哪些IP可以访问你的代理(APN Proxy),我是允许所有人访问,但这极不安全,可以使用SASL认证,目前我还在研究中。。。。
4 # MaxActiveUserConnections = 20
这是用来限制一个用户可以产生多少条连接,默认是不限制,但这样就可能被人用来下载迅雷等等,你可以加上限制
5 NextProxy=”127.0.0.1″
下一跳代理,也就是父级代理。我们的手机连通过 Port=6060端口连接到你的这台主机后,ziproxy会把连接直接丢给 127.0.0.1的下一个代理(也就是我们的Privoxy)
6 NextPort=8116
下一跳代理的端口,我设定的是8116。
7 ConventionalProxy = true
这一项没什么好说,一定要是true,我人为改为false就失败了。
4 扫尾
[你没有必要看这里,因为做完前3步你的服务器就已经完全可以运行了]
大家可以跳过一步,之所以加上,是因为我自己有两个海外的SSH 主机,防止一个断掉也或者用于网络质量不好的时候切换线路。于是自己写了一段脚本,这段脚本只能运行在FreeBSD下,因为里面有几个命令其他系统没有,不过都有替代命令。
脚本的目的是监视两个SSH生成的端口7070和8080,如果其中一个断掉了(比如SSH 7070),就自动强制Privoxy使用另一个(SSH 8080),并且尝试立刻重新连接(SSH 7070)。这样在APN Proxy就可以尽量不受影响。下面是脚本
#!/bin/sh
export AUTOSSH_PIDFILE=/var/run/autossh.pid
while :
do
sshport=`sockstat -4l | grep :8080 | awk ‘{print $3}’`
sshpid=$( sockstat -4l | grep autossh | grep 9101 | awk ‘{print $3}’ )
pidfile=`cat /var/run/autossh.pid`
privoxypid=`cat /var/run/privoxy/privoxy.pid`
if [ -z “$sshport” -o -z “$sshpid” ]; then
kill -9 $sshpid
kill -9 $sshport
/usr/local/bin/autossh -M 9100 -f -q -N -D 8080 root@206.253.165.50
/usr/local/bin/gsed -i ‘s/8080/7070/’ /usr/local/etc/privoxy/gfw.action&&kill -HUP $privoxypid
#echo Now Start AutoSSH@PID `cat $pidfile`
fi
ssh1port=`sockstat -4l | grep :7070 | awk ‘{print $3}’`
ssh1pid=$( sockstat -4l | grep autossh | grep 9001 | awk ‘{print $3}’ )
if [ -z “$ssh1port” -o -z “$ssh1pid” ]; then
kill -9 $ssh1port
kill -9 $ssh1pid
/usr/local/bin/autossh -M 9000 -f -q -N -D 7070 root@216.231.135.225
/usr/local/bin/gsed -i ‘s/7070/8080/’ /usr/local/etc/privoxy/gfw.action&& kill -HUP $privoxypid
fi
sleep 10
done
这段代码已经稳定运行了20天了,我现在随便重启一台海外的主机,这脚本都可以自动切换到另一台,很是舒服。这属于额外设置,你可以不必理会。
经过以上设置,你的APN 代理算是初步弄好了,还记得我前面提到的可以创建不同的ziproxy来区分不同用户吗,那你就可以分享给别人了。但是需要注意的是,尽管这种方式不会被 RST重置,但是仍然不可能脱离有关部门的监管。并且如果他人分享APN 代理给你用,你也需要注意,这是不加密的,你的信息被会轻易获取,所以最好是跟自己的铁哥们合着用或者直接自己使用
最后写完的时候看到网上有这么一文章,与我的思路一致,不同之处在于,将SSH 方式使用openvpn,这样不必使用privoxy了;区分代理走国内还是走国外也是由openvpn实现,而我是使用privoxy。这思路也不错, 用我的方案可以压缩+过滤,用他的,则应该没有这功能,大家可以参考这里 http://ayanamist.tumblr.com/post/16227815835/apn-proxy
有人只有一台海外主机,那你幸福了,所有都不需要做,直接安装ziproxy,然后默认设置情况下改一下Port为特殊端口就可以直接代理了,区别只在于没有了广告过滤和路由区分,不过如果是在电脑上或者使用ios,则可以用 autoproxy2pac来达到自动路由。
祝各位龙年大吉,早生贵子,家人健康,生活美满~~~ 顺道征女友一只,让我也能实现前面的这句话
原文:http://bao3.blogspot.com/2012/02/apn-proxy.html
========
简易 APN Proxy (APN代理)的搭建
2012年2月1日,新增加了一种方案,请看 《搭建增强型代理服务器(APN Proxy)》
2012-01-03 更新 3proxy 及 监控进程脚本,分别见 B 3) 和
曾经在twitter被封锁的时候,我在长城宽带干过一件事,那就是将twitter的请求和通讯使用SSH,让全网用户可以无阻访问,不过也因此付出了代价,略不去说了。
注意上面最后一句 autossh -M ,这个参数是监控端口,大体是通过此端口来判断 ssh 隧道是不是有问题,这个端口你可以随意指定。
如果按以上方式,其实你已经配置好了代理,并且打开你的手机,在代理那里输入 IP : 8118 就可以访问世界了。iphone/ipad/touch/需要到app store 下载安装“易apn”这个软件,然后在专网那里自定一个 apn 代理就可以了。
当然,选用squid自有选用的道理,配置完之后同样也可以被squid拿来使用。我们接着配置另一个代理 polipo (两个代理软件,你只需要选择一个)
原文:http://bao3.blogspot.com/2012/01/apn-proxy-apn.html
文中所述APN代理必有一段过程是不加密传输的,不够安全,非不得已不建议使用,一般是在微软WP系统及其他非智能机无法使用VPN迫于无奈才用,当然如果你不在意安全问题而且感觉VPN耗掉或速度不够快也可以试试。
privoxy是做什么的啊 原来网赚的时候用过 ~~~
一个代理软件,功能很多,可以转socks为http(Tor里以前用过),还可以过滤网络流量(可以用来去广告),