公司的网络环境有点复杂,该死的“保密策略”要求所有的外网连接都要通过HTTP代理来实现。在Win环境下只要通过域策略同步代理配置就可以了,但对于Linux下就相对比较麻烦了。研究了一下,分享给大家。
获取代理服务器地址
一般代理的设置较常见的有几种方式,比较简单的是可以直接在IE的网络配置中可以看到的,不管是不是可以修改,至少可以看到IP/主机名和端口号的配置,这就足够了!
另一种则就像下图一样自动获取,这个相对就需要动一番脑筋了。
提前开一个终端,键入netstat,不要回车,立即切换到IE访问一个相对比较慢的网页。切回终端,回车!然后……
C:Usersliqunjia>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配置没什么两样,就截个图吧。
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 #绕开代理