[LINUX] Es ist mühsam, die Einstellungen zwischen Intranet und Geschäftsreise / zu Hause zu ändern. Daher war ich ein wenig glücklich, als ich mit Apache2 lokal einen Forward-Proxy eingerichtet habe.

Da sich die Proxy-Einstellungen zwischen der Firewall des Unternehmens und der direkten Verbindung zum Internet auf Reisen oder zu Hause unterscheiden, richten Sie einen Forward-Proxy lokal in Apache2 ein und ändern Sie ihn auf einmal mit den Forward-Proxy-Einstellungen. Alle Proxy-Einstellungen jedes Programms legen den lokalen Proxy fest. Die Umgebung, die ich benutze, ist Ubuntu 20.10.

Apache2-Einstellungen

Es wird davon ausgegangen, dass Apache2 installiert ist und ausgeführt wird.

Modul aktivieren

Aktivieren Sie das Modul für den Proxy.

sudo a2enmod proxy proxy_http proxy_ftp proxy_ssl proxy_connect

Bereiten Sie Ihre eigene Konfiguration vor

Basierend auf / etc / apache2 / mods-available / proxy.conf wird es in / etc / apache2 / sites-available / vorbereitet.

Passen Sie die Portnummer, die Intranet-Proxy-Adresse (ProxyRemote-Einstellung) und die Direktzugriffsadresse (NoProxy-Einstellung) je nach Umgebung an. Diesmal habe ich die Portnummer auf 8888 gesetzt.

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


<IfModule mod_proxy.c>
#Angemessene freie Portnummer
Listen 8888

#Passen Sie die Listen-Einstellung an die Portnummer an
<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

Nur die ProxyRemote-Einstellung ist als "intranet.conf" unabhängig, sodass sie problemlos umgeschaltet werden kann. Legen Sie ProxyRemote als Proxy innerhalb des Unternehmens fest, der alle Anforderungen auslöst.

/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

Starten Sie Apache neu

sudo a2ensite proxy intranet
sudo systemctrl restart apache2

Überprüfung jeder Einstellung

Browser

Stellen Sie in den "Einstellungen" von GNOME -> "Netzwerk" -> "Netzwerkproxy" den Proxy auf "Manuell" ein und geben Sie "localhost" und "8888" für HTTP / HTTPS / FTP an.

Umgebungsvariable

Festlegen systemweiter Umgebungsvariablen.

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

passende Einstellungen. 90 wurde angemessen entschieden.

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

Snapd-Einstellungen.

sudo systemctl edit snapd

Der Editor wird geöffnet. Speichern Sie ihn daher mit den folgenden Inhalten.

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

Starten Sie den snapd-Daemon neu.

sudo systemctl restart snapd

SSH (GitHub) Einstellungen

~/.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

Andere

Wenn Sie es einstellen müssen, setzen Sie es auf <http: // localhost: 8888>. Es mag Legacy sein, aber es ist problematisch, für jedes Programm eine Proxy-Einstellung zu haben.

Wechsel zwischen Intranet und Direct Proxy

Es ist in Ordnung, ein einfaches Skript zu schreiben, aber ich wechsle nicht sehr oft und es ist nicht viel Arbeit, also habe ich beschlossen, zwei Befehle zu drücken.

Wird im Intranet verwendet

sudo a2ensite intranet
sudo systemctl reload apache2

Wird mit direkter Verbindung verwendet

sudo a2dissite intranet
sudo systemctrl reload apache2

Hinzugefügt am 10. November 2020

Ich habe ein einfaches Skript erstellt.

~/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

Wie benutzt man

Proxy aktiviert

sudo ~/bin/proxy.sh on

Proxy deaktiviert

sudo ~/bin/proxy.sh off

Bestätigung (sudo wird nicht nur zur Bestätigung benötigt)

~/bin/proxy.sh

Recommended Posts

Es ist mühsam, die Einstellungen zwischen Intranet und Geschäftsreise / zu Hause zu ändern. Daher war ich ein wenig glücklich, als ich mit Apache2 lokal einen Forward-Proxy eingerichtet habe.
Beachten Sie, dass ich süchtig danach war, TensowFlow einzurichten
Als ich in IPython versuchte, den Wert zu sehen, war es ein Generator, also kam ich auf ihn, als ich frustriert war.
Wenn es schwierig ist, beim Senden von E-Mails mit Python lokal einen SMTP-Server einzurichten.
Der Cloud Shell Editor von GCP war mit der Python-Entwicklungsumgebung verstopft, sodass ich es geschafft habe, ihn auf einem freien Grundstück neu zu erstellen.
Ich habe es geschafft, weil der Brauch, eine Zip mit einem Passwort an eine E-Mail anzuhängen und "Ich werde Ihnen das Passwort separat senden" zu sagen, mühsam ist.
Als ich versuchte, das Root-Passwort mit ansible zu ändern, konnte ich nicht darauf zugreifen.