不知道为什么今天PPA又只能使用代理访问了。好像终端不支持Socks5代理 没办法。咱转换吧。
(以下方法合用几乎可以使linux下面大多数软件实现代理通信,即使软件本身不支持)
1.使用tsocks转接
[bash]sudo apt-get install privoxy
vim /etc/tsocks.conf[/bash]
简单介绍下配置方法
[bash]local = 192.168.0.0/255.255.255.0
local = 10.0.0.0/255.0.0.0
local = 127.0.0.1/255.255.255.255
#本地子网不使用代理
#这里的本地子网不一定是局域网,凡是本机可以直接连接的IP都属于local的范围。
#放大了讲,国内的IP基本上对tsocks来说都是一个“本地子网”(伟大的局域网)
path {
reaches = 150.0.0.0/255.255.0.0
reaches = 150.1.0.0:80/255.255.0.0
server = 10.1.7.25
server_type = 5
default_user = delius
default_pass = hello
}
#例外网站。这里列出来的网站不通过默认服务器走,而是通过特定的服务器走。server_type规定了这是一个socks5代理服务器
# 默认服务器(不是本地子网的,也不是例外网站)
server = 192.168.0.1
# Server type defaults to 4 so we need to specify it as 5 for this one
server_type = 5
# The port defaults to 1080 but I've stated it here for clarity
#默认端口1080
server_port = 1080
[/bash]
我们可以这样测试一下
[bash] tsocks wget https://www.dropbox.com -v -O /dev/null
--2011-01-09 21:28:52-- https://www.dropbox.com/
正在解析主机 www.dropbox.com... 208.43.202.50
Connecting to www.dropbox.com|208.43.202.50|:443... 已连接。
已发出 HTTP 请求,正在等待回应... 200 OK
长度:未指定 [text/html]
Saving to: `/dev/null'
#略............
#直接wget,就会撞墙
wget https://www.dropbox.com -v -O /dev/null
--2011-01-09 21:29:15-- https://www.dropbox.com/
正在解析主机 www.dropbox.com... 208.43.202.50
Connecting to www.dropbox.com|208.43.202.50|:443...
#查看代理IP
tsocks wget http://202.12.29.205/templates/yourip.html -o /dev/null -O /tmp/yourip.html && cat /tmp/yourip.html |grep '\['
#略......
[/bash]
效果那是立竿见影啊!遗憾的是似乎已经停止开发了,而且ssh和ftp不工作,其官方网站你推荐了另外一个替代品,Dante,这个配置有点复杂,后面我会给出一个更好的替代品。
2.使用privoxy转换Socks5->HTTP代理
[bash]sudo apt-get install privoxy
vim /etc/privoxy/config[/bash]
在最后一行加入
[bash]forward-socks4 / 127.0.0.1:1080 . # socks v4
forward-socks4a / 127.0.0.1:1080 . # socks v4, use remote dns
forward-socks5 / 127.0.0.1:1080 . # socks v5[/bash]
注意后面有个点
1080是本机的Socks代理端口
然后用service把privoxy给restart一下即可
默认监听的端口是本机的8118
如果要监听所有端口或者更换所有端口
把
[bash]listen-address 127.0.0.1:8118[/bash]
改为
[bash]listen-address :8118[/bash]
即可
这个虽然有点杀鸡用牛刀的意思,而且privoxy的鉴权不好实现。但是还是个好方法。
3.使用proxychains完美替代
[bash]apt-get install proxychains
vim /etc/proxychains.conf[/bash]
配置非常简单,软件有3种代理模式
# Dynamic - Each connection will be done via chained proxies
# all proxies chained in the order as they appear in the list
# at least one proxy must be online to play in chain
# (dead proxies are skipped)
# otherwise EINTR is returned to the app
动态模式
按照列表内指定的代理的顺序执行代理操作,遇到不可用代理时会自动切换
至少需要一个可用代理# Strict - Each connection will be done via chained proxies
# all proxies chained in the order as they appear in the list
# all proxies must be online to play in chain
# otherwise EINTR is returned to the app
严格模式
代理顺序严格按照列表顺序来,列表内代理必须全部处于可用状态
# Random - Each connection will be done via random proxy
# (or proxy chain, see chain_len) from the list
# this option is good for scans
随机模式
随机选择代理代理列表里面的代理,代理个数由chain_len决定(如果你的代理个数少于chain_len个数,会报错)
[ProxyList]配置节指定了代理列表。支持socks4/5 http等
还支持带认证的代理
比如
type host port [user pass]
socks5 192.168.67.78 1080 lamer secret
贴一下我的配置文件
[bash]#cat /etc/proxychains.conf |grep -v "#" |sed /^$/d
dynamic_chain
chain_len = 1
tcp_read_time_out 15000
tcp_connect_time_out 10000
[ProxyList]
socks5 127.0.0.1 1080
socks4 127.0.0.1 1080[/bash]
使用方法和tsocks是一样的,比如
[bash]proxychains wget https://www.dropbox.com -v -O /dev/null[/bash]
遗憾的是,以上几款都不支持基于用户名和密码的鉴权!
本机用用可以,想要小圈子内共享是个大问题!
更加专业工具
如果你有一VPN线路出国,想要和朋友共享这条加密隧道,但是又不方便把VPN共享,或者不想使用chnroutes这样和autoproxy相比不精确的方法,怎么办呢,下次我撰文写如何把VPN隧道转换成代理。请关注。
旧版的 privoxy 不支持 socks5 。后来源码安装了一个最新版才行。
我现在的情况是 : shadowsocks 提供 socks5 代理, privoxy 把 socks5 转化为 http 代理。这样,那些只支持 http 带来的应用就可以用了。
另外, 不同的应用对 tsocks 支持也不一样。比如, curl 就不能使用 tsocks ,而 wget 就行。
curl 本身支持socks5
test测试
期待你的下文:"VPN隧道转换成代理"
用了第3种了
@Heiher
你是有VPN的人~~~~
学习了,不过我很少需要在命令下用代理的。