杨辉的个人博客

记录编程新的体会.

Terminal 代理方案

| Comments

由于墙越建越高,现在想要访问国外的服务越来越难了。在购买了自己的VPS之后,可以基于各种方案建立对应的翻墙方案:

  • Windows/Linux/Mac/Android: shadowsocks ( PAC )
  • iOS: AnyConnect ( 路由表 )

Openvpn 由于特征过于明显已经不能使用。

以上方案暂时能够满足各种Desktop环境的需求,但是在使用Terminal的时候,会发现以上方案并不好用。这时候就要祭出大杀器 ProxyChains-ng 了。

安装好 proxychains4 之后,建立默认配置,指向本地 shadowsocks 建立的socks5代理。

1
2
3
4
5
6
7
8
9
10
11
12
# /etc/proxychains.conf
strict_chain

proxy_dns

remote_dns_subnet 224

tcp_read_time_out 15000
tcp_connect_time_out 8000

[ProxyList]
socks5  127.0.0.1 1080 #define your local socks proxy here

这时可以测试你的代理有没有生效了

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
➜  cnbeta git:(develop) proxychains4 git pull origin develop
[proxychains] config file found: /etc/proxychains.conf
[proxychains] preloading /usr/lib/libproxychains4.dylib
[proxychains] DLL init: proxychains-ng 4.8.1-git-4-gea51cda
[proxychains] DLL init: proxychains-ng 4.8.1-git-4-gea51cda
[proxychains] DLL init: proxychains-ng 4.8.1-git-4-gea51cda
[proxychains] DLL init: proxychains-ng 4.8.1-git-4-gea51cda
[proxychains] DLL init: proxychains-ng 4.8.1-git-4-gea51cda
[proxychains] DLL init: proxychains-ng 4.8.1-git-4-gea51cda
[proxychains] DLL init: proxychains-ng 4.8.1-git-4-gea51cda
[proxychains] DLL init: proxychains-ng 4.8.1-git-4-gea51cda
[proxychains] DLL init: proxychains-ng 4.8.1-git-4-gea51cda
[proxychains] DLL init: proxychains-ng 4.8.1-git-4-gea51cda
[proxychains] DLL init: proxychains-ng 4.8.1-git-4-gea51cda
[proxychains] DLL init: proxychains-ng 4.8.1-git-4-gea51cda
[proxychains] DLL init: proxychains-ng 4.8.1-git-4-gea51cda
[proxychains] DLL init: proxychains-ng 4.8.1-git-4-gea51cda
[proxychains] DLL init: proxychains-ng 4.8.1-git-4-gea51cda
[proxychains] DLL init: proxychains-ng 4.8.1-git-4-gea51cda
[proxychains] DLL init: proxychains-ng 4.8.1-git-4-gea51cda
[proxychains] Strict chain  ...  127.0.0.1:1080  ...  github.com:22  ...  OK
[proxychains] DLL init: proxychains-ng 4.8.1-git-4-gea51cda
From github.com:kyze8439690/cnbeta
 * branch            develop    -> FETCH_HEAD
[proxychains] DLL init: proxychains-ng 4.8.1-git-4-gea51cda
[proxychains] DLL init: proxychains-ng 4.8.1-git-4-gea51cda
[proxychains] DLL init: proxychains-ng 4.8.1-git-4-gea51cda
[proxychains] DLL init: proxychains-ng 4.8.1-git-4-gea51cda
[proxychains] DLL init: proxychains-ng 4.8.1-git-4-gea51cda
[proxychains] DLL init: proxychains-ng 4.8.1-git-4-gea51cda
Already up-to-date.

如果看到一堆 [proxychains] 就说明代理成功了,以后想要运行的命令通过代理访问网络,就在运行的命令前增加 “proxychains4 “前缀即可(注意空格)

当然 proxychains4 可能太长,加个alias:

1
2
# ~/.zshrc
alias pc='proxychains4'

当然 pc git pull 还是太麻烦,而且会丢失补全的功能,如果你使用的是 Mac + iTerm 的组合的话,可以在 iTerm -> Preferences -> Profiles -> Keys 中,新建一个快捷键,例如 ⌥+↩︎ ,Action 选择 Send Hex Code,键值为 0x1 0x70 0x63 0x20 0xd,保存生效。

这样的话,以后命令要代理就直接敲命令,然后 ⌥+↩︎ 即可,这样命令补全也能保留了。

附上 Hex Code 对应表,获取工具为 keycodes

Hex Code Key
0x1 ⌃ + a
0x70 p
0x63 c
0x20 [space]
0xd ↩︎

Thanks to:

Comments