VMs für Anwendungsfälle im Netzwerk konfigurieren

Auf dieser Seite werden spezielle Netzwerkkonfigurationen von Compute Engine-VM-Instanzen beschrieben, z. B.:

  • Externe HTTP-Verbindung zu einer VM einrichten
  • VM als Netzwerkproxy konfigurieren

Externe HTTP-Verbindung zu einer VM einrichten

Die standardmäßigen Firewallregeln lassen keine HTTP- oder HTTPS-Verbindungen zu Instanzen zu. Eine Regel, die diese zulässt, kann jedoch recht einfach hinzugefügt werden. Eine VM muss eine (statische oder sitzungsspezifische) externe IP-Adresse haben, bevor sie Traffic von außerhalb ihres VPC-Netzwerks (Virtual Private Cloud) empfangen kann.

Sie können mithilfe des gcloud-Befehlszeilentools oder der Google Cloud Console eine Firewallregel hinzufügen, um HTTP- oder HTTPS-Verbindungen zuzulassen. Sie können auch über die API eine Firewallregel hinzufügen.

Console

Sie können mit der Cloud Console eine Firewallregel für alle Instanzen im VPC-Netzwerk erstellen oder einzelnen Instanzen Zugriff auf HTTP- und HTTPS-Verbindungen gewähren. Dazu wählen Sie beim Erstellen der Instanz die entsprechende Option aus. Die letztere Option wird zuerst beschrieben, weil sie mehr Kontrolle über einzelne Instanzen gibt.

  1. Öffnen Sie in der Cloud Console die Seite VM-Instanzen.

    Zur Seite "VM-Instanzen"

  2. Klicken Sie auf Instanz erstellen.
  3. Wählen Sie im Bereich Firewall die Option HTTP-Traffic zulassen und HTTPS-Traffic zulassen.
  4. Klicken Sie auf Erstellen, um die Instanz anzulegen.

Wenn diese Kästchen angeklickt sind, erstellt das VPC-Netzwerk automatisch eine default-http- oder default-https-Regel, die für alle Instanzen mit dem Tag http-server oder https-server gilt. Die neue Instanz wird ebenfalls je nach angeklicktem Kästchen mit dem entsprechenden Tag gekennzeichnet.

Wenn Sie bereits Firewallregeln default-http und default-https haben, können Sie die Firewallregel auf vorhandene Instanzen anwenden, indem Sie die Optionen HTTP-Traffic zulassen oder HTTPS-Traffic zulassen auf der Detailseite der Instanz aktivieren.

  1. Öffnen Sie die Seite "VM-Instanzen".
  2. Klicken Sie auf den Namen der gewünschten Instanz.
  3. Klicken Sie oben auf der Seite auf Bearbeiten.
  4. Scrollen Sie nach unten zum Abschnitt Firewalls.
  5. Aktivieren Sie die Optionen HTTP-Traffic zulassen oder HTTPS-Traffic zulassen unter dem gewünschten VPC-Netzwerk.
  6. Klicken Sie auf Speichern.

Auf ähnliche Weise können Sie auch den externen HTTP- oder HTTPS-Zugriff für eine VM deaktivieren, indem Sie das Häkchen aus einem oder beiden Kästchen entfernen.

Google Cloud begrenzt die möglichen Sicherheitsauswirkungen von externem Traffic für alle virtuellen Maschinen in einem Projekt, indem das Taggen bestimmter Instanzen für HTTP- und HTTPS-Traffic zugelassen wird, statt eine Gesamtfirewallregel zu erstellen, die für alle Instanzen gilt. Wenn Sie jedoch eine Firewallregel wünschen, die HTTP- oder HTTPS-Traffic zu allen VM-Instanzen zulässt, können Sie eine eigene Firewallregel erstellen:

  1. Öffnen Sie die Seite "VPC-Netzwerke".
  2. Wählen Sie das VPC-Netzwerk, in dem die Firewallregel angewendet werden soll.
  3. Klicken Sie unter dem Bereich Firewallregeln auf Firewallregel hinzufügen.
  4. Benennen Sie die Firewallregel und fügen Sie tcp:80 im Feld Protokolle und Ports oder tcp:443 für HTTPS-Traffic hinzu.
  5. Klicken Sie auf Erstellen.
gcloud-Befehlszeilentool

Wenn Sie HTTP- und HTTPS-Traffic an alle virtuellen Maschinen in einem Projekt zulassen möchten, erstellt der folgende Befehl eine Firewall, die eingehende HTTP- und HTTPS-Anfragen von überall her zu jeder beliebigen Instanz ermöglicht, die mit diesem VPC-Netzwerk verbunden ist.

gcloud compute firewall-rules create FIREWALL_RULE --allow tcp:80,tcp:443

**Beispiel**

gcloud compute firewall-rules create sample-http \
 --description "Incoming http and https allowed." \
 --allow tcp:80,tcp:443
gcloud compute firewall-rules describe sample-http
allowed:
- IPProtocol: tcp
  ports:
  - '80'
  - '443'
creationTimestamp: '2014-06-13T13:27:12.206-07:00'
id: '5057780722612413546'
kind: compute#firewall
name: sample-http
network: https://www.googleapis.com/compute/v1/projects/[PROJECT_ID]/global/networks/default
selfLink: https://www.googleapis.com/compute/v1/projects/[PROJECT_ID]/global/firewalls/samplehttp
sourceRanges:
- 0.0.0.0/0

VM als Netzwerkproxy konfigurieren

Sie können das VPC-Netzwerk so konzipieren, dass nur eine Instanz externen Zugriff hat und alle anderen Instanzen im VPC-Netzwerk diese Instanz als Proxyserver zur Außenwelt verwenden. Dies ist nützlich, wenn Sie den Zugriff auf das oder aus dem VPC-Netzwerk heraus steuern oder die Kosten senken möchten, die durch die Verwendung mehrerer externer IP-Adressen entstehen.

In diesem speziellen Beispiel wird erläutert, wie ein Netzwerkproxy auf VM-Instanzen eingerichtet wird, auf denen ein Debian-Image ausgeführt wird. Dabei wird eine Gatewayinstanz als Squid-Proxyserver verwendet. Dies ist jedoch nur eine Möglichkeit zur Einrichtung eines Proxyservers.

So richten Sie einen Squid-Proxyserver ein:

  1. Richten Sie eine Instanz mit einer externen (statischen oder sitzungsspezifischen) IP-Adresse ein. In diesem Beispiel nennen wir die Instanz gateway-instance.
  2. Richten Sie eine oder mehrere Instanzen ohne externe IP-Adressen durch Angabe von gcloud compute instances create ... --no-address ein. Nennen Sie die Instanz in diesem Beispiel hidden-instance.
  3. Informieren Sie sich darüber, wie Sie eine Verbindung von einer Instanz zu einer anderen herstellen können, da es nicht möglich sein wird, eine direkte Verbindung zu rein internen Instanzen herzustellen.
  4. Fügen Sie eine Firewallregel hinzu, um TCP-Traffic an Port 3128 zuzulassen:

    gcloud compute firewall-rules create [FIREWALL_RULE] --network [NETWORK] --allow tcp:3128
    
  5. Installieren Sie Squid auf gateway-instance und konfigurieren Sie es so, dass der Zugriff von jeder Maschine im VPC-Netzwerk (gültige Subnetz-IP-Adressen) zugelassen wird. Dabei wird davon ausgegangen, dass gateway-instance und hidden-instance beide mit demselben VPC-Netzwerk verbunden sind, wodurch sie eine Verbindung zueinander herstellen können.

    user@gateway-instance:~$ sudo apt-get install squid3
    

    Ermöglichen Sie die Verwendung des Squid3-Servers für die Computer im lokalen Netzwerk. Mit den folgenden sed-Befehlen entfernen Sie die Kommentarzeichen und aktivieren die acl localnet src-Einträge in den Squid-Konfigurationsdateien für lokale Netzwerke und Computer.

    user@gateway-instance:~$ sudo sed -i 's:#\(http_access allow localnet\):\1:' /etc/squid/squid.conf
    
    user@gateway-instance:~$ sudo sed -i 's:#\(http_access deny to_localhost\):\1:' /etc/squid/squid.conf
    
    user@gateway-instance:~$ sudo sed -i 's:#\(acl localnet src 10.0.0.0/8.*\):\1:' /etc/squid/squid.conf
    
    user@gateway-instance:~$ sudo sed -i 's:#\(acl localnet src 172.16.0.0/12.*\):\1:' /etc/squid/squid.conf
    
    user@gateway-instance:~$ sudo sed -i 's:#\(acl localnet src 192.168.0.0/16.*\):\1:' /etc/squid/squid.conf
    
    user@gateway-instance:~$ sudo sed -i 's:#\(acl localnet src fc00\:\:/7.*\):\1:' /etc/squid/squid.conf
    
    user@gateway-instance:~$ sudo sed -i 's:#\(acl localnet src fe80\:\:/10.*\):\1:' /etc/squid/squid.conf
    
    # Prevent proxy access to metadata server
    user@gateway-instance:~$ sudo tee -a /etc/squid/squid.conf <<'EOF'
    acl to_metadata dst 169.254.169.254
    http_access deny to_metadata
    EOF
    
    # Start Squid
    user@gateway:~$ sudo service squid start
    
  6. Konfigurieren Sie hidden-instance so, dass gateway-instance als Proxy verwendet wird. Stellen Sie eine SSH-Verbindung zu hidden-instance her und definieren Sie deren Proxy-URL-Adressen so, dass sie auf gateway-instance an Port 3128 verweisen (Squid-Standardkonfiguration). Beispiel:

    user@gateway-instance:~$ ssh hidden-instance
    
    user@hidden-instance:~$ sudo -s
    
    root@hidden-instance:~# echo "export http_proxy=\"http://gateway-instance.$(dnsdomainname):3128\"" >> /etc/profile.d/proxy.sh
    
    root@hidden-instance:~# echo "export https_proxy=\"http://gateway-instance.$(dnsdomainname):3128\"" >> /etc/profile.d/proxy.sh
    
    root@hidden-instance:~# echo "export ftp_proxy=\"http://gateway-instance.$(dnsdomainname):3128\"" >> /etc/profile.d/proxy.sh
    
    root@hidden-instance:~# echo "export no_proxy=169.254.169.254,metadata,metadata.google.internal" >> /etc/profile.d/proxy.sh
    

    Aktualisieren Sie sudoers, damit diese env-Variablen übergeben werden.

    root@hidden-instance:~# cp /etc/sudoers /tmp/sudoers.new
    
    root@hidden-instance:~# chmod 640 /tmp/sudoers.new
    
    root@hidden-instance:~# echo "Defaults env_keep += \"ftp_proxy http_proxy https_proxy no_proxy"\" >>/tmp/sudoers.new
    
    root@hidden-instance:~# chmod 440 /tmp/sudoers.new
    
    root@hidden-instance:~# visudo -c -f /tmp/sudoers.new && cp /tmp/sudoers.new /etc/sudoers
    
  7. Beenden Sie sudo, laden Sie die Variablen und führen Sie apt-get auf hidden-instance aus. Damit sollte das Gateway als Proxy verwendet werden können. Wenn das Gateway nicht als Proxy verwendet werden kann, funktioniert apt-get nicht, da hidden-instance keine direkte Verbindung zum Internet hat.

    root@hidden-instance:~# exit
    
    user@hidden-instance:~$ source ~/.profile
    
    user@hidden-instance:~$ sudo apt-get update
    

VM als VPN-Gateway konfigurieren

Dieser Inhalt wurde verworfen und entfernt. Informationen zu verwalteten VPN-Lösungen finden Sie in der Dokumentation zu Cloud VPN.

VM als NAT-Gateway konfigurieren

Dieser Inhalt wurde verworfen und entfernt. Informationen zu einer verwalteten NAT-Lösung finden Sie in der Dokumentation zu Cloud NAT.

NAT-Gateways mit Hochverfügbarkeit und hoher Bandbreite erstellen

Dieser Inhalt wurde verworfen und entfernt. Informationen zu einer verwalteten NAT-Lösung finden Sie in der Dokumentation zu Cloud NAT.

Nächste Schritte