Jak zmienić ustawienia serwera proxy w zależności od sieci, z którą się łączę?

20

Sieć firmowa mojej firmy wymaga ode mnie skonfigurowania sieciowego serwera proxy, aby uzyskać dostęp do sieci, ale gdy jestem gdziekolwiek indziej, nie potrzebuję tego. Ustawienia proxy w Ubuntu (System -> Preferencje -> Serwer proxy) pozwoliły mi stworzyć „lokalizacje”, które mogę wybrać ręcznie. Następnie mam lokalizację „domyślną” (bez serwera proxy) i lokalizację „służbową” (w tym serwer proxy mojej firmy).

Czy istnieje sposób, aby Ubuntu automatycznie wybrał lokalizację „roboczą” na podstawie używanego połączenia? Myślałem, że mogę użyć podsieci IP (bardzo konkretnej) do wykrycia, gdzie jestem, ale nie mam pojęcia, jak ją skonfigurować ...

Edycja: Naprawdę muszę mieć ustawienia proxy na poziomie systemu. Wszystkie moje połączenia sieciowe (IMAP, SMTP, czat itp.) Muszą przejść przez serwer proxy. Nie tylko przeglądarka internetowa.

Mała Jawa
źródło

Odpowiedzi:

7

Mogę wymyślić jeden sposób, ale konfiguracja będzie nieco niejasna.

Zasadniczo możesz użyć pliku PAC

Zainstaluj serwer sieciowy w swoim systemie, wystarczy każdy mały serwer sieciowy, nie potrzebujesz dużego systemu, takiego jak apache.

Utwórz plik wpad.datz dyrektywami PAC, które pasują do siebie na podstawie adresu źródłowego, a następnie skonfiguruj system, aby używał poprawnego serwera proxy.

W Firefoksie skonfiguruj serwer proxy, aby wskazywał na lokalny plik PAC. Prawdopodobnie byłoby coś takiego http://localhost/wpad.dat.

Twój plik PAC może wyglądać mniej więcej tak ( niesprawdzony ). Zobacz tutaj więcej przykładów 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";
  }
}

Nigdy tego nie próbowałem i nie jestem w systemie do testowania, ale możesz nawet określić plik PAC za pomocą file://adresu URL w firefoxie, co oznaczałoby, że możesz pominąć konfigurację serwera WWW.

Oczywiście istnieje również szybkie i łatwe rozwiązanie, ale wymaga niewielkiego wysiłku z twojej strony podczas przemieszczania się między lokalizacjami. Zainstaluj rozszerzenie Quick Proxy Firefox i po prostu kliknij przycisk na pasku narzędzi, aby włączyć lub wyłączyć serwer proxy. Jeśli chcesz poradzić sobie z tym z rozszerzeniem Firefox, możesz także wypróbować FoxyProxy , obsługuje konfigurowanie wielu profili proxy i możesz łatwo przełączać się między profilami.

Zoredache
źródło
Ciekawe ... Będę musiał przetestować. Powiem ci, jak się to okaże. Myślę, że rozszerzenie Firefoksa nie zrobi tego: serwer proxy jest używany do wszystkich protokołów, nie tylko HTTP. Potrzebuję go także do Empatii, Ewolucji, wszystkiego.
Little Jawa,
Aha i jeszcze jedno. Możesz poprosić informatyka o skonfigurowanie WPAD. Następnie możesz po prostu użyć opcji automatycznego proxy.
Zoredache,
Cóż ... Obawiam się, że IT nie może nic robić. Mogę złożyć prośbę, ale na pewno nic nie zobaczę. Brak uzasadnienia biznesowego oznacza brak zasobów, aby to zrobić. I szybciej to zrobię, niż spisuję uzasadnienie :-)
Mała Jawa,
Dobrze. Po nieco więcej lekturach nie jestem zadowolony z tego rozwiązania. Wygląda na to, że zadziałałoby (nie próbowałem go wdrożyć), ale nie byłoby dostępne w całym systemie. Działa to tylko w przeglądarce internetowej, ponieważ (według findproxyforurl.com/index.html ) system jest obsługiwany tylko w przeglądarce internetowej (ponieważ opiera się na JavaScript).
Little Jawa,
5

W Ubuntu 10.10 skrypt .pac działa dobrze. Jak wyjaśnił Zoredache, skonfiguruj serwer WWW, umieść tam plik pac, otwórz System-> Preferencje-> Network Proxy i ustaw „Adres URL autokonfiguracji” na lokalizację pliku pac.

Przykład pliku PAC, który sprawdza własny adres 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";
 }
 }

W preferencjach serwera proxy sieci: adres URL będzie:

http://localhost/selectProxy.pac

źródło
3

Jako dodatek do odpowiedzi Zoredache'a możesz użyć skryptu w /etc/network/if-up.d do wygenerowania fragmentu w /etc/profile.d/ zawierającego zmienne powłoki proxy. Zauważ, że będzie to działać tylko z nowymi powłokami.

Dodatkowo, ta metoda może być użyta do wygenerowania pliku WPAD, do którego można wskazać dowolne przeglądarki obsługujące to.

Michel
źródło
2

To jest dość stary post, ale znalazłem to. Zobacz: http://marin.jb.free.fr/proxydriver/

Możesz zainstalować pakiet .deb dla Ubuntu. Jest to w zasadzie skrypt powłoki, który zmienia zmienne środowiskowe, gdy zmienia się sieć. Możesz skonfigurować ustawienia dla każdej sieci, edytując pliki konfiguracyjne (automatycznie) utworzone w/etc/proxydriver.d/

użytkownik60158
źródło
2
Chociaż teoretycznie może to odpowiedzieć na pytanie, lepiej byłoby zawrzeć tutaj istotne części odpowiedzi i podać odnośnik.
Eliah Kagan
0

Mam ten sam problem. Proszę uogólnić wszelkie odpowiedzi, aby uwzględnić moją sytuację.

Używam laptopa w domu przez sieć bezprzewodową: - zawsze statyczny adres IP interfejsu eth1 (192.168.1.10)

Kiedy idę do pracy, podłączam go: - zawsze dynamiczny adres IP interfejsu eth0 (10.10.xx.xx) ORAZ serwer proxy: 10.10.123.123 port 8888

Chcę, aby Ubuntu automatycznie ustawiał adres IP i serwer proxy na podstawie używanego interfejsu.

(Pomyślałem w / etc / network / interfaces [patrz „interfejsy man” i /etc/resolv.conf bezskutecznie.


źródło
1
Jeśli rozumiem: twoja karta Wi-Fi ma statyczny adres IP - to jest już skonfigurowana „automatycznie”. Twoja sieć przewodowa jest konfigurowana przez DHCP - która jest również automatyczna ... Co zatem chcesz do tego dodać, jeśli chodzi o ustawienia IP? Rozumiem potrzebę serwera proxy, ale nie adres IP.
Little Jawa,
Wiesz, myślę, że masz rację. Wracam do pracy po Holdiays i wydaje się, że działa automatycznie. Myślę, że jedynym problemem jest serwer proxy. Jutro zbadam więcej.
0

Używam podejścia opartego na plikach PAC i działa dobrze do przeglądania, ale nie tak dobrze dla wielu innych aplikacji, które nie rozumieją plików PAC - domyślam się, że kiedy aplikacja prosi o „konfigurację proxy” za pośrednictwem interfejsu API, po prostu otrzymują URL pliku PAC z powrotem, jeśli go używasz.

W przypadku aplikacji użytkownika, które albo nie obsługują proxy, albo nie rozumieją plików PAC (takich jak Empathy), używam tsocks (ponieważ używam tunelu SSH do obsługi proxy).

Łączenie silnika JavaScript lub parsera PAC z każdą aplikacją obsługującą podstawową konfigurację proxy wydaje się przesadą. Wydaje się, że jest to przypadek, w którym można skorzystać z obsługi niektórych platform bazowych za pomocą wywołania API, które faktycznie interpretuje plik PAC i zwraca wynik zamiast adresu URL.

Adrian
źródło
0

to jest stary post w tym momencie, ale przyszedłem tutaj, szukając sposobu na zrobienie tego i znalazłem inną odpowiedź. Odpowiedź, z którą pracuję, polega na pakiecie o nazwie „whereami” i wymaga zdefiniowania podsieci swojej pracy w pliku wykrywania.conf, a następnie zdefiniowania serwera proxy w pliku whereami.conf. Powinien działać, a ja opublikuję wszelkie problemy, które mam.

Powodzenia!

Beex
źródło
1
Witamy w Ask Ubuntu! Więc ... jak ktoś mógłby to zrobić? Czy możesz podać instrukcje? W tej chwili tak naprawdę nie jest to odpowiedź na pytanie ...
Eliah Kagan