Я использую Linux-коробку (Lubuntu 12.04) в среде Windows, где для настройки доступа в Интернет используется pac-файл.

Файл proxy.pac:

function FindProxyForURL(url, host){
  var proxy_yes = "PROXY xxx.xxx.xxx.xxx:8000";
  var proxy_no = "DIRECT";
  if (shExpMatch(url, "*//yyy.*")) { return proxy_no; }
  if (shExpMatch(url, "*//zzz.zzz.*")) { return proxy_no; }
  if (shExpMatch(url, "*foo.com*")) { return proxy_no; }
  //Proxy anything else
  return proxy_yes;
}

Насколько я знаю, у Lubuntu нет глобальной прокси-системы.

Вместо того, чтобы пытаться возиться с переменными оболочки, такими как HTTP_PROXY, которые уважают только некоторые программы (не Chromium, например), я подумал, что iptables можно использовать для прозрачного перенаправления всего трафика через прокси, эффективно реализуя глобальный прокси.

Возможно ли это, и если да, то как мне это сделать?

РЕДАКТИРОВАТЬ: я должен уточнить, что я не администратор, и я не пытаюсь настроить прокси. Прокси-сервер уже настроен, и для того, чтобы компьютеры могли подключаться к интеренту, необходимо включить автоматическую настройку прокси-сервера и указать его выше в файле pac. Прямые соединения заблокированы.

Вместо того, чтобы настраивать каждое приложение индивидуально, я надеялся использовать iptables для автоматической маршрутизации трафика через прокси.

2 ответа2

2

Признаюсь, я никогда не использовал Lubuntu раньше, но подозреваю, что это просто производная Ubuntu , работающая на виртуальной машине. Полагаться на javascript для прокси - очень глупая вещь, так как во многих случаях ее легко обойти или полностью игнорировать ... что в конечном итоге сводит на нет преимущества использования прокси для начала.

Я бы начал с настройки правильной прокси-системы с использованием squid. Для производных ubuntu в репозитории есть пакет squid который легко устанавливается с помощью apt или synaptic . После установки начните с редактирования /etc/squid/squid.conf и добавьте или измените следующие параметры, которые вы считаете необходимыми:

httpd_accel_host virtual
httpd_accel_port 80
httpd_accel_with_proxy on
httpd_accel_uses_host_header on
acl lan src 192.168.1.1 192.168.2.0/24
http_access allow localhost
http_access allow lan

Вы можете использовать гораздо больше опций конфигурации, но для большинства случаев это довольно хорошее начало. После этого следующим шагом будет просто настроить iptables в маршрутизаторе по умолчанию на DNAT и перенаправить трафик на прокси-сервер squid .

iptables -t nat -A PREROUTING -i eth1 -p tcp --dport 80 -j DNAT --to 192.168.1.1:3128
iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 3128

Конечно, вы захотите поместить это в какой-то сценарий запуска, чтобы правила применялись каждый раз при загрузке маршрутизатора. Кроме того, имейте в виду, что это не повлияет на трафик https , поскольку https специально разработан для того, чтобы НЕ допускать прокси-трафик (или перехватывать / расшифровывать и т.д. кем-то посередине). Если вы хотите отфильтровать трафик (на сомнительные сайты), вы также можете SquidGuard .

Возможно проксирование трафика https, но это крайне не рекомендуется. Если вы на самом деле, желая реализовать эту функциональность, есть хороший гид здесь.

0

Это то, что я в итоге сделал:

  • Установка переменных среды ALL_PROXY , HTTP_PROXY , HTTPS_PROXY , FTP_PROXY и NO_PROXY в /etc/environment .
  • Настройка прокси-серверов http, https и ftp для apt в /etc/apt/apt.conf.d/80proxy (с использованием синтаксиса Acquire::http::proxy "http://xxx.xxx.xxx.xxx:8000";)
  • Использование прокси-цепей для любых остальных программ, которые не учитывают переменные среды и не имеют встроенной поддержки прокси.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .