Как изменить настройки прокси-сервера в зависимости от сети, к которой я подключаюсь?

20

Корпоративная сеть моей компании требует, чтобы я настроил сетевой прокси для доступа к сети, но когда я где-то еще, мне это не нужно. Настройки прокси в Ubuntu (Система -> Настройки -> Прокси-сервер) позволили мне создать «места», которые я могу выбрать вручную. Затем у меня есть местоположение по умолчанию (без прокси) и местоположение работы (с прокси моей компании в нем).

Есть ли способ заставить Ubuntu автоматически выбирать местоположение «работа» на основе соединения, которое я использую? Я думал, что смогу использовать IP-подсеть (очень специфическую), чтобы определить, где я нахожусь, но я не знаю, как ее настроить ...

Редактировать: мне действительно нужно, чтобы настройки прокси были установлены на системном уровне. Все мои сетевые подключения (IMAP, SMTP, чат и т. Д.) Должны проходить через прокси. Не только веб-браузер.

Маленькая Джава
источник

Ответы:

7

Я могу придумать один способ, но его настройка будет немного неясной.

В основном вы можете использовать файл PAC

Установите веб-сервер в своей системе, подойдет любой крошечный веб-сервер, вам не нужна такая огромная система, как apache.

Создайте файл wpad.datс директивами PAC, которые соответствуют вашему исходному адресу, а затем настройте вашу систему на использование правильного прокси-сервера.

В Firefox настройте прокси-сервер так, чтобы он указывал на локальный файл PAC. Наверное, было бы что-то вроде http://localhost/wpad.dat.

Ваш файл PAC может выглядеть примерно так (не проверено ). Смотрите здесь для большего количества примеров PAC .

function FindProxyForURL(url, host) {   
  // If on a internal/LAN IP address, send traffic direct.
  if (isInNet(myIpAddress(), "10.10.1.0", "255.255.255.0"))
  {        
    return "PROXY 1.2.3.4:8080; PROXY 4.5.6.7:8080; DIRECT";
  }
  else
  {
    return "DIRECT";
  }
}

Я никогда не пробовал, и у меня нет системы для тестирования, но вы можете даже указать файл PAC, используя file://URL-адрес в Firefox, что может означать, что вы можете пропустить настройку веб-сервера.

Конечно, есть и быстрое и простое решение, но оно требует небольших усилий с вашей стороны, когда вы перемещаетесь между локациями. Установите расширение Quick Proxy Firefox и просто нажмите кнопку на панели инструментов, чтобы включить или отключить прокси. Если вы готовы иметь дело с этим с расширением Firefox, вы также можете попробовать FoxyProxy , он поддерживает настройку нескольких профилей прокси, и вы можете легко переключаться между профилями.

Zoredache
источник
Интересно ... Я должен проверить. Я расскажу вам, как это получается. Я думаю, что расширение Firefox не подойдет, хотя: Прокси используется для всех протоколов, не только HTTP. Тогда мне это нужно также для Эмпатии, Эволюции, всего.
Маленькая Джава
Ох, и еще одна вещь. Вы можете попросить ИТ-специалиста настроить WPAD. Тогда вы можете просто использовать опцию автоматического прокси.
Зоредаче
Ну ... боюсь, заставить его делать что-либо - не вариант. Я могу сделать запрос, но я точно не увижу, что произойдет. Отсутствие оправдания бизнеса означает отсутствие ресурсов для этого. И я буду быстрее делать это сам, чем записывать обоснование :-)
Маленькая Джава
Хорошо. После небольшого прочтения я не удовлетворен этим решением. Кажется, это будет работать (я не пытался реализовать это), но это не будет доступно для всей системы. Это будет работать только для веб-браузера, поскольку (согласно findproxyforurl.com/index.html ) система поддерживается только в веб-браузере (поскольку она опирается на Javascript).
Маленькая Джава
5

В Ubuntu 10.10 скрипт .pac работает хорошо. Как пояснил Zoredache, настройте веб-сервер, поместите туда pac-файл, откройте System-> Preferences-> Network Proxy и установите «URL-адрес автоконфигурации» в расположение pac-файла.

Пример файла PAC, который проверяет собственный IP-адрес: /var/www/selectProxy.pac:

function FindProxyForURL(url, host)
 {
 if (myIpAddress() == "192.168.22.63") { 
 return "PROXY 192.168.22.8:8080";
 }
 else {
 return "DIRECT";
 }
 }

В настройках сетевого прокси: URL будет:

http://localhost/selectProxy.pac

источник
3

В дополнение к ответу Zoredache вы можете использовать скрипт в /etc/network/if-up.d для генерации фрагмента в /etc/profile.d/, содержащего переменные вашей прокси-оболочки. Обратите внимание, что это будет работать только с новыми оболочками.

Кроме того, этот метод может быть использован для создания WPAD-файла, на который можно указать любые браузеры, поддерживающие это.

Мишель
источник
2

Это довольно старый пост, но я нашел это. Посмотрите: http://marin.jb.free.fr/proxydriver/

Вы можете установить пакет .deb для Ubuntu. Это в основном сценарий оболочки, который изменяет переменные среды при изменении вашей сети. Вы можете настроить параметры для каждой сети, отредактировав файлы конфигурации (автоматически), созданные в/etc/proxydriver.d/

user60158
источник
2
Хотя это может теоретически ответить на вопрос, было бы предпочтительным включить здесь основные части ответа и предоставить ссылку для справки.
Элия ​​Каган
0

У меня та же проблема. Пожалуйста, обобщите любые ответы, чтобы включить мою ситуацию.

Я использую свой ноутбук дома по беспроводной сети: - всегда статический IP-адрес интерфейса eth1 (192.168.1.10)

Когда я иду на работу, я подключаю его: - всегда динамический IP-адрес интерфейса eth0 (10.10.xx.xx), И прокси: 10.10.123.123 порт 8888

Я хочу, чтобы Ubuntu автоматически устанавливал IP-адрес и прокси-сервер в зависимости от используемого интерфейса.

(Я запутался в / etc / network / interfaces [см. «Man interfaces» и /etc/resolv.conf безрезультатно.


источник
1
Если я понимаю: у вашей карты Wi-Fi есть статический IP - тогда она уже настроена "автоматически". И ваша проводная сеть настроена на DHCP - который также является автоматическим ... Тогда что вы хотите добавить к этому, что касается настроек IP? Я так понимаю нужен прокси, а не IP.
Маленькая Джава
Вы знаете, я думаю, что вы правы. Я вернулся на работу после праздников и, кажется, работает автоматически. Я думаю, что единственная проблема - прокси. Я буду расследовать больше завтра.
0

Я использую файловый подход PAC, и он хорошо работает для просмотра, но не так хорошо для многих других приложений, которые не понимают файлы PAC - я предполагаю, что когда приложение запрашивает «прокси-конфигурацию» через API, они просто получают URL файла PAC возвращается, если вы его используете.

Для пользовательских приложений, которые либо не поддерживают прокси, либо не понимают файлы PAC (например, Empathy), я использую tsocks (потому что я использую туннель SSH для поддержки прокси).

Связывание механизма JavaScript или анализатора PAC с каждым приложением, которое поддерживает базовую настройку прокси-сервера, выглядит излишним. Похоже, что в этом случае может быть полезна поддержка базовой платформы с помощью вызова API, который фактически интерпретирует файл PAC и возвращает результат, а не его URL.

Адриан
источник
0

это старый пост на данный момент, но я пришел сюда в поисках способа сделать это и нашел другой ответ. Ответ, с которым я работаю, лежит в пакете «whereami» и требует, чтобы вы определили подсеть вашей работы в ее файле detect.conf, а затем задали прокси-сервер в файле whereami.conf. Должно работать, и я отправлю с любыми проблемами, которые у меня есть.

Удачи!

Beex
источник
1
Добро пожаловать в Спросите Ubuntu! Итак ... как бы кто-то на самом деле это сделал? Можете ли вы предоставить инструкции? Сейчас это не совсем ответ на вопрос ...
Элия ​​Каган