部分网友问过Linux终端怎么使用ShadowsocksShadowsocksRv2raytrojan配置好的代理,迟迟没写教程是觉得都用Linux了,这不是很简单的东西吗?鉴于部分网友还是没搞懂原理,本节介绍Linux终端设置代理的方法。

代理和VPN

代理和VPN其实不是一个东西,一般来说有如下区别:

  1. 代理是应用层面的,VPN是系统层面/全局的;
  2. 连接代理数据不一定要加密,连接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"

设置好这两个环境变量后,许多软件,例如curlwget,默认会读取变量的值,发现设置了就走代理,因此可以访问外网。

但并不是所有软件都遵循约定,例如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

环境变量方式比较简单,但缺点也很明显:

  1.  环境变量设置是全局的(当前会话),设置后wget等命令都会走代理,不想经过代理只能先unset再运行,比较麻烦;
  2. 不少软件不认这两个环境变量,设置了也不起作用。

proxychains方案

本节以Ubuntu系统介绍使用proxychains克服环境变量方案的两个缺点,实现按需、所有软件都能走代理。

首先安装proxychainssudo 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系统?

发表评论

电子邮件地址不会被公开。 必填项已用*标注