Як зробити так, щоб налаштування проксі-сервера змінювалася залежно від мережі, до якої я підключаюся?


20

Корпоративна мережа моєї компанії вимагає від мене встановити мережевий проксі для доступу до мережі, але коли я перебуваю деінде, мені це не потрібно. Параметри проксі в Ubuntu (Система -> Налаштування -> Проксі-сервер) дозволили мені створити "місця", які я можу вибрати вручну. Тоді у мене є місце "за замовчуванням" (без проксі) та "робоче" місце (з проксі-сервером моєї компанії).

Чи є спосіб змусити Ubuntu автоматично вибрати місце "робочого" на основі з'єднання, яке я використовую? Я думав, що можу використовувати підмережу IP (дуже специфічну), щоб визначити, де я знаходжусь, але поняття не маю, як це налаштувати ...

Редагувати: мені дійсно потрібно встановити параметри проксі на системному рівні. Усі мої мережеві з'єднання (IMAP, SMTP, чат тощо) повинні пройти через проксі. Не тільки веб-браузер.

Відповіді:


7

Я можу подумати про один спосіб, але його налаштування буде трохи незрозумілим.

В основному ви можете використовувати файл PAC

Встановіть веб-сервер у вашу систему, будь-який крихітний веб-сервер буде робити, вам не потрібна така величезна система, як апаш.

Створіть файл 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 , він підтримує налаштування декількох проксі-профілів, і ви можете легко перемикатися між профілями.


Цікаво ... Мені доведеться тестувати. Я розповім, як виходить. Я думаю, що розширення Firefox не буде працювати: проксі використовується для всіх протоколів, не тільки для HTTP. Тоді мені це потрібно також для Емпатії, Еволюції, всього.
Маленька Ява

О, і ще одна річ. Ви можете попросити ІТ-хлопця встановити WPAD. Тоді ви просто можете скористатися опцією автоматичного проксі.
Зоредаче

Ну ... боюся, що змусити ІТ робити щось - це не боюся варіанту. Я можу зробити запит, але я точно не побачу, щоб щось сталося. Жодне обґрунтування бізнесу не означає, що це не має ресурсу. І я швидше зроблю це самостійно, ніж записувати виправдання :-)
Маленька Ява

Добре. Після трохи більше читання я не задоволений цим рішенням. Здається, це спрацювало б (я не намагався його реалізувати), але це було б недоступне для всієї системи. Він буде працювати лише для веб-браузера, оскільки (згідно findproxyforurl.com/index.html ) система підтримується лише у веб-браузері (оскільки вона покладається на Javascript).
Маленька Ява

5

У Ubuntu 10.10 сценарій .pac працює добре. Як пояснив Зоредач, встановіть веб-сервер, покладіть туди файл 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/


2
Хоча це теоретично може відповісти на питання, бажано було б сюди включити істотні частини відповіді та надати посилання для довідки.
Елія Каган

0

У мене така ж проблема. Будь ласка, узагальнюйте будь-які відповіді, щоб включити мою ситуацію.

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

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

Я хочу, щоб Ubuntu автоматично встановлював IP-адресу та проксі на основі інтерфейсу, який я використовую.

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


1
Якщо я розумію: у вашої Wifi карти є статичний 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. Потрібно попрацювати, і я опублікую будь-які проблеми, які у мене є.

Удачі!


1
Ласкаво просимо до Ask Ubuntu! Отже ... як би хтось насправді це робив? Чи можете ви надати інструкції? Зараз це насправді не відповідає на питання ...
Елія Каган
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.