Исключите URL с non-stanard портом от Прокси через файл PAC/WPAD

Я выполняю прокси Сквида и хочу исключить определенный веб-адрес, к которому получают доступ по нестандартному порту от прохождения через прокси, вместо того, чтобы открыть порт в ACL в squid.conf (кажется, что это - определенный случай использования).

В моем случае порт рассматриваемый TCP 2222 (DirectAdmin) и по http:// и по https://. Я не был уверен, было ли это на самом деле возможно обойтись без открытия самого порта, но я действительно находил несколько статей об обходе URL с нестандартными портами с PAC/WPAD. Я попробовал ruleset как тот ниже, который устанавливает подстановочный знак для TLD и определенные правила для нестандартного порта URL.

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

Используя pactester, Я получаю корректный ответ ОТ теста правила

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

Однако кажется, что запрос все еще отправляется через прокси, поскольку я получаю "Прокси, отказывается от соединений" и т.д. в веб-браузере. Сам порт не заблокирован, я могу, telnet к нему, но ACL Sqiud не позволили порт. Хотя это - то, что я стараюсь не делать, и конечно ПРЯМОЙ обход средств ответа?

Действительно ли этого на самом деле возможно достигнуть с PAC/WPAD с нестандартными портами или их альтернативный способ обойти и отправить непосредственно для этого конкретного случая?

0
задан 24 July 2015 в 16:11
3 ответа

Исходная конфигурация

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 , и поэтому он продолжает обращаться к прокси?

0
ответ дан 4 December 2019 в 16:52

Похоже, это была комбинация кеширования и плохого правила isInNet, отменяющего правило DIRECT в моем конкретном порту. Оператор if.

Опубликованный пример правила работает, если выполняется в правильном порядке!

0
ответ дан 4 December 2019 в 16:52

Если вам нужно что-то более общее, чтобы все запросы, требующие нестандартного порта, шли напрямую, попробуйте:

if (shExpMatch(url, "*://" + host + ":*"))
    return "DIRECT";

Это не идеально (и вы можете захотеть изменить так, чтобы запросы которые явно указывают стандартный порт для протокола, например: 80 для HTTP и: 443 для HTTPS по-прежнему проходят через прокси), но он должен перехватывать большинство запросов. Уточнения приветствуются.

1
ответ дан 4 December 2019 в 16:52

Теги

Похожие вопросы