Posts Tagged ssh

使用privoxy+ssh按需代理

前文ssh端口代理介绍如何ssh建立socks代理。

如果只是使用socks代理的话你所有的互联网访问都会通过socks代理,假设你的服务器在国外,那么你对国内网站的访问就会变得很慢。因为要通过国外服务器中转,其实可能访问国内网站也不见的会快,毕竟需要通过服务器中转数据了。所以最好的解决方案是只有需要代理的网站才通过代理访问。

Firefox上有一款插件,foxy proxy可以做到让特定的网站通过代理访问。

最早的时候我只用firefox,foxy proxy也就够用了。后来chrome在我桌面上开始和firefox并驾齐驱之后,foxy proxy这款只能在firefox上使用的“按需代理软件”就变得不怎么够用了。我也没想在chrome上再找一款这样的插件了。因为这样的话就需要在两个浏览器上单独设置两遍,这个是让人难以接受。然后我就找到了privoxy这款代理软件了。

privoxy不是简单的代理而已,它还可以通过你的配置来过滤http数据,比如去掉广告之类、重定向。而在本文中我要用到的就是用它控制重定向特定url通过指定的代理服务器,也就是“按需代理”。

如何安装就不赘述了,privoxy不管在linux和windows上都有相应的安装包。privoxy在这两种系统上的配置文件都是通用的。所以以下的配置在L和W系统上都可以使用,当然配置文件的位置不同。

在ubuntu上安装完privoxy之后可以打开 /etc/privoxy/config这个配置文件。
listen-address:这是privoxy监听的ip和端口,我一般会把ip改成0.0.0.0这是为了让其他计算机也可以使用本机做代理。
actionsfile:这里指定了好几个不同的配置文件,我之使用user.action这个配置文件。

打开/etc/privoxy/user.action这个文件。这个文件里面已经预先为我们设置了很多过滤条件。由于只是用它做“按需代理”的伙计,所以原来的配置都不去改动它。直接到最后一行加上如下配置:

{+forward-override{forward-socks4a 127.0.0.1:9120 .}}
.google.com

上面这个配置就是说所有对google.com这个域名的访问全部通过 127.0.0.1:9120这个socks代理访问。
127.0.0.1:9210 根据自己的实际情况修改。
对于你需要通过代理访问的网站你只需要在.google.com之后增加即可。

, ,

1 Comment

ssh端口代理

刚想写一篇blog关于如何用privoxy与ssh反向代理实做一个个人按需翻墙代理服务器。然后发现“非我”(blog)上没有关于ssh反向代理的文章。想起来这还是在很早以前在blogbus发表的,后来被和谐了。偷个懒修改一下重发出来作为今天的blog。

安全访问隧道。
例子1:ssh -f -N -L 12345:localhost:80 root@192.168.100.140
说明:ssh -f -N -L <本地端口>:<本地IP>:<服务器端口> <服务器地址>
-f 指明该ssh跑后台
-N 指明该ssh连接不需要执行命令
-L 是用来绑定本地端口到服务器的端口。

这条命令执行后,就是把本地的12345端口绑定到了192.168.100.140这台服务器的80端口。
也就所有访问本地12345端口的网络数据都会转发到192.168.100.140的80端口,假设140服务器的80端口有网站在跑,那么当我访问127.0.0.1:12345的时候就会打开192.168.100.140的网站。
由于ssh隧道是加密的,那么所有从你本机到140服务器80端口的数据都不怕会被别人截获数据进行分析了。

例子2:ssh -f -N -R 12345:localhost:80 root@192.168.100.140
说明:ssh -f -N -R <服务器端口>:<本地IP>:<本地端口> <服务器地址>
-R 是用来绑定服务器端口到本地端口

这次正好相反,我如果使用浏览器访问192.168.100.140:12345的话就会访问到我本机的80端口,如果本地有web服务的话就可以打开网站了。
使用这个加密访问在其次,更多的是一般通过服务器是很难访问到我内网的计算机的,而如此一绑定,我就可以通过服务器来访问我内网的计算机了。
前段时间我用这种方法使用android上的一款远程通知软件, android notifier。让他可以通过internet通知本机的桌面程序。

SOCKS代理。
例子:ssh -f -N -D 12345 root@192.168.100.140
说明:ssh -f -N -D <本地端口> <服务器地址>
-D 建立一个本地的动态应用层协议的端口转发。

这个的作用是也就是所有到本机12345端口的网络包都通过140服务器转发,服务器就变作了你的SOCKS代理服务器。
通俗的说也就是你在浏览器里面把127.0.0.1:12345做为SOCKS代理之后就可以通过服务器来上网了。如果你的服务器在国外的话,你就能够上一些原本不能上的网站了。如果你们公司只允许访问特定网站的话,这一手也绝对管用。

默认的ssh SOCKS代理是不支持socks4a(dns解析也通过服务器)的,想要使用socks4a可以参见 openssh-client 支持socks4a代理

,

1 Comment

openssh-client 支持socks4a代理

买了vps之后就建了一个vpn,可是很明显,vpn不能够满足我的要求。

所有的数据都从vpn走的话,是很方便,不用分辨哪些网站不能走正常途径。可是访问国内网站就比较慢了。所以还是选择使用ssh隧道来做到动态选择。

唯一的问题在于ssh隧道支持不支持socks4a,那么dns解析只能在本地进行。而dns总是会得到一些fake 信息,也挺烦人的。

万幸,搜到此文 Patch for SOCKS4A in OpenSsh ,于是换了ssh客户端。

privoxy socks4a + ssh tunnel 搞定一切代理,过滤。

,

1 Comment

SetTextSize SetPageWidth