为Unix和Linux配置上网代理

公司的网络环境有点复杂,该死的“保密策略”要求所有的外网连接都要通过HTTP代理来实现。在win环境下只要通过域策略同步代理配置就可以了,但对于Linux下就相对比较麻烦了。研究了一下,分享给大家。

获取代理服务器地址

一般代理的设置较常见的有几种方式,比较简单的是可以直接在IE的网络配置中可以看到的,不管是不是可以修改,至少可以看到IP/主机名和端口号的配置,这就足够了!

另一种则就像下图一样自动获取,这个相对就需要动一番脑筋了。

 

Windows下的配置

 

提前开一个终端,键入netstat,不要回车,立即切换到IE访问一个相对比较慢的网页。切回终端,回车!然后……

C:\Users\liqunjia>netstat

Active Connections

  Proto  Local Address          Foreign Address        State
  TCP    10.239.204.38:5357     GUANQUNW-MOBL:60787    TIME_WAIT
  TCP    10.239.204.38:54912    outlooksh:59532        ESTABLISHED
  TCP    10.239.204.38:59490    fmscsp1fe04:5061       ESTABLISHED
  TCP    10.239.204.38:59678    outlooksh:59532        ESTABLISHED
  TCP    10.239.204.38:59842    litrin-test:http       TIME_WAIT
  TCP    10.239.204.38:59844    litrin-test:http       TIME_WAIT
  TCP    10.239.204.38:59847    litrin-test:http       TIME_WAIT
  TCP    10.239.204.38:59848    litrin-test:http       TIME_WAIT
  TCP    10.239.204.38:59850    litrin-test:http       TIME_WAIT
  TCP    10.239.204.38:59851    litrin-test:http       TIME_WAIT
  TCP    10.239.204.38:59857    litrin-test:http       TIME_WAIT
  TCP    10.239.204.38:59858    litrin-test:http       TIME_WAIT
  TCP    10.239.204.38:59862    litrin-test:http       TIME_WAIT
  TCP    10.239.204.38:59867    shzdmzpr02_int:911     ESTABLISHED
  TCP    10.239.204.38:59869    shmdmzpr02_int:911     CLOSE_WAIT
  TCP    10.239.204.38:59870    shmdmzpr02_int:911     ESTABLISHED
  TCP    10.239.204.38:59871    shmdmzpr02_int:911     ESTABLISHED
  TCP    10.239.204.38:59872    shmdmzpr02_int:911     ESTABLISHED
  TCP    10.239.204.38:59873    shmdmzpr02_int:911     ESTABLISHED
  TCP    10.239.204.38:59874    shmdmzpr02_int:911     ESTABLISHED
  TCP    10.239.204.38:59875    shmdmzpr02_int:911     ESTABLISHED
  TCP    10.239.204.38:59876    shmdmzpr02_int:911     ESTABLISHED
  TCP    10.239.204.38:59877    shmdmzpr02_int:911     ESTABLISHED
  TCP    10.239.204.38:59878    shmdmzpr02_int:911     ESTABLISHED
  TCP    10.239.204.38:59879    shmdmzpr02_int:911     ESTABLISHED
  TCP    10.239.204.38:59880    shmdmzpr02_int:911     ESTABLISHED
  TCP    127.0.0.1:50035        LIQUNJIA-MOBL:62522    ESTABLISHED
  TCP    127.0.0.1:62522        LIQUNJIA-MOBL:50035    ESTABLISHED
  TCP    [::1]:59671            LIQUNJIA-MOBL:59673    ESTABLISHED
  TCP    [::1]:59673            LIQUNJIA-MOBL:59671    ESTABLISHED

大量的established指向了同一个端口,这个ip和端口就是代理地址无疑。

桌面环境

这里主要讲的是Firefox的配置,跟Windows下的FF配置没什么两样,就截个图吧。

Linux FireFox proxy configurations

 

Shell下的配置

想必正常情况下没有几个人仅仅通过shell就可以浏览网页了吧,大多数情况shell的互联网连接仅仅只用于wget/curl或者更新管理器之类的用途吧。

shell下的互联网代理设置主要是通过几个环境变量的配置来实现的。格式如下:

export http_proxy=http://server-ip:port/ #HTTP代理的配置
export https_proxy=https://server-ip:port/ #https代理的配置
export ftp_proxy=ftp://server-ip:port/ #ftp代理(还能再古老一点吗?)
export no_proxy=*.edu #不通过代理的地址特征

需要说明的是如果你的代理是有用户认证的,那配置的格式就应该是这样的:

export http_proxy=http://username:password@server-ip:port/

好吧,如果你的用户名或密码里有”@””/”之类的符号的话——比如windows域帐户的认证方式大多都有这个问题,你可以用”\”符号转义掉。

如果不希望自己每次登录都要输入一遍代理配置的话,个人建议可以将export命令保存到~/.bashrc中(或其他的shellrc),每次启动shell后系统会自动加载。

wget 其实本身是可以直接指定代理服务器认证方式的,也可以用–no_proxy参数强行绕过代理。

wget --proxy-user=USER --proxy-password=PASS http://www.abc.com/
wget --no_proxy http://www.abc.com/ #不用代理

Curl自然比wget更为灵活不是一点了

curl --proxy http(s)://server-ip:port http://abc.com/ #指定单独的代理
curl --socket4 server-ip:port http://abc.com/ #指定socket4代理
curl --socket5 server-ip:port http://abc.com/ #指定socket5代理
curl --proxy-user username:password http://abc.com/ #使用系统的代理服务器配置
curl --noproxy http://abc.com #绕开代理

发表评论

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

请补全下列算式: *

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据