GOST
gost是一個Go語言編寫的代理上網工具,可以作為小型企業(yè)在沒有專有硬件或運營商提供的MPLS VPN等支持下,訪問分部私有網絡的一個廉價替代品。當然,其性能相對要差很多。gost提供了SOCKS5、HTTP、WebSocket等多種協(xié)議,當然首推的還是SOCKS5,因為它支持所有的TCP、UDP為傳輸層協(xié)議的應用層協(xié)議。使用起來也是很簡單:
現(xiàn)在對外暴露48000端口,則所有經*:48000代理的應用都可以共享服務器主機的網絡。也可以考慮多層轉發(fā):
所有報文都會向前轉發(fā)到192.168.1.1:48000上的SOCKS5代理。這時gost可以作為一個代理客戶端,可以考慮用NSSM之類的工具將其變?yōu)橐粋€服務。目前,所有的主流瀏覽器都不支持SOCKS5用戶名密碼認證,如果使用了帶有認證功能的SOCKS5服務并且還想使用瀏覽器訪問,就必須考慮使用gost作為客戶端:
注意后面的字符串,那是一個base64編碼,格式是username:password(這里使用的是admin:1234)。服務器端除了可使用同樣的auth外,還可以使用一個密碼文件:
密碼文件的每一行都是一個用戶,用戶名和密碼之間用一個空格分開:
gost默認會將日志輸出到標準輸出。如果想記錄日志,可以考慮借助Apache HTTPD里面的rotatelogs.exe:
該工具能夠自動按時間命名日志,并在其大小超過1MB的時候創(chuàng)建一個新文件。
SOCKS5是一個明文傳輸?shù)膮f(xié)議,如果希望加密,可以考慮在客戶端和服務器端之間使用ShadowSocks協(xié)議:
數(shù)據會被加密后轉發(fā)到192.168.1.1的9500端口??梢詾榇硖砑釉L問控制,這是通過URL的whitelist和blacklist兩個參數(shù)實現(xiàn)的:
此時會屏蔽除*.baidu.com和*.bilibili.com外所有網絡的訪問。whitelist的格式是action:url:port,其中rtcp指外網到內網方向的tcp,tcp指從內網到外網方向的tcp,不同的規(guī)則之間用加號連接,一定要注意blacklist和whitelist的順序。