ipv4 – ipv6 / ipv6 – ipv4 gateway / proxy

89
Um IPv6 Webseiten per http oder https für IPv4 Anfragen oder IPv4 Seiten für IPv6 Anfragen erreichbar zu machen, bietet sich ein Linux Gateway / Proxy an. Linux, in diesem Fall ein CentOS 7 System, bietet u.a. folgende Möglichkeiten ein solches Gateway bzw. einen solchen Proxy Server zu realisieren: socat Socat (für SOcket CAT) ist ein mächtiges Tool, das zwei bidirektionale Byte-Streams anlegt und Daten zwischen diesen überträgt. Datenkanäle können Dateien, Pipelines, Geräte (Terminal oder Modem, etc.) oder Sockets (Unix, IPv4, IPv6, Raw, UDP, TCP, SSL) sein. Zunächst muss das Paket „socat“ per yum installiert werden:

Upload: others

Post on 16-Oct-2021

109 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: IPv4 – IPv6 / IPv6 – IPv4 Gateway / Proxy

Um IPv6 Webseiten per http oder https für IPv4 Anfragen oder IPv4 Seiten für IPv6 Anfragen erreichbar zumachen, bietet sich ein Linux Gateway / Proxy an. Linux, in diesem Fall ein CentOS 7 System, bietet u.a.folgende Möglichkeiten ein solches Gateway bzw. einen solchen Proxy Server zu realisieren:

socat

Socat (für SOcket CAT) ist ein mächtiges Tool, das zwei bidirektionale Byte-Streams anlegt und Daten zwischendiesen überträgt. Datenkanäle können Dateien, Pipelines, Geräte (Terminal oder Modem, etc.) oder Sockets(Unix, IPv4, IPv6, Raw, UDP, TCP, SSL) sein. Zunächst muss das Paket „socat“ per yum installiert werden:

Page 2: IPv4 – IPv6 / IPv6 – IPv4 Gateway / Proxy
Page 3: IPv4 – IPv6 / IPv6 – IPv4 Gateway / Proxy

[root@proxy ~]# yum install socat -y

Page 4: IPv4 – IPv6 / IPv6 – IPv4 Gateway / Proxy

Dann bitte folgendes Verzeichnis anlegen:

Page 5: IPv4 – IPv6 / IPv6 – IPv4 Gateway / Proxy
Page 6: IPv4 – IPv6 / IPv6 – IPv4 Gateway / Proxy

[root@proxy ~]# mkdir /etc/socat

Page 7: IPv4 – IPv6 / IPv6 – IPv4 Gateway / Proxy

Jetzt werden zwei Shell Skripte erzeugt. Ein Skript für die Umleitung des Ports 80 und ein Skript für dieUmleitung des Ports 443. In beiden Fällen wird eine IPv4 Anfrage an einen IPv6 Webserver direkt weitergeleitet.

Page 8: IPv4 – IPv6 / IPv6 – IPv4 Gateway / Proxy
Page 9: IPv4 – IPv6 / IPv6 – IPv4 Gateway / Proxy

[root@proxy ~]# vi /etc/socat/80_socat

Page 10: IPv4 – IPv6 / IPv6 – IPv4 Gateway / Proxy
Page 11: IPv4 – IPv6 / IPv6 – IPv4 Gateway / Proxy
Page 12: IPv4 – IPv6 / IPv6 – IPv4 Gateway / Proxy

#!/bin/bash# /etc/socat/80_socat# Socat-Script Port 80

# TCP Port 80

Page 13: IPv4 – IPv6 / IPv6 – IPv4 Gateway / Proxy

/usr/bin/socat TCP4-LISTEN:80,fork TCP6:[IPv6-Adresse des Zielrechners]:80

Page 14: IPv4 – IPv6 / IPv6 – IPv4 Gateway / Proxy
Page 15: IPv4 – IPv6 / IPv6 – IPv4 Gateway / Proxy
Page 16: IPv4 – IPv6 / IPv6 – IPv4 Gateway / Proxy

[root@proxy ~]# vi /etc/socat/443_socat

Page 17: IPv4 – IPv6 / IPv6 – IPv4 Gateway / Proxy
Page 18: IPv4 – IPv6 / IPv6 – IPv4 Gateway / Proxy
Page 19: IPv4 – IPv6 / IPv6 – IPv4 Gateway / Proxy

#!/bin/bash# /etc/socat/443_socat# Socat-Script Port 443

# TCP Port 443

Page 20: IPv4 – IPv6 / IPv6 – IPv4 Gateway / Proxy

/usr/bin/socat TCP4-LISTEN:443,fork TCP6:[IPv6-Adresse des Zielrechners]:443

Page 21: IPv4 – IPv6 / IPv6 – IPv4 Gateway / Proxy

Die beiden soeben erzeugten Dateien ausführbar machen:

Page 22: IPv4 – IPv6 / IPv6 – IPv4 Gateway / Proxy
Page 23: IPv4 – IPv6 / IPv6 – IPv4 Gateway / Proxy

[root@proxy ~]# chmod 755 /etc/socat/80_socat[root@proxy ~]# chmod 755 /etc/socat/443_socat

Page 24: IPv4 – IPv6 / IPv6 – IPv4 Gateway / Proxy
Page 25: IPv4 – IPv6 / IPv6 – IPv4 Gateway / Proxy

Jetzt wird ein für jeden der beiden Ports ein Dienst generiert.

1. Port 80

Page 26: IPv4 – IPv6 / IPv6 – IPv4 Gateway / Proxy
Page 27: IPv4 – IPv6 / IPv6 – IPv4 Gateway / Proxy

[root@proxy ~]# vi /etc/systemd/system/80_socat.service

Page 28: IPv4 – IPv6 / IPv6 – IPv4 Gateway / Proxy
Page 29: IPv4 – IPv6 / IPv6 – IPv4 Gateway / Proxy
Page 30: IPv4 – IPv6 / IPv6 – IPv4 Gateway / Proxy

[Unit]Description=socat Service 80After=network.target

[Service]Type=simpleUser=rootExecStart=/etc/socat/80_socatRestart=on-abort

[Install]

Page 31: IPv4 – IPv6 / IPv6 – IPv4 Gateway / Proxy

WantedBy=multi-user.target

Page 32: IPv4 – IPv6 / IPv6 – IPv4 Gateway / Proxy

2. Port 443

Page 33: IPv4 – IPv6 / IPv6 – IPv4 Gateway / Proxy
Page 34: IPv4 – IPv6 / IPv6 – IPv4 Gateway / Proxy

[root@proxy ~]# vi /etc/systemd/system/443_socat.service

Page 35: IPv4 – IPv6 / IPv6 – IPv4 Gateway / Proxy
Page 36: IPv4 – IPv6 / IPv6 – IPv4 Gateway / Proxy
Page 37: IPv4 – IPv6 / IPv6 – IPv4 Gateway / Proxy

[Unit]Description=socat Service 443After=network.target

[Service]Type=simpleUser=rootExecStart=/etc/socat/443_socatRestart=on-abort

[Install]

Page 38: IPv4 – IPv6 / IPv6 – IPv4 Gateway / Proxy

WantedBy=multi-user.target

Page 39: IPv4 – IPv6 / IPv6 – IPv4 Gateway / Proxy

Der systemctl Daemon muss neu geladen werden um die beiden „Socat-Dienste“ starten zu können.

Page 40: IPv4 – IPv6 / IPv6 – IPv4 Gateway / Proxy
Page 41: IPv4 – IPv6 / IPv6 – IPv4 Gateway / Proxy

[root@proxy ~]# systemctl daemon-reload

Page 42: IPv4 – IPv6 / IPv6 – IPv4 Gateway / Proxy
Page 43: IPv4 – IPv6 / IPv6 – IPv4 Gateway / Proxy
Page 44: IPv4 – IPv6 / IPv6 – IPv4 Gateway / Proxy

[root@proxy ~]# systemctl start 80_socat

Page 45: IPv4 – IPv6 / IPv6 – IPv4 Gateway / Proxy
Page 46: IPv4 – IPv6 / IPv6 – IPv4 Gateway / Proxy
Page 47: IPv4 – IPv6 / IPv6 – IPv4 Gateway / Proxy

[root@proxy ~]# systemctl start 443_socat

Page 48: IPv4 – IPv6 / IPv6 – IPv4 Gateway / Proxy

Damit diese Dienste beim Start des Rechners geladen werden:

Page 49: IPv4 – IPv6 / IPv6 – IPv4 Gateway / Proxy
Page 50: IPv4 – IPv6 / IPv6 – IPv4 Gateway / Proxy

[root@proxy ~]# systemctl enable 80_socat

Page 51: IPv4 – IPv6 / IPv6 – IPv4 Gateway / Proxy
Page 52: IPv4 – IPv6 / IPv6 – IPv4 Gateway / Proxy
Page 53: IPv4 – IPv6 / IPv6 – IPv4 Gateway / Proxy

[root@proxy ~]# systemctl enable 443_socat

Page 54: IPv4 – IPv6 / IPv6 – IPv4 Gateway / Proxy

Bei IPv4 Anfragen für Port 80 und 443 werden diese nun auf einen IPv6 Webserver umgeleitet. Natürlich kannsocat auch mit anderen Ports umgehen!

Wichtig: Im Apache Log des Ziel-Servers taucht nur die IPv6 Adresse des Quell-Servers auf!

Apache als Reverse Proxy

Der Apache HTTP Server der Apache Software Foundation und einer der meistbenutzten Webserver im Internetkann ebenfalls als Reverse Proxy eingesetzt werden.

Zunächst müssen folgende Pakete installiert werden:

Page 55: IPv4 – IPv6 / IPv6 – IPv4 Gateway / Proxy
Page 56: IPv4 – IPv6 / IPv6 – IPv4 Gateway / Proxy

[root@proxy ~]# yum install httpd mod_ssl mod_proxy_html

Page 57: IPv4 – IPv6 / IPv6 – IPv4 Gateway / Proxy

Das Modul „mod_proxy_html” schaltet das Rewriting für HTML links an damit diese funktionieren können.

Page 58: IPv4 – IPv6 / IPv6 – IPv4 Gateway / Proxy
Page 59: IPv4 – IPv6 / IPv6 – IPv4 Gateway / Proxy

[root@proxy ~]# cp /usr/share/doc/httpd-2.4.6/proxy-html.conf /etc/httpd/conf.d/

Page 60: IPv4 – IPv6 / IPv6 – IPv4 Gateway / Proxy

Jetzt wird eine Reverse Proxy Konfiguration benötigt. Dazu wird die Datei /etc/httpd/conf.d/reverse-proxy.confmit folgendem Inhalt erzeugt:

Page 61: IPv4 – IPv6 / IPv6 – IPv4 Gateway / Proxy
Page 62: IPv4 – IPv6 / IPv6 – IPv4 Gateway / Proxy

#Port 80ProxyRequests OffProxyPass / http://[IPv6-Adresse des Zielrechners]:80 connectiontimeout=5 timeout=30ProxyPassReverse / http://[IPv6-Adresse des Zielrechners]:80

#Port 443ProxyRequests OffProxyPass / https://[IPv6-Adresse des Zielrechners]:443 connectiontimeout=5timeout=30

Page 63: IPv4 – IPv6 / IPv6 – IPv4 Gateway / Proxy

ProxyPassReverse / https://[IPv6-Adresse des Zielrechners]:443

Page 64: IPv4 – IPv6 / IPv6 – IPv4 Gateway / Proxy

Damit der Apache Dienst beim Start des Rechners geladen werden kann:

Page 65: IPv4 – IPv6 / IPv6 – IPv4 Gateway / Proxy
Page 66: IPv4 – IPv6 / IPv6 – IPv4 Gateway / Proxy

[root@proxy ~]# systemctl enable httpd

Page 67: IPv4 – IPv6 / IPv6 – IPv4 Gateway / Proxy

Den httpd Daemon starten:

Page 68: IPv4 – IPv6 / IPv6 – IPv4 Gateway / Proxy
Page 69: IPv4 – IPv6 / IPv6 – IPv4 Gateway / Proxy

[root@proxy ~]# systemctl start httpd

Page 70: IPv4 – IPv6 / IPv6 – IPv4 Gateway / Proxy

Die Datei /etc/httpd/conf.d/ssl.conf sowie die SSL Zertifikate im Verzeichnis /etc/pki des Ziel-Servers sollten aufden Proxy-Server exakt so in Kopie vorliegen.

Squid als Reverse Proxy

Squid kann nicht nur als Forward Proxy Server und Web-Cache, sondern auch als Reverse Proxy eingesetztwerden. Vor allem aufgrund seiner guten Skalierbarkeit und der ausgezeichneten Unterstützung für HTTP/HTTPSist er für die Aufgabe prädestiniert.

Squid Paket installieren:

Page 71: IPv4 – IPv6 / IPv6 – IPv4 Gateway / Proxy
Page 72: IPv4 – IPv6 / IPv6 – IPv4 Gateway / Proxy

[root@proxy ~]# yum install squid

Page 73: IPv4 – IPv6 / IPv6 – IPv4 Gateway / Proxy

Damit der Proxy Dienst beim Start des Rechners geladen werden kann:

Page 74: IPv4 – IPv6 / IPv6 – IPv4 Gateway / Proxy
Page 75: IPv4 – IPv6 / IPv6 – IPv4 Gateway / Proxy

[root@proxy ~]# systemctl enable squid

Page 76: IPv4 – IPv6 / IPv6 – IPv4 Gateway / Proxy

Die entsprechend angepasste Squid Proxy Konfiguration wird nun benötigt. Die Datei /etc/squid/squid.conf solltedann wie folgt aussehen:

Page 77: IPv4 – IPv6 / IPv6 – IPv4 Gateway / Proxy
Page 78: IPv4 – IPv6 / IPv6 – IPv4 Gateway / Proxy

# Recommended minimum configuration:## Example rule allowing access from your local networks.# Adapt to list your (internal) IP networks from where browsing# should be allowedacl localnet src 10.0.0.0/8 # RFC1918 possible internal networkacl localnet src 172.16.0.0/12 # RFC1918 possible internal networkacl localnet src 192.168.0.0/16 # RFC1918 possible internal networkacl localnet src fc00::/7 # RFC 4193 local private network rangeacl localnet src fe80::/10 # RFC 4291 link-local (directly plugged) machinesacl SSL_ports port 443 # httpsacl Safe_ports port 80 # httpacl Safe_ports port 21 # ftpacl Safe_ports port 443 # httpsacl Safe_ports port 70 # gopheracl Safe_ports port 210 # waisacl Safe_ports port 1025-65535 # unregistered portsacl Safe_ports port 280 # http-mgmtacl Safe_ports port 488 # gss-httpacl Safe_ports port 591 # filemakeracl Safe_ports port 777 # multiling httpacl CONNECT method CONNECT

# Recommended minimum Access Permission configuration:## Deny requests to certain unsafe portshttp_access deny !Safe_ports# Deny CONNECT to other than secure SSL portshttp_access deny CONNECT !SSL_ports# Only allow cachemgr access from localhosthttp_access allow localhost managerhttp_access deny manager#http_access deny to_localhost

# Squid normally listens to ports 80 and 443http_port 80 accel defaultsite=www.domain.de vhosthttps_port 443 accel cert=/etc/pki/tls/certs/domain.de.pemkey=/etc/pki/tls/private/domain.de.key.pem cafile=/etc/pki/CA/certs/domain.de.ca.pem

Page 79: IPv4 – IPv6 / IPv6 – IPv4 Gateway / Proxy

defaultsite=www.domain.de vhost

# Uncomment and adjust the following to add a disk cache directory.cache_dir ufs /var/spool/squid 500 16 256# Leave coredumps in the first cache dircoredump_dir /var/spool/squid

# Add any of your own refresh_pattern entries above these.#refresh_pattern ^ftp: 1440 20% 10080refresh_pattern ^gopher: 1440 0% 1440refresh_pattern -i (/cgi-bin/|\?) 0 0% 0refresh_pattern . 0 20% 4320

# First (HTTP) Peercache_peer [IPv6-Adresse des Zielrechners] parent 80 0 no-query originserverlogin=PASS name=80

# Second (HTTPS) Peercache_peer [IPv6-Adresse des Zielrechners] parent 443 0 no-query originserver sslsslflags=DONT_VERIFY_PEER login=PASS connection-auth=off name=443

#ACL proxyacl proxy_acl dstdomain .domain.de .domain.comhttp_access allow proxy_acl cache_peer_access 443 allow proxy_acl cache_peer_access 80 allow proxy_acl

# Additional ACL definitionsacl manager proto cache_object acl purge method PURGE acl CONNECT method CONNECT

# Restrictionshttp_access allow manager localhost http_access deny manager http_access allow purge localhost http_access deny purge

Page 80: IPv4 – IPv6 / IPv6 – IPv4 Gateway / Proxy

http_access deny all

# Disable caching# cache deny all

# memory cache sizecache_mem 256 MB

# define hostnamevisible_hostname proxy.domain.de

#logformat <name> <format specification>logformat apache %{%d.%m %H:%M:%S}tl %>a %Ss %ru

#access_logaccess_log /var/log/squid/access.log apache

Page 81: IPv4 – IPv6 / IPv6 – IPv4 Gateway / Proxy

cache_mgr [email protected]

Page 82: IPv4 – IPv6 / IPv6 – IPv4 Gateway / Proxy

Wichtig ist, dass alle SSL Zertifikate (Ziel-Server-Zertifikat, Ziel-Server-Zertifikat Schlüssel und CA Zertifikat) imVerzeichnis /etc/pki des Ziel-Servers auf den Proxy-Server wieder exakt so in Kopie vorliegen. Die Pfadangabenund Namen der Zertifikat Dateien in der Zeile unten müssen auf dem Proxy Server korrekt vorliegen.

Page 83: IPv4 – IPv6 / IPv6 – IPv4 Gateway / Proxy
Page 84: IPv4 – IPv6 / IPv6 – IPv4 Gateway / Proxy

https_port 443 accel cert=/etc/pki/tls/certs/domain.de.pemkey=/etc/pki/tls/private/domain.de.key.pem cafile=/etc/pki/CA/certs/domain.de.ca.pemdefaultsite=www.domain.de vhost

Page 85: IPv4 – IPv6 / IPv6 – IPv4 Gateway / Proxy
Page 86: IPv4 – IPv6 / IPv6 – IPv4 Gateway / Proxy

Squid starten und testen:

Page 87: IPv4 – IPv6 / IPv6 – IPv4 Gateway / Proxy
Page 88: IPv4 – IPv6 / IPv6 – IPv4 Gateway / Proxy

[root@proxy ~]# systemctl start squid

Page 89: IPv4 – IPv6 / IPv6 – IPv4 Gateway / Proxy