Existe-t-il un moyen de définir un proxy réseau à l'échelle du système?

18

Si je veux que des applications GNOME (ainsi que Firefox et Chrome) accèdent au réseau via un proxy, je n'ai qu'à utiliser gnome-network-properties(une interface graphique agréable et simple, je dois dire). Pour d'autres applications (par exemple APT, Transmission, XChat), je dois utiliser leurs façons spécifiques de le faire.

Existe-t-il un moyen d'éviter cela, quelque chose que je peux activer et désactiver lorsque dans un réseau qui nécessite un proxy (nom d'hôte: port)?

tshepang
la source
1
Je pense que la http_proxyvariable est ce que vous recherchez. Jetez un œil dans le guide de prise en charge du proxy .
sakisk

Réponses:

11

Je pense que presque tous les logiciels Linux / Unix qui utilisent la mise en réseau respecteront les variables d'environnement http_proxyet ftp_proxy. Selon la configuration de votre distribution, /etc/environmentelle existera et sera lue par défaut par les shells de connexion.

Vous pouvez ajouter une ligne disant

http_proxy=123.45.67.89:1011

en /etc/environmentassez facilement, mais les changements dans ce fichier ne vous prendra que la prochaine fois que vous démarrez un processus shell - et seulement dans ce processus shell. Je ne pense pas que vous puissiez modifier les variables globales dans un shell autre que votre actuel.

Shadur
la source
1
... à l'exception notable de Firefox et Thunderbird askubuntu.com/a/23123
akraf - Rétablir Monica
et il semble, node non plus
Brad Parks
oui, et le rechargement du shell en d'autres termes signifie une déconnexion puis une nouvelle connexion pour les shells graphiques.
Himanshu Shekhar
6

Je suis d'accord que la meilleure façon d'utiliser le serveur proxy est avec la variable d'environnement http_proxy, comme d'autres réponses l'ont souligné. Malheureusement, toutes les applications n'honorent pas la variable d'environnement http_proxy, c'est pourquoi j'utilise toujours tsocks pour certains programmes afin d'utiliser LD_PRELOAD pour forcer les connexions réseau à passer par un proxy SOCKS.

jsbillings
la source
3

En plus de tsocks - qui, toujours, AFAICT vous oblige à lancer des programmes avec l'environnement correct pour fonctionner - vous devriez vérifier tun2socks . Avec lui, vous configurez une interface TUN (c'est-à-dire une nouvelle interface réseau, tout comme un VPN le créerait) et tous les paquets qui y sont envoyés sont envoyés par proxy à votre serveur SOCKS5. Vous configurez ensuite vos itinéraires système pour envoyer réellement le trafic vers cela. On dirait une belle approche.

(J'ai également trouvé des chaussettes rouges via ce post . Cela ne me semble pas aussi élégant que d'utiliser une interface TUN - par exemple, il ne gère pas du tout UDP, pour commencer.)

natevw
la source
3

J'utilise cet outil , qui est essentiellement un couple de scripts pour configurer les paramètres pour différentes applications à partir d'un seul point.

PS: J'ai écrit et entretenu cet outil.

Himanshu Shekhar
la source
2

Il n'y a pas de solution unique. Chaque programme utilise sa propre façon de se connecter à un serveur proxy.

J'ai un problème similaire à mon bureau. J'ai trouvé que la meilleure façon de le faire est d'utiliser une connexion VPN. Lorsque vous vous connectez, l'ensemble du trafic réseau du système passe par le VPN. Si vous n'avez pas accès à un serveur VPN, vous pouvez en exécuter un nouveau manuellement et le connecter au serveur proxy que vous avez.

Si vous avez une application qui ne prend pas en charge le proxy, vous pouvez utiliser quelque chose comme socksify , pour envelopper sa connexion réseau.

Aide à
la source
Vous avez donc essayé cela et échoué?
tshepang
0

J'ai un problème similaire, mais pour moi, pour réaliser un proxy à l'échelle du système, je traiterai du noyau Linux iptables. L'ajout et la suppression de règles de transfert dans iptables(adresses, ports et protocoles spécifiques), agissant sur la couche réseau est le seul moyen d'assurer un proxy à l'échelle du système, qui ne peut être remplacé par aucun paramètre spécifique à l'application dans la couche application.

Nihad Nagi
la source
0

Cela a fonctionné pour moi
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"

aussi
vi /etc/yum.conf:

proxy=http://proxysrv:8080
Shawn Jones
la source