使用ssh -D保证网络畅通

更新:
直接使用ssh -D,不需要使用tinyproxy
依据:
man SSH
-D [bind_address:]port
Currently the SOCKS4 and SOCKS5 protocols are supported, and ssh will act as a SOCKS server

如:
ssh -D 192.168.0.1:8133 account@sshserver
就可以建立一个sock proxy.

后在浏览器的sock proxy设置就行了。
同时也可使用priovxy转乘http,然后和squid配合。

原文:

回到北京,通上网后,就发现一个上国外的网站特别慢,而且一些网站由于GFW的原因不能访问,这个很不方便,所以对这个进行了一些研究,现在把经验分享给大家。

主要的考虑:
1. 通过GFW,正常访问wikipedia, 和国外的新闻网站。
突破GFW的方法有
(1)tor,由于P2P,且数据加密,GFW对它没有什么太大的办法,但不排除有人,专门开诱引服务器的可能。
(2)访问cgi-proxy之类的东西, (与cgi-proxy之间使用ssl连接),
(3)使用ssh, 在linux爱好者中,有不少人在国外有host, 这个也应该是一个不错的方法

2。尽可能快的加速访问国际网的速度(现在慢有人说是光纤的原因,可以光纤事故已经有一个月了,到底要到什么时候才能修好。
这个我考虑使用多个proxy同时做代理的方法,

3.接入本地网站的计算机,无需做特别的设置就可以访问使用上面的功能。
这个一般使用iptable的功能,把80端口的数据包转发到代理服务器的端口。

现在配置的

上面是ssh tunner的过程,
host1上一般需要运行一个很小的代理程序,这里使用的是tinyproxy
他可以在一般用户方式下执行
我的配置文件:

User xxx
Port 62888
Listen 127.0.0.1
Timeout 600
Logfile “./tinyproxy.log”
LogLevel Notice
PidFile “./tp.pid”
MaxClients 30
MinSpareServers 3
MaxSpareServers 10
StartServers 5
Allow 127.0.0.1
ConnectPort 443
ConnectPort 563

2007 1/29 更新:
两个注意点:
1. port需要是没有用过的, 不要使用大于65536的port,使用的port也不能是其他程序已经使用的。
2. tinyproxy的执行方法:
tinyproxy -c tinyproxy.conf -d
不加 -d的话是不行的。 实际的执行过程中,我是执行了一个screen,在screen的一个窗口上执行了上面的命令。

在另一个窗口上做测试。

3。 测试方法:
可以使用screen.
配置
.wgetrc
http-proxy=127.0.0.1:62888
然后 wget xxx

如上图的示在本地开启多种连接。
/etc/hosts
192.168.0.1 sshtunnerl1
192.168.0.1 sshtunnerl2
192.168.0.1 tornetwork

/etc/squid/squid.conf

加入

cache_peer sshtunnel1 parent 8119 7 no-digest no-netdb-exchange
cache_peer tornetwork parent 8118 7 no-digest no-netdb-exchange

acl wikidomain dstdomain .wikipedia.org
acl voadomain dstdomain .voanews.com
acl sfdomain dstdomain .sf.net
acl sourceforgedomain dstdomain .sourceforge.net

cache_peer_access sshtunnel1 allow wikidomain
cache_peer_access sshtunnel1 allow voadomain
cache_peer_access sshtunnel1 allow sfdomain
cache_peer_access sshtunnel1 allow sourceforgedomain

cache_peer_access sshtunnel1 deny all

todo:
1。怎么写好规则squid,由于 squid restart比较费时,所以不知道有没有方法可以在不重启squid的情况下更新
规则。

已经解决, 使用/etc/init.d/squid reload, 一个低级的拼写错误使我误认为squid不支持reload(感谢achaoge)
achaoge
还提出了cat squid.conf.orig acl_rules > squid.conf && reload的方法,可以把关于对不同domain的配置,集中到一个文件来。这样如果有人愿意就可以写出很方便的web based的规则编辑工具。

2。怎样实现,第三种方法,就是从internet取得大里的代理,验证后,动态修改squid的规则。

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.