Czy istnieje sposób na ustawienie sieciowego serwera proxy dla całego systemu?

18

Jeśli chcę, aby aplikacje GNOME (a także Firefox i Chrome) miały dostęp do sieci za pośrednictwem serwera proxy, muszę tylko użyć gnome-network-properties(ładnego i prostego GUI, muszę powiedzieć). W przypadku innych aplikacji (np. APT, Transmission, XChat) muszę korzystać z ich specyficznych sposobów.

Czy istnieje sposób, aby tego uniknąć, coś, co mogę włączyć lub wyłączyć w sieci wymagającej serwera proxy (nazwa hosta: port)?

tshepang
źródło
1
Myślę, że http_proxyzmienna jest tym, czego szukasz. Zobacz instrukcje dotyczące obsługi serwera proxy .
sakisk

Odpowiedzi:

11

Myślę, że prawie całe oprogramowanie linux / unix, które korzysta z sieci, honoruje zmienne środowiskowe http_proxyi ftp_proxy. W zależności od konfiguracji dystrybucji /etc/environmentbędą istnieć i domyślnie będą czytane przez powłoki logowania.

Możesz dodać wiersz z napisem

http_proxy=123.45.67.89:1011

w /etc/environmentdość łatwo, ale zmiany w tym pliku zajmie tylko trzymać następnym uruchomieniu procesu Shell - i tylko w tym procesie powłoki. Nie sądzę, że możesz modyfikować zmienne globalne w powłoce innej niż bieżąca.

Shadur
źródło
1
... z godnym uwagi wyjątkiem Firefoksa i Thunderbirda askubuntu.com/a/23123
akraf - Przywróć Monikę
i wydaje się, że też node nie
Brad Parks
tak, a ponowne załadowanie powłoki innymi słowy oznacza wylogowanie, a następnie ponowne zalogowanie w celu uzyskania powłoki graficznej.
Himanshu Shekhar
6

Zgadzam się, że najlepszym sposobem korzystania z serwera proxy jest użycie zmiennej środowiskowej http_proxy, jak wskazały inne odpowiedzi. Niestety, nie wszystkie aplikacje honorują zmienną środowiskową http_proxy, dlatego nadal używam tsocks w niektórych programach do korzystania z LD_PRELOAD do wymuszania połączeń sieciowych przez proxy SOCKS.

jsbillings
źródło
3

Oprócz tsocks - które wciąż AFAICT wymaga uruchamiania programów z odpowiednim środowiskiem do pracy - powinieneś sprawdzić tun2socks . Za jego pomocą konfigurujesz interfejs TUN (tj. Nowy interfejs sieciowy, tak jak stworzyłaby VPN), a wszelkie wysyłane tam pakiety są przekazywane do serwera SOCKS5. Następnie skonfiguruj trasy systemowe, aby faktycznie wysyłać do nich ruch. Wydaje się, że to miłe podejście.

(I również redsocks pośrednictwem tego postu nie wydaje się tak eleganckie, jak przy użyciu interfejs TUN do mnie -.. Na przykład, że produkt nie obsługuje UDP w ogóle, na początek)

natevw
źródło
3

Korzystam z tego narzędzia , które jest w zasadzie kilkoma skryptami do konfigurowania ustawień dla różnych aplikacji z jednego punktu.

PS: Napisałem i utrzymuję to narzędzie.

Himanshu Shekhar
źródło
2

Nie ma jednego rozwiązania dla wszystkich. Każdy program używa własnego sposobu łączenia się z serwerem proxy.

Mam podobny problem w moim biurze. Odkryłem, że najlepszym sposobem na to jest użycie połączenia VPN. Po nawiązaniu połączenia cały ruch sieciowy w systemie przejdzie przez sieć VPN. Jeśli nie masz dostępu do serwera VPN, możesz uruchomić nowy ręcznie i podłączyć go do posiadanego serwera proxy.

Jeśli masz aplikację, która nie obsługuje proxy, możesz użyć czegoś takiego jak socksify , aby zawinąć połączenie sieciowe.

Aidin
źródło
Więc próbowałeś tego i nie udało ci się?
tshepang
0

Mam podobny problem, ale dla mnie uzyskanie ogólnosystemowego serwera proxy będzie dotyczyło jądra Linuksa iptables. Dodawanie i usuwanie reguł przekazywania w iptables(określonych adresach, portach i protokołach) działających w warstwie sieciowej jest jedynym sposobem na zapewnienie serwera proxy w całym systemie, którego nie można zastąpić żadnymi ustawieniami specyficznymi dla aplikacji w warstwie aplikacji.

Nihad Nagi
źródło
0

To działało dla mnie
vi /etc/environment:

http_proxy="http://username:password@proxysrv:8080/"
https_proxy="https://username:password@proxysrv:8080/"
ftp_proxy="ftp://username:password@proxysrv:8080/"
no_proxy=".mylan.local,.domain1.com,host1,host2"

także
vi /etc/yum.conf:

proxy=http://proxysrv:8080
Shawn Jones
źródło