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


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.