acl url_regex на squid3 не работает с использованием проверенного в сети регулярного выражения

1349
Ophion

Меня попросили заблокировать доступ к Facebook с 8:00 до 15:00 почти для всех пользователей, но они все равно используют альтернативные URL Facebook для доступа к социальной сети. Это потребляет большую часть нашей низкой пропускной способности, и мы даже не можем работать. Я решил создать регулярное выражение (регулярное выражение), чтобы проанализировать эти URL-адреса и заблокировать их . Я не хочу блокировать все URL-адреса facebook, но только альтернативы. Альтернативные адреса Facebook в основном содержат слова prod или iphone . Следующие являются альтернативными URL-адресами Facebook, зарегистрированными нашим прокси-сервером:

m.iphone.touch.prod.facebook.com m.iphone.haid.prod.facebook.com:443 m.ct.prod.facebook.com m.vi-vn.prod.facebook.com 

Разработанное регулярное выражение: /((?=.*\biphone\b)|(?=.*\bprod\b)).*\.facebook\.com(\:|\d|)/

Я протестировал это регулярное выражение на https://regex101.com/ и https://www.regextester.com . Регулярное выражение соответствия для:

m.iphone.touch.prod.facebook.com m.iphone.haid.prod.facebook.com:443 m.ct.prod.facebook.com m.vi-vn.prod.facebook.com 

И не подходит для:

www.facebook.com m.facebook.com mqtt.facebook.com (for purple-facebook) graph.facebook.com connect.facebook.com 3-edge-chat.facebook.com 

Пока что это то, что я хотел, альтернативные URL-адреса заблокированы и разрешены обычные URL-адреса Facebook. Мое регулярное выражение выглядит хорошо для использования в Squid .

Следующий шаг - изменить файл /etc/squid3/squid.conf, добавив новый acl, указывающий на файл, содержащий регулярное выражение:

acl facebook dstdom_regex "/etc/squid3/acl/facebook" //The file contains the regex http_access deny pass facebook 

Когда я запускаю squid3 -k parse для проверки файла конфигурации, я получаю ошибки:

2017/09/22 11:12:26| Processing: acl facebook dstdom_regex "/etc/squid3/acl/facebook" 2017/09/22 11:12:26| squid.conf line 78: acl facebook dstdom_regex "/etc/squid3/acl/facebook" 2017/09/22 11:12:26| aclParseRegexList: Invalid regular expression '((?=.*\biphone\b)|(?=.*\bprod\b)).*\.facebook\.com(\:|\d|)': Invalid preceding regular expression 2017/09/22 12:39:33| Warning: empty ACL: acl facebook dstdom_regex "/etc/squid3/acl/facebook" 

Очевидно, парсер squid3 помечает мой acl как неправильный, но я уже тестировал онлайн, и это было хорошо для использования. Также там написано, что acl пуст. Что это значит? ACL был объявлен с именем Facebook . Я очень смущен этим.

0

1 ответ на вопрос

0
Ophion

Проблема в регулярном выражении. Изменил регулярное выражение с этим: \b(iphone|prod)\b.*\.facebook\.comи теперь squid останавливает URL. После запуска squid3 -k parsesquid говорит, что проблем нет, и если пользователь пытается получить доступ к альтернативной ссылке Facebook, такой как (например): test.prod.facebook.com, прокси-сервер отклоняет соединение.