一路狂飙

常用的终端命令的代理指南

什么是网络代理?

顾名思义,网络代理就是指定网络的出口,让指定的流量走指定的代理服务器。

代理服务器分类?

常见的网络代理有:HTTP代理socks代理,vpn代理,反向代理,ftp代理,pop3代理等等

我们挑选最常见的两种协议来说:

http协议

针对http协议和https协议的代理,用来代理http协议的访问

一些搭建http代理的软件:

socks协议

socks代理:针对会话层的代理,是一个偏底层的协议,它只关注链接,不关注上面是什么应用 socks协议有socks4和socks5两个版本,区别在于socks4只支持TCP,而socks5同时支持TCP和UDP

  • 协议介绍:https://juejin.im/entry/5999ad616fb9a0247321824a
  • 基于GO的socks5代理实现:https://www.jianshu.com/p/172810a70fad
  • 基于ssh的socks5代理: ssh -NTfD 127.0.0.1:7070 test@11.22.33.44 参考ssh端口转发
  • 大家最常用到的shadowsocks在本地监听的就是socks代理 127.0.0.1:1080

代理的用途

  1. 共享网络,适用于没有外网ip的机器
  2. 代理加速,通过专门的网络进行网络访问的加速
  3. 隐藏身份,防止攻击,隐藏了自己真实的ip地址,所以可以防止一定程度上的攻击
  4. 用户管理,用来做一些审计的功能

常用软件的代理设置

curl

curl命令同时支持http代理和socks代理

直接用命令参数的方式 curl --proxy 'http://10.10.10.10:8118' http://www.baidu.com

利用.curlrc来设置,这样就不用每次都加上这个参数了

$ cat ~/.curlrc
socks5 = '10.10.10.10:1080'

wget

额外知识点:wget -c 参数可以启用断点续传的功能 -Y, –proxy=on/off 临时打开或关闭代理,不用每次修改rc文件了

wget 只支持http协议代理,不支持socks协议代理

直接用命令参数的方式 wget -e'http_proxy=http://10.10.10.10:8118' http://resoure.com/xxx.tgz

利用.wgetrc来设置,这样就不用每次都加上这个参数了

$ cat ~/.wgetrc
http_proxy = http://10.10.10.10:8118
https_proxy = http://10.10.10.10:8118
use_proxy = on/off  # 启用或者不启用代理

可以看到是通过环境变量的方式传递进去的,所以可以通过bash的环境变量来加载

$ cat ~/.bashrc
# 不需要认证的情况
export http_proxy=http://10.10.10.10:8118
export https_proxy=http://10.10.10.10:8118

# 需要认证的情况
export http_proxy=http://username:password@http://10.10.10.10:8118

brew

brew底层使用的是curl获取包,因此只需要设置.curlrc就行了

yum

支持http代理,socks5代理没有测试

用centos的管理员肯定不陌生,但是有些包因为众所周知的原因下载不下来,需要挂代理。怎么设置呢?

$ cat /etc/yum.conf
# 在该文件中新加下面的配置项
proxy=http://10.10.10.10:8118
# 代理需要用户名密码,就按照如下设置
proxy_username=test
proxy_password=test

git

支持http代理,socks5代理没有测试

通过命令来配置 git config –global http.proxy 'http://10.10.10.10:8118'

通过环境变量 export http_proxy=http://10.10.10.10:8118

当然也可以写到.bashrc里面

go get

go get 命令底层用的git,所以只要跟git一样就行了