活到老学到老  

记录遇到问题的点点滴滴。

Linux 终端下间接使用Socks5代理的几种方法(privoxy,tsocks,proxychains)

8年前发布  · 2570 次阅读

不知道为什么今天PPA又只能使用代理访问了。好像终端不支持Socks5代理 没办法。咱转换吧。
(以下方法合用几乎可以使linux下面大多数软件实现代理通信,即使软件本身不支持)

1.使用tsocks转接

 

sudo apt-get install privoxy
vim /etc/tsocks.conf

简单介绍下配置方法

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

我们可以这样测试一下

 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 '\['
#略......

效果那是立竿见影啊!遗憾的是似乎已经停止开发了,而且ssh和ftp不工作,其官方网站你推荐了另外一个替代品,Dante,这个配置有点复杂,后面我会给出一个更好的替代品。

2.使用privoxy转换Socks5->HTTP代理

sudo apt-get install privoxy
vim /etc/privoxy/config

在最后一行加入

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

注意后面有个点
1080是本机的Socks代理端口
然后用service把privoxy给restart一下即可
默认监听的端口是本机的8118
如果要监听所有端口或者更换所有端口

 

listen-address  127.0.0.1:8118

改为

listen-address  :8118

即可
这个虽然有点杀鸡用牛刀的意思,而且privoxy的鉴权不好实现。但是还是个好方法。

3.使用proxychains完美替代

apt-get install proxychains
vim /etc/proxychains.conf

配置非常简单,软件有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

贴一下我的配置文件

#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

使用方法和tsocks是一样的,比如

proxychains wget https://www.dropbox.com -v -O /dev/null