[LINUX] Il est difficile de changer les paramètres entre l'intranet et le voyage d'affaires / à la maison, donc j'étais un peu heureux lorsque j'ai mis en place un proxy de transfert localement avec Apache2.

Étant donné que les paramètres de proxy sont différents entre le pare-feu de l'entreprise et la connexion directe à Internet en voyage ou à la maison, configurez un proxy de transfert localement dans Apache2 et modifiez-le en une seule fois avec les paramètres de proxy de transfert. Tous les paramètres de proxy de chaque programme définissent le proxy local. L'environnement que j'utilise est Ubuntu 20.10.

Paramètres Apache2

On suppose qu'Apache2 est installé et en cours d'exécution.

Activer le module

Activez le module pour le proxy.

sudo a2enmod proxy proxy_http proxy_ftp proxy_ssl proxy_connect

Préparez votre propre configuration

Basé sur / etc / apache2 / mods-available / proxy.conf, il est préparé dans / etc / apache2 / sites-available /.

Personnalisez le numéro de port, l'adresse proxy intranet (paramètre ProxyRemote) et l'adresse d'accès direct (paramètre NoProxy) en fonction de chaque environnement. Cette fois, j'ai défini le numéro de port sur 8888.

/etc/apache2/sites-available/proxy.conf


<IfModule mod_proxy.c>
#Numéro de port gratuit approprié
Listen 8888

#Faites correspondre le paramètre d'écoute avec le numéro de port
<VirtualHost *:8888>
	# If you want to use apache2 as a forward proxy, uncomment the
	# 'ProxyRequests On' line and the <Proxy *> block below.
	# WARNING: Be careful to restrict access inside the <Proxy *> block.
	# Open proxy servers are dangerous both to your network and to the
	# Internet at large.
	#
	# If you only want to use apache2 as a reverse proxy/gateway in
	# front of some web application server, you DON'T need
	# 'ProxyRequests On'.

	ProxyRequests On
	SSLProxyEngine On
	#AllowCONNECT 443
	#CustomLog ${APACHE_LOG_DIR}/proxy.log combined

	<Proxy *>
	   AddDefaultCharset off
	   Require all denied
	   Require local
	</Proxy>

	# Enable/disable the handling of HTTP/1.1 "Via:" headers.
	# ("Full" adds the server version; "Block" removes all outgoing Via: headers)
	# Set to one of: Off | On | Full | Block
	#ProxyVia Off

	# Comment out ProxyRemote if conecting to the Internet directly.
	#ProxyRemote * http://proxy.mycompany.com:8888
	#NoProxy 10.0.0.0/8 172.16.0.0/12 192.168.0.0/16 .mygroup.mycompany.com
</VirtualHost>
</IfModule>
# vim: syntax=apache ts=4 sw=4 sts=4 sr noet

Seul le paramètre ProxyRemote est indépendant en tant que intranet.conf afin qu'il puisse être facilement commuté. Définissez ProxyRemote comme proxy au sein de l'entreprise qui émet toutes les demandes.

/etc/apache2/sites-available/intranet.conf


<IfModule mod_proxy.c>

	# Comment out ProxyRemote if conecting to the Internet directly.
	ProxyRemote * http://proxy.mycompany.com:8888
	NoProxy 10.0.0.0/8 172.16.0.0/12 192.168.0.0/16 .mygroup.mycompany.com

</IfModule>
# vim: syntax=apache ts=4 sw=4 sts=4 sr noet

Redémarrez Apache

sudo a2ensite proxy intranet
sudo systemctrl restart apache2

Examen de chaque paramètre

navigateur

Depuis "Paramètres" -> "Réseau" -> "Proxy réseau" de GNOME, définissez le proxy sur "Manuel" et spécifiez respectivement "localhost" et "8888" pour HTTP / HTTPS / FTP.

Variable d'environnement

Définition des variables d'environnement à l'échelle du système.

bash:/etc/profile.d/proxy.sh


#!/bin/bash

export HTTP_PROXY="http://localhost:8888"
export HTTPS_PROXY="http://localhost:8888"
export FTP_PROXY="http://localhost:8888"

apt

paramètres apt. 90 a été décidé de manière appropriée.

config:/etc/apt/apt.conf.d/90proxy


// Configuration for Proxy
Acquire {
    ftp::proxy "http://localhost:8888/";
    http::proxy "http://localhost:8888/";
    https::proxy "http://localhost:8888/";
}

snapd

paramètres snapd.

sudo systemctl edit snapd

L'éditeur s'ouvrira, donc enregistrez-le avec le contenu suivant.

[Service]
Environment=http_proxy=http://localhost:8888
Environment=https_proxy=http://localhost:8888

Redémarrez le démon snapd.

sudo systemctl restart snapd

Paramètres SSH (GitHub)

~/.ssh/config


#
# Configuration for SSH
# ~/.ssh/config
#
Host github.com
     User MyUserName
     HostName ssh.github.com
     Port 443
     ProxyCommand nc -X connect -x localhost:8888 %h %p

Autre

Si vous devez le définir, définissez-le sur <http: // localhost: 8888>. Cela peut être hérité, mais il est gênant d'avoir un paramètre de proxy pour chaque programme.

Basculer entre intranet et proxy direct

C'est correct d'écrire un script simple, mais je ne change pas très souvent et ce n'est pas beaucoup de travail, alors j'ai décidé d'appuyer sur deux commandes.

Utilisé sur l'intranet

sudo a2ensite intranet
sudo systemctl reload apache2

Utilisé avec une connexion directe

sudo a2dissite intranet
sudo systemctrl reload apache2

Ajouté le 10 novembre 2020

J'ai fait un script simple.

~/bin/proxy.sh


#!/bin/bash

# Enable/Disable ProxyPass

if [ $# -eq 0 ]; then
    a2query -s intranet
    exit
fi

case "${1}" in
    on)
        echo "intranet"
        a2ensite intranet > /dev/null
        ;;

    off)
        echo "the Internet"
        a2dissite intranet > /dev/null
        ;;

    *)
        echo "$0 [on|off]"
        exit
esac

systemctl reload apache2

Comment utiliser

Proxy activé

sudo ~/bin/proxy.sh on

Proxy désactivé

sudo ~/bin/proxy.sh off

Confirmation (sudo n'est pas requis pour la confirmation uniquement)

~/bin/proxy.sh

Recommended Posts

Il est difficile de changer les paramètres entre l'intranet et le voyage d'affaires / à la maison, donc j'étais un peu heureux lorsque j'ai mis en place un proxy de transfert localement avec Apache2.
Notez que j'étais accro à la configuration de TensowFlow
Dans IPython, quand j'ai essayé de voir la valeur, c'était un générateur, donc je l'ai inventé quand j'étais frustré.
Lorsqu'il est difficile de configurer un serveur SMTP localement lors de l'envoi de courrier avec Python.
L'éditeur Cloud Shell de GCP était encombré par l'environnement de développement Python, j'ai donc réussi à le reconstruire comme un terrain vacant.
J'ai réussi à le faire parce que la coutume de joindre un zip avec un mot de passe à un e-mail et de dire «Je vous enverrai le mot de passe séparément» est gênante.
Lorsque j'ai essayé de changer le mot de passe root avec ansible, je ne pouvais pas y accéder.