Proxy

通過 PAC/WPAD 文件從代理中排除具有非標準埠的 URL

  • January 30, 2017

我正在執行一個 Squid 代理,並希望排除通過非標準埠訪問的某個網址通過代理,而不是在其中的 ACL 中打開該埠squid.conf(似乎它是一個特定的案例)。

在我的情況下,有問題的埠 TCP 2222 (DirectAdmin) 通過 http:// 和 https://。我不確定在不打開埠本身的情況下是否真的可以做到這一點,但我確實找到了幾篇關於使用 PAC/WPAD 繞過具有非標準埠的 URL 的文章。我嘗試瞭如下所示的規則集,它為 TLD 設置萬用字元,為非標準埠 URL 設置特定規則。

if (shExpMatch(host, "*.somedomain.com") ||
    shExpMatch(url, "http://example.somedomain.com:2222/*") ||
    shExpMatch(url, "https://example.somedomain.com:2222/*"))
    return "DIRECT";

使用pactester,我從規則測試中得到了 DIRECT 的正確響應

pactester -p /path/to/wpad.dat -u http://example.somedomain.com
DIRECT
pactester -p /path/to/wpad.dat -u http://example.somedomain.com:2222
DIRECT
pactester -p /path/to/wpad.dat -u https://example.somedomain.com:2222
DIRECT

但是,當我在網路瀏覽器中收到“代理拒絕連接”等資訊時,請求似乎仍在通過代理髮送。埠本身沒有被阻塞,我可以遠端登錄到它,但是 Sqiud ACL 沒有允許的埠。雖然這是我試圖避免做的事情,但 DIRECT 響應肯定意味著繞過?

這實際上是否可以使用具有非標準埠的 PAC/WPAD 來實現,或者它們是繞過並直接發送這種特定情況的替代方法?

原始配置

if (shExpMatch(host, "*.somedomain.co.uk") ||
    shExpMatch(url, "http://example.somedomain.com:2222/*") ||
    shExpMatch(url, "https://example.somedomain.com:2222/*"))
    return "DIRECT";

你確定這不應該是

if (shExpMatch(host, "*.somedomain.co.uk") ||
    shExpMatch(url, "http://example.somedomain.co.uk:2222/*") ||
    shExpMatch(url, "https://example.somedomain.co.uk:2222/*"))
    return "DIRECT";

您可能正在嘗試訪問example.somedomain.co.uk,但您的條件是針對example.somedomain.com編寫的,所以它一直在訪問代理?

引用自:https://serverfault.com/questions/708165