2016-03-25 69 views
4

我試圖爲所有類型的幀(HTTP,HTTPS)設置透明代理,我使用tinyproxy來做到這一點。我已經建立了我的路由器來重定向(使用NAT)所有傳入和傳出的幀到tinyproxy(正在監聽端口8888)。tinyproxy無法轉發連接方法

我試過訪問一個HTTPS網站(https://www.google.com/),但我得到一個SSL連接錯誤。通過tinyproxy日誌看,我看到以下內容:

CONNECT Mar 24 23:34:27 [22533]: Connect (file descriptor 11): 128.112.94.38 [128.112.94.38] 
CONNECT Mar 24 23:34:27 [22533]: Request (file descriptor 11): 
WARNING Mar 24 23:34:27 [22533]: Could not retrieve all the headers from the client 
INFO  Mar 24 23:34:27 [22533]: Read request entity of 103 bytes 

的tinyproxy文件說,只要我設置在tinyproxy.conf文件中以下行,連接幀的轉發應透明地工作:

# ConnectPort: This is a list of ports allowed by tinyproxy when the 
# CONNECT method is used. To disable the CONNECT method altogether, set 
# the value to 0. If no ConnectPort line is found, all ports are 
# allowed (which is not very secure.) 
# 
# The following two ports are used by SSL. 
ConnectPort 443 
ConnectPort 563 

我也嘗試刪除所有ConnectPort行來查看是否有效(它不)。有誰知道我爲什麼無法透明地轉發HTTPS流量?

回答

0

在正常的網絡意義上,您沒有使用術語「幀」(L2),因此TCP或HTTP/HTTPS連接(L6/7)是更好的術語。當在透明模式(其可以確認與tinyproxy -h所示的功能列表被啓用)

tinyproxy將處理或者HTTP代理請求的連接,其中CONNECT是一種類型的,或者非代理的HTTP請求。

當瀏覽器被配置爲使用代理時,它會相應地修改其出站請求。在透明模式下,瀏覽器不知道代理(並且不能配置爲一個)。 ConnectPort選項列出了允許客戶端以CONNECT(以防止濫用)在正常代理模式下的端口。

如果您在HTTPS透明模式下使用tinyproxy,則不存在CONNECT,更重要的是沒有標頭(這就是您看到該錯誤的原因)並且沒有URL。通常,主機/端口部分可以從目的IP,端口和SNI擴展推斷/推斷 - 因爲tinyproxy依靠某個外部防火牆來重定向(更改目標IP)連接,所以它沒有完整的請求信息。

此時tinyproxy只能用作透明HTTP代理,這個文檔有點模糊。沒有HTTPS檢查(即解密TLS連接)來訪問客戶端請求,它甚至不能成爲簡單的TCP連接轉發器。其他代理如squid確實支持TLS檢查(sslbump)。

0

您不能擁有帶HTTPS的透明代理。這違背了SSL的全部目的。如果您嘗試轉發端口443(SSL/HTTPS),則您將收到SSL連接錯誤,因爲不允許使用Man-in-the-Middle攻擊。

我想一個解決方法是手動將瀏覽器配置爲指向TinyProxy實例,但是由於您正在配置客戶端,因此它違背了透明代理的整個目的。