部分网友问过Linux终端怎么使用Shadowsocks、ShadowsocksR、v2ray和trojan配置好的代理,迟迟没写教程是觉得都用Linux了,这不是很简单的东西吗?鉴于部分网友还是没搞懂原理,本节介绍Linux终端设置代理的方法。
代理和VPN
代理和VPN其实不是一个东西,一般来说有如下区别:
- 代理是应用层面的,VPN是系统层面/全局的;
- 连接代理数据不一定要加密,连接VPN是一定要加密的。
国内都用来科学上网,从这方面看可以认为代理和VPN是同一个玩意
代理和VPN的区别其实在电脑和手机端已经体现出来了:电脑端是代理软件,安装SS/SSR/V2ray/trojan电脑客户端,只有浏览器能上外网,其他软件(例如Telegram),需要特殊设置或者其他软件辅助才能上外网;手机客户端是VPN软件,连接后会显示VPN图标,因此手机上的浏览器、Youtube、Instgram、Twitter无需单独设置,都可以直接上外网。
某些机场提供的客户端是VPN软件,连接后电脑上的软件也可以直接上外网
理解了代理和VPN的区别,你就能知道为啥科学上网不推荐用Wireguard,因为那是VPN!Wireguard翻墙效果不如V2ray、Trojan,封杀起来也更容易。
Linux终端设置代理
本节介绍Linux终端设置代理的两种方式,推荐使用proxychains
方案。
环境变量方案
Windows/Mac系统浏览器能上外网的秘密是客户端默认设置了http、https、socks5代理(或者PAC自动代理),对应到Linux终端/命令行则是两个重要的环境变量:http_proxy、https_proxy(GNOME环境会设置all_proxy环境变量)。
SS/SSR/V2ray等客户端,默认会监听一个socks5端口,例如1080,因此让Linux终端命令走代理的方法便是设置这两个环境变量:
export http_proxy="socks5://127.0.0.1:1080"
export https_proxy="socks5://127.0.0.1:1080"
设置好这两个环境变量后,许多软件,例如curl
、wget
,默认会读取变量的值,发现设置了就走代理,因此可以访问外网。
但并不是所有软件都遵循约定,例如git
就不认这两个环境变量。git
有自己的一套,需要单独设置:
git config --global http.proxy 'socks5://127.0.0.1:1080'
git config --global https.proxy 'socks5://127.0.0.1:1080'
如果不想软件走代理,unset这两个环境变量就可以了:
unset http_proxy
unset https_proxy
环境变量方式比较简单,但缺点也很明显:
- 环境变量设置是全局的(当前会话),设置后
wget
等命令都会走代理,不想经过代理只能先unset再运行,比较麻烦; - 不少软件不认这两个环境变量,设置了也不起作用。
proxychains方案
本节以Ubuntu系统介绍使用proxychains
克服环境变量方案的两个缺点,实现按需、所有软件都能走代理。
首先安装proxychains
:sudo apt install -y proxychains
。
然后编辑 /etc/proxychains.conf
文件,在最后的[ProxyList]一节中增加代理设置,例如:
socks5 127.0.0.1 1080
接下来,所有希望走代理的命令,前面增加proxychains
即可,例如:
# git克隆 proxychains git clone https://github.com/hijkpw/scripts # composer更新 proxychains composer update -vv
需要连外网的命令比较少,并且可以让所有软件都走代理,因此proxychains
是推荐方式。
参考
1. proxychains
30 条评论
zzzs · 2020年8月5日 14:41
trojan客户端也是默认监听socks5端口吗?
跳越者 · 2020年8月5日 14:42
对
zzzs · 2020年8月5日 14:52
那我在bashrc下设全局环境变量必须设成这样?export http_proxy=”socks5://127.0.0.1:1080″
export https_proxy=”socks5://127.0.0.1:1080″
之前用SS,没有socks5参数。现在是否是必须这样设?
跳越者 · 2020年8月5日 15:43
可以这样试试
zzzs · 2020年8月10日 10:46
另外,设置环境变量后,测试wget命令,显示终端不支持socks5协议。
zzzs · 2020年8月5日 06:48
ubuntu18.04和ubuntu20.04,只想在系统内有一个dropbox软件走代理,该怎么设?另外,是否有比较易操作的linux客户端软件?之前好像有一个clashy,后来忘了从哪里看到的。
跳越者 · 2020年8月5日 08:00
clashy没用过,你可以看看dropbox能不能自己设置代理
zzzs · 2020年8月10日 10:34
尝试了proxychains+trojan客户端,终端显示拒绝连接?可否给您通过邮件给您发几张截图看看?
ni · 2020年6月30日 20:34
ss有没有linux的客户端啊
跳越者 · 2020年6月30日 20:49
ss有linux客户端,去github上下载吧
test · 2020年6月21日 13:28
反映一个情况,这段时间网速真的好慢
跳越者 · 2020年6月21日 16:36
最近qos限速是有点厉害
lsy · 2020年5月28日 19:14
小白一枚 ubuntu18.04 购买后应该如何配置
跳越者 · 2020年5月28日 19:39
需要下载客户端,然后同样的配置
test · 2020年5月26日 19:29
socks5 127.0.0.1 1080
你好,我想问下这里的ip和端口号对应自己的应该是 我国外的开的服务器的IP和端口号吗?
跳越者 · 2020年5月26日 19:30
不是,对应客户端本地监听的端口号
test · 2020年5月26日 19:46
Welcome to trojan 1.15.1
[2020-05-26 19:45:09] [FATAL] fatal: load_verify_file: No such file or directory
[2020-05-26 19:45:09] [FATAL] exiting. . .
没有这个文件呢?
跳越者 · 2020年5月26日 19:47
配置文件不存在或者写错了
test · 2020年5月26日 19:49
“run_type”: “client”,
“local_addr”: “127.0.0.1”,
“local_port”: 1081,
“remote_addr”: “www.rabiesdadada.xyz”,
“remote_port”: 443,
我照mac客户端那样写的配置文件,是这样的
跳越者 · 2020年5月26日 19:51
linux应该也一样
test · 2020年5月26日 19:53
“ssl”: {
“cert”: “/path/to/certificate.crt”,
“key”: “/path/to/private.key”,
“key_password”: “”,
linux中多了这几项,好像就是说找不到验证文件,还是不知道什么原因呢?
跳越者 · 2020年5月26日 19:55
把这些删了
test · 2020年5月26日 20:06
问题解决了,谢谢了。😁
大佬:我对VPN和代理有个自己的理解,不知道对不对呢?
VPN就是在建立隧道,而隧道就是在IP报文的数据部分嵌入目的IP,从而隐藏目的IP
中国的墙只是墙国外的一些网址和这些网址对应的IP,但并没有禁止访问国外所有的IP,比如我通过vultr买的IP在国内仍然可以Ping通,代理就是我每次访问网站,都先交给我国外的代理,代理把数据包拿到之后,再发送给我。
跳越者 · 2020年5月26日 20:14
差不多
scp · 2020年5月27日 08:35
可是为什么在控制台ping谷歌ping不通呢?是不是因为trojan只是监听浏览器呢?
跳越者 · 2020年5月27日 08:55
trojan/v2ray/ss/ssr这些,只对浏览器有作用,其他的软件要单独设置才能走代理
前鹿 · 2020年4月9日 14:18
我想请问一下,我使用V2做代理,命令行怎么实现代理呢?我之前是使用ss,然后linux端安装ss并启动,然后就是proxychains,那现在呢?我似乎并没有发现在linux端的v2
跳越者 · 2020年4月9日 15:18
v2ray核心就是v2,配置好就可以和proxychains一起用
旧梦 · 2020年4月4日 11:49
v2安装 提示pip3安装失败
怎么解决
跳越者 · 2020年4月5日 21:56
Ubuntu系统?