VMware Player虛拟機中Ubuntu系統的上網代理配置
1. 背景
由于去年集團某分公司發生了資訊洩露的安全事故,是以集團公司今年采取比較嚴格的網絡安全管理措施。原來不通過代理伺服器的上網方式已經一去不複返了,部門内有些項目中使用的虛拟機系統還有通路網絡的需求,因而需要通過配置代理上網。此類配置的文章網上有很多,但都不夠完整。比如,對有認證要求的代理伺服器的配置鮮有提及。本文主要把這些配置做了總結記錄,希望能給有類似需求的人帶來些微幫助。
2. 虛拟機環境
虛拟機:VMware(R) Player 6.0.4 build-2249910
主機OS:Windows 7 Professional, 64-bit 6.1.7601, ServicePack 1
Ubuntu OS: ubuntukylin-17.0464bit
虛拟機網絡連接配接方式:NAT (共享主機的IP位址)
注:上述是本文試驗成功的環境。
3. 無認證要求的代理設定
3.1 圖形界面方式設定

在虛拟機中的ubuntu系統桌面,進入系統設定,然後點選網絡設定;在網絡設定的彈出框中,選擇Networkproxy,如上圖輸入代理伺服器的IP位址和段口号;點選Apply system wide按鈕,将目前代理設定适用全系統。
3.2 CLI方式設定
· 用Vi指令打開環境變量檔案environment(或者使用你喜歡的其他檔案編輯器打開),
sudo vi /etc/environment
這個environment檔案中儲存了ubuntu系統啟動時初始化完成的系統全局變量。
· 在environment檔案中追加下述内容(其中的代理伺服器當然要使用自己的)。
http_proxy="http://172.32.1.222:8080/"
https_proxy="http://172.32.1.222:8080/"
ftp_proxy="http://172.32.1.222:8080/"
no_proxy="localhost,127.0.0.1,localaddress,.localdomain.com"
socks_proxy="http://172.32.1.222:8080/"
HTTP_PROXY="http://172.32.1.222:8080/"
HTTPS_PROXY="http://172.32.1.222:8080/"
FTP_PROXY="http://172.32.1.222:8080/"
NO_PROXY="localhost,127.0.0.1,localaddress,.localdomain.com"
SOCKS_PROXY="http://172.32.1.222:8080/"
有人可能已經注意到了,上面包括了大小寫區分的兩種重複設定。為什麼要這樣重複設定呢?原因就是有的程式隻使用一種設定(小寫或者大寫),既然不能确定使用的哪一種,安全起見,就把大小寫都包含。
· 使用圖形界面方式設定網絡代理,也修改了上面這個檔案。可以在圖形界面設定完後,打開這個檔案看一下。但是圖形界面的修改方式更全面一些,它同時還修改了與apt-get網絡通路相關的配置檔案/etc/apt/apt.conf。apt.conf 檔案中的内容如下:
Acquire::http::proxy"http://172.32.1.222:8080/";
Acquire::https::proxy"https://172.32.1.222:8080/";
Acquire::ftp::proxy"ftp://172.32.1.222:8080/";
Acquire::socks::proxy"socks://172.32.1.222:8080/";
還有普遍的一種做法就是,在/etc/apt/apt.conf.d/目錄下建立95proxies檔案,追加上述内容,效果也是一樣的。但是對于需要認證的代理伺服器而言,這種設定方法是無效的,這種情況下如何設定,下文會有講述。
· git的代理設定方式如下
1. http及https
git config--global http.proxy http://172.32.1.222:8080
git config--global https.proxy https://172.32.1.222:8080
2. git://協定代理
$ sudoapt-get install socat
$ sudo vi/usr/bin/gitproxy
--------------------------
#!/bin/bash
PROXY=myproxy.server.com
PROXYPORT=8080
PROXYAUTH=username:password
exec socatSTDIO PROXY:$PROXY:$1:$2,proxyport=$PROXYPORT,proxyauth=$PROXYAUTH
--------------------------
$ sudo chmod+x /usr/bin/gitproxy
$ git config--global core.gitproxy gitproxy
注:記得修改上面的代理伺服器位址以及gitproxy 檔案中的username和password 。
4. 有認證要求的代理設定
4.1 圖形界面的設定方式
沒弄懂怎麼設定,知道的可以在評論中貼出來。
4.2 CLI方式設定
· 設定檔案還是/etc/environment,内容稍稍不同。需要把代理設定内容改為如下的形式:
"http://username:[email protected]172.32.1.222:8080/"
· 與apt-get網絡通路相關的配置檔案也要進行如上的修改。但是修改/etc/apt/apt.conf.d/95proxies檔案不起作用,而是應該修改/etc/apt/apt.conf。
4.3 URL encoding
要注意的是,上面那些設定内容是URL格式的,是以需要對使用者名和密碼進行URL編碼。
例如,通路代理伺服器的使用者名為mobai,密碼為(mobai4u,\) 那麼上述位址就要編碼為:
"http://mobai:(mobai4u%2C%5C)@172.32.1.222:8080/"
這算是一個坑吧,解決了後覺得理所當然,實際上也頗費了一點時間。
至于URL編碼,可以通過以下幾個網站進行:
http://meyerweb.com/eric/tools/dencoder/
http://www.url-encode-decode.com/
http://www.blooberry.com/indexdot/html/topics/urlencoding.htm
5. 結束語
虛拟機中Ubuntu系統的上網代理配置其實比較簡單,對于有認證要求的配置稍微有點麻煩,要注意特殊字元的URL編碼。另外,如果修改了配置檔案後,仍然不能通路網絡,别忘了打開一個新的console嘗試一下,實在不行重新開機系統。
其實這種配置方法還是比較繁瑣,有簡單點的方法,那就是使用ProxyChains,後面抽時間整理一下再分享。