公司的網絡環境有點復雜,該死的“保密策略”要求所有的外網連接都要通過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 #繞開代理