Remote IP (Client) wird nicht weitergeleitet
Um Container nach Außen erreichbar zu machen (z. B. Webseiten über http oder https), bedient man sich des Konstrukts einen Proxy Container vorzuschalten. Dies hat den Vorteil, dass nur ein Container nach Außen "sichtbar" ist.
Viele Admins treffen jedoch auf das Problem, dass die Log-Dateien nicht die Remote IP, des aufrufenden Clients (Besuchers), anzeigen, sondern die IP des Proxy Containers. Dieses ist ein Problem, wenn nur ein IP-beschränkter Zugriff erfolgen oder Statistikseiten wie Matomo (ehemals Piwik) die Geo-Daten auswerten sollen. Dafür ist die Remote IP des Clients notwendig.
Konfiguration
UFW Firewall
Sobald die Firewall aktiviert ist, lässt sie grundsätzlich keine Verbindungen von Außerhalb zu.
In der Datei /etc/default/ufw wird die Forward-Policy auf ACCEPT gesetzt.
DEFAULT_FORWARD_POLICY="ACCEPT"
Folgende Einträge müssen in der Datei /etc/ufw/after.rules an dam Ende eingetragen werden, damit der Proxy Container auf die abgeschirmten Container zugreifen kann.
IPTables Firewall
*nat
:POSTROUTING ACCEPT [0:0]
-A POSTROUTING ! -o docker0 -s 172.1.0.0/16 -j MASQUERADE
-A POSTROUTING ! -o docker0 -s 172.2.0.0/16 -j MASQUERADE
-A POSTROUTING ! -o docker0 -s 172.3.0.0/16 -j MASQUERADE
-A POSTROUTING ! -o docker0 -s 172.4.0.0/16 -j MASQUERADE
-A POSTROUTING ! -o docker0 -s 172.5.0.0/16 -j MASQUERADE
-A POSTROUTING ! -o docker0 -s 172.6.0.0/16 -j MASQUERADE
-A POSTROUTING ! -o docker0 -s 172.7.0.0/16 -j MASQUERADE
-A POSTROUTING ! -o docker0 -s 172.8.0.0/16 -j MASQUERADE
-A POSTROUTING ! -o docker0 -s 172.9.0.0/16 -j MASQUERADE
-A POSTROUTING ! -o docker0 -s 172.10.0.0/16 -j MASQUERADE
-A POSTROUTING ! -o docker0 -s 172.11.0.0/16 -j MASQUERADE
-A POSTROUTING ! -o docker0 -s 172.12.0.0/16 -j MASQUERADE
-A POSTROUTING ! -o docker0 -s 172.13.0.0/16 -j MASQUERADE
-A POSTROUTING ! -o docker0 -s 172.14.0.0/16 -j MASQUERADE
-A POSTROUTING ! -o docker0 -s 172.15.0.0/16 -j MASQUERADE
-A POSTROUTING ! -o docker0 -s 172.16.0.0/16 -j MASQUERADE
-A POSTROUTING ! -o docker0 -s 172.17.0.0/16 -j MASQUERADE
-A POSTROUTING ! -o docker0 -s 172.18.0.0/16 -j MASQUERADE
-A POSTROUTING ! -o docker0 -s 172.19.0.0/16 -j MASQUERADE
-A POSTROUTING ! -o docker0 -s 172.20.0.0/16 -j MASQUERADE
-A POSTROUTING ! -o docker0 -s 172.21.0.0/16 -j MASQUERADE
-A POSTROUTING ! -o docker0 -s 172.22.0.0/16 -j MASQUERADE
-A POSTROUTING ! -o docker0 -s 172.23.0.0/16 -j MASQUERADE
-A POSTROUTING ! -o docker0 -s 172.24.0.0/16 -j MASQUERADE
-A POSTROUTING ! -o docker0 -s 172.25.0.0/16 -j MASQUERADE
-A POSTROUTING ! -o docker0 -s 172.26.0.0/16 -j MASQUERADE
-A POSTROUTING ! -o docker0 -s 172.27.0.0/16 -j MASQUERADE
-A POSTROUTING ! -o docker0 -s 172.28.0.0/16 -j MASQUERADE
-A POSTROUTING ! -o docker0 -s 172.29.0.0/16 -j MASQUERADE
-A POSTROUTING ! -o docker0 -s 172.30.0.0/16 -j MASQUERADE
-A POSTROUTING ! -o docker0 -s 172.31.0.0/16 -j MASQUERADE
-A POSTROUTING ! -o docker0 -s 172.32.0.0/16 -j MASQUERADE
-A POSTROUTING ! -o docker0 -s 172.33.0.0/16 -j MASQUERADE
-A POSTROUTING ! -o docker0 -s 172.34.0.0/16 -j MASQUERADE
-A POSTROUTING ! -o docker0 -s 172.35.0.0/16 -j MASQUERADE
-A POSTROUTING ! -o docker0 -s 172.36.0.0/16 -j MASQUERADE
-A POSTROUTING ! -o docker0 -s 172.37.0.0/16 -j MASQUERADE
-A POSTROUTING ! -o docker0 -s 172.38.0.0/16 -j MASQUERADE
-A POSTROUTING ! -o docker0 -s 172.39.0.0/16 -j MASQUERADE
-A POSTROUTING ! -o docker0 -s 172.40.0.0/16 -j MASQUERADE
-A POSTROUTING ! -o docker0 -s 172.41.0.0/16 -j MASQUERADE
-A POSTROUTING ! -o docker0 -s 172.42.0.0/16 -j MASQUERADE
-A POSTROUTING ! -o docker0 -s 172.43.0.0/16 -j MASQUERADE
-A POSTROUTING ! -o docker0 -s 172.44.0.0/16 -j MASQUERADE
-A POSTROUTING ! -o docker0 -s 172.45.0.0/16 -j MASQUERADE
-A POSTROUTING ! -o docker0 -s 172.46.0.0/16 -j MASQUERADE
-A POSTROUTING ! -o docker0 -s 172.47.0.0/16 -j MASQUERADE
-A POSTROUTING ! -o docker0 -s 172.48.0.0/16 -j MASQUERADE
-A POSTROUTING ! -o docker0 -s 172.49.0.0/16 -j MASQUERADE
-A POSTROUTING ! -o docker0 -s 172.50.0.0/16 -j MASQUERADE
-A POSTROUTING ! -o docker0 -s 172.51.0.0/16 -j MASQUERADE
-A POSTROUTING ! -o docker0 -s 172.52.0.0/16 -j MASQUERADE
-A POSTROUTING ! -o docker0 -s 172.53.0.0/16 -j MASQUERADE
-A POSTROUTING ! -o docker0 -s 172.54.0.0/16 -j MASQUERADE
-A POSTROUTING ! -o docker0 -s 172.55.0.0/16 -j MASQUERADE
-A POSTROUTING ! -o docker0 -s 172.56.0.0/16 -j MASQUERADE
-A POSTROUTING ! -o docker0 -s 172.57.0.0/16 -j MASQUERADE
-A POSTROUTING ! -o docker0 -s 172.58.0.0/16 -j MASQUERADE
-A POSTROUTING ! -o docker0 -s 172.59.0.0/16 -j MASQUERADE
-A POSTROUTING ! -o docker0 -s 172.60.0.0/16 -j MASQUERADE
-A POSTROUTING ! -o docker0 -s 172.61.0.0/16 -j MASQUERADE
-A POSTROUTING ! -o docker0 -s 172.62.0.0/16 -j MASQUERADE
-A POSTROUTING ! -o docker0 -s 172.63.0.0/16 -j MASQUERADE
-A POSTROUTING ! -o docker0 -s 172.64.0.0/16 -j MASQUERADE
-A POSTROUTING ! -o docker0 -s 172.65.0.0/16 -j MASQUERADE
-A POSTROUTING ! -o docker0 -s 172.66.0.0/16 -j MASQUERADE
-A POSTROUTING ! -o docker0 -s 172.67.0.0/16 -j MASQUERADE
-A POSTROUTING ! -o docker0 -s 172.68.0.0/16 -j MASQUERADE
-A POSTROUTING ! -o docker0 -s 172.69.0.0/16 -j MASQUERADE
-A POSTROUTING ! -o docker0 -s 172.70.0.0/16 -j MASQUERADE
-A POSTROUTING ! -o docker0 -s 172.71.0.0/16 -j MASQUERADE
-A POSTROUTING ! -o docker0 -s 172.72.0.0/16 -j MASQUERADE
-A POSTROUTING ! -o docker0 -s 172.73.0.0/16 -j MASQUERADE
-A POSTROUTING ! -o docker0 -s 172.74.0.0/16 -j MASQUERADE
-A POSTROUTING ! -o docker0 -s 172.75.0.0/16 -j MASQUERADE
-A POSTROUTING ! -o docker0 -s 172.76.0.0/16 -j MASQUERADE
-A POSTROUTING ! -o docker0 -s 172.77.0.0/16 -j MASQUERADE
-A POSTROUTING ! -o docker0 -s 172.78.0.0/16 -j MASQUERADE
-A POSTROUTING ! -o docker0 -s 172.79.0.0/16 -j MASQUERADE
-A POSTROUTING ! -o docker0 -s 172.80.0.0/16 -j MASQUERADE
-A POSTROUTING ! -o docker0 -s 172.81.0.0/16 -j MASQUERADE
-A POSTROUTING ! -o docker0 -s 172.82.0.0/16 -j MASQUERADE
-A POSTROUTING ! -o docker0 -s 172.83.0.0/16 -j MASQUERADE
-A POSTROUTING ! -o docker0 -s 172.84.0.0/16 -j MASQUERADE
-A POSTROUTING ! -o docker0 -s 172.85.0.0/16 -j MASQUERADE
-A POSTROUTING ! -o docker0 -s 172.86.0.0/16 -j MASQUERADE
-A POSTROUTING ! -o docker0 -s 172.87.0.0/16 -j MASQUERADE
-A POSTROUTING ! -o docker0 -s 172.88.0.0/16 -j MASQUERADE
-A POSTROUTING ! -o docker0 -s 172.89.0.0/16 -j MASQUERADE
-A POSTROUTING ! -o docker0 -s 172.90.0.0/16 -j MASQUERADE
-A POSTROUTING ! -o docker0 -s 172.91.0.0/16 -j MASQUERADE
-A POSTROUTING ! -o docker0 -s 172.92.0.0/16 -j MASQUERADE
-A POSTROUTING ! -o docker0 -s 172.93.0.0/16 -j MASQUERADE
-A POSTROUTING ! -o docker0 -s 172.94.0.0/16 -j MASQUERADE
-A POSTROUTING ! -o docker0 -s 172.95.0.0/16 -j MASQUERADE
-A POSTROUTING ! -o docker0 -s 172.96.0.0/16 -j MASQUERADE
-A POSTROUTING ! -o docker0 -s 172.97.0.0/16 -j MASQUERADE
-A POSTROUTING ! -o docker0 -s 172.98.0.0/16 -j MASQUERADE
-A POSTROUTING ! -o docker0 -s 172.99.0.0/16 -j MASQUERADE
-A POSTROUTING ! -o docker0 -s 172.100.0.0/16 -j MASQUERADE
-A POSTROUTING ! -o docker0 -s 172.101.0.0/16 -j MASQUERADE
-A POSTROUTING ! -o docker0 -s 172.102.0.0/16 -j MASQUERADE
-A POSTROUTING ! -o docker0 -s 172.103.0.0/16 -j MASQUERADE
-A POSTROUTING ! -o docker0 -s 172.104.0.0/16 -j MASQUERADE
-A POSTROUTING ! -o docker0 -s 172.105.0.0/16 -j MASQUERADE
-A POSTROUTING ! -o docker0 -s 172.106.0.0/16 -j MASQUERADE
-A POSTROUTING ! -o docker0 -s 172.107.0.0/16 -j MASQUERADE
-A POSTROUTING ! -o docker0 -s 172.108.0.0/16 -j MASQUERADE
-A POSTROUTING ! -o docker0 -s 172.109.0.0/16 -j MASQUERADE
-A POSTROUTING ! -o docker0 -s 172.110.0.0/16 -j MASQUERADE
-A POSTROUTING ! -o docker0 -s 172.111.0.0/16 -j MASQUERADE
-A POSTROUTING ! -o docker0 -s 172.112.0.0/16 -j MASQUERADE
-A POSTROUTING ! -o docker0 -s 172.113.0.0/16 -j MASQUERADE
-A POSTROUTING ! -o docker0 -s 172.114.0.0/16 -j MASQUERADE
-A POSTROUTING ! -o docker0 -s 172.115.0.0/16 -j MASQUERADE
-A POSTROUTING ! -o docker0 -s 172.116.0.0/16 -j MASQUERADE
-A POSTROUTING ! -o docker0 -s 172.117.0.0/16 -j MASQUERADE
-A POSTROUTING ! -o docker0 -s 172.118.0.0/16 -j MASQUERADE
-A POSTROUTING ! -o docker0 -s 172.119.0.0/16 -j MASQUERADE
-A POSTROUTING ! -o docker0 -s 172.120.0.0/16 -j MASQUERADE
-A POSTROUTING ! -o docker0 -s 172.121.0.0/16 -j MASQUERADE
-A POSTROUTING ! -o docker0 -s 172.122.0.0/16 -j MASQUERADE
-A POSTROUTING ! -o docker0 -s 172.123.0.0/16 -j MASQUERADE
-A POSTROUTING ! -o docker0 -s 172.124.0.0/16 -j MASQUERADE
-A POSTROUTING ! -o docker0 -s 172.125.0.0/16 -j MASQUERADE
-A POSTROUTING ! -o docker0 -s 172.126.0.0/16 -j MASQUERADE
-A POSTROUTING ! -o docker0 -s 172.127.0.0/16 -j MASQUERADE
-A POSTROUTING ! -o docker0 -s 172.128.0.0/16 -j MASQUERADE
-A POSTROUTING ! -o docker0 -s 172.129.0.0/16 -j MASQUERADE
-A POSTROUTING ! -o docker0 -s 172.130.0.0/16 -j MASQUERADE
-A POSTROUTING ! -o docker0 -s 172.131.0.0/16 -j MASQUERADE
-A POSTROUTING ! -o docker0 -s 172.132.0.0/16 -j MASQUERADE
-A POSTROUTING ! -o docker0 -s 172.133.0.0/16 -j MASQUERADE
-A POSTROUTING ! -o docker0 -s 172.134.0.0/16 -j MASQUERADE
-A POSTROUTING ! -o docker0 -s 172.135.0.0/16 -j MASQUERADE
-A POSTROUTING ! -o docker0 -s 172.136.0.0/16 -j MASQUERADE
-A POSTROUTING ! -o docker0 -s 172.137.0.0/16 -j MASQUERADE
-A POSTROUTING ! -o docker0 -s 172.138.0.0/16 -j MASQUERADE
-A POSTROUTING ! -o docker0 -s 172.139.0.0/16 -j MASQUERADE
-A POSTROUTING ! -o docker0 -s 172.140.0.0/16 -j MASQUERADE
-A POSTROUTING ! -o docker0 -s 172.141.0.0/16 -j MASQUERADE
-A POSTROUTING ! -o docker0 -s 172.142.0.0/16 -j MASQUERADE
-A POSTROUTING ! -o docker0 -s 172.143.0.0/16 -j MASQUERADE
-A POSTROUTING ! -o docker0 -s 172.144.0.0/16 -j MASQUERADE
-A POSTROUTING ! -o docker0 -s 172.145.0.0/16 -j MASQUERADE
-A POSTROUTING ! -o docker0 -s 172.146.0.0/16 -j MASQUERADE
-A POSTROUTING ! -o docker0 -s 172.147.0.0/16 -j MASQUERADE
-A POSTROUTING ! -o docker0 -s 172.148.0.0/16 -j MASQUERADE
-A POSTROUTING ! -o docker0 -s 172.149.0.0/16 -j MASQUERADE
-A POSTROUTING ! -o docker0 -s 172.150.0.0/16 -j MASQUERADE
-A POSTROUTING ! -o docker0 -s 172.151.0.0/16 -j MASQUERADE
-A POSTROUTING ! -o docker0 -s 172.152.0.0/16 -j MASQUERADE
-A POSTROUTING ! -o docker0 -s 172.153.0.0/16 -j MASQUERADE
-A POSTROUTING ! -o docker0 -s 172.154.0.0/16 -j MASQUERADE
-A POSTROUTING ! -o docker0 -s 172.155.0.0/16 -j MASQUERADE
-A POSTROUTING ! -o docker0 -s 172.156.0.0/16 -j MASQUERADE
-A POSTROUTING ! -o docker0 -s 172.157.0.0/16 -j MASQUERADE
-A POSTROUTING ! -o docker0 -s 172.158.0.0/16 -j MASQUERADE
-A POSTROUTING ! -o docker0 -s 172.159.0.0/16 -j MASQUERADE
-A POSTROUTING ! -o docker0 -s 172.160.0.0/16 -j MASQUERADE
-A POSTROUTING ! -o docker0 -s 172.161.0.0/16 -j MASQUERADE
-A POSTROUTING ! -o docker0 -s 172.162.0.0/16 -j MASQUERADE
-A POSTROUTING ! -o docker0 -s 172.163.0.0/16 -j MASQUERADE
-A POSTROUTING ! -o docker0 -s 172.164.0.0/16 -j MASQUERADE
-A POSTROUTING ! -o docker0 -s 172.165.0.0/16 -j MASQUERADE
-A POSTROUTING ! -o docker0 -s 172.166.0.0/16 -j MASQUERADE
-A POSTROUTING ! -o docker0 -s 172.167.0.0/16 -j MASQUERADE
-A POSTROUTING ! -o docker0 -s 172.168.0.0/16 -j MASQUERADE
-A POSTROUTING ! -o docker0 -s 172.169.0.0/16 -j MASQUERADE
-A POSTROUTING ! -o docker0 -s 172.170.0.0/16 -j MASQUERADE
-A POSTROUTING ! -o docker0 -s 172.171.0.0/16 -j MASQUERADE
-A POSTROUTING ! -o docker0 -s 172.172.0.0/16 -j MASQUERADE
-A POSTROUTING ! -o docker0 -s 172.173.0.0/16 -j MASQUERADE
-A POSTROUTING ! -o docker0 -s 172.174.0.0/16 -j MASQUERADE
-A POSTROUTING ! -o docker0 -s 172.175.0.0/16 -j MASQUERADE
-A POSTROUTING ! -o docker0 -s 172.176.0.0/16 -j MASQUERADE
-A POSTROUTING ! -o docker0 -s 172.177.0.0/16 -j MASQUERADE
-A POSTROUTING ! -o docker0 -s 172.178.0.0/16 -j MASQUERADE
-A POSTROUTING ! -o docker0 -s 172.179.0.0/16 -j MASQUERADE
-A POSTROUTING ! -o docker0 -s 172.180.0.0/16 -j MASQUERADE
-A POSTROUTING ! -o docker0 -s 172.181.0.0/16 -j MASQUERADE
-A POSTROUTING ! -o docker0 -s 172.182.0.0/16 -j MASQUERADE
-A POSTROUTING ! -o docker0 -s 172.183.0.0/16 -j MASQUERADE
-A POSTROUTING ! -o docker0 -s 172.184.0.0/16 -j MASQUERADE
-A POSTROUTING ! -o docker0 -s 172.185.0.0/16 -j MASQUERADE
-A POSTROUTING ! -o docker0 -s 172.186.0.0/16 -j MASQUERADE
-A POSTROUTING ! -o docker0 -s 172.187.0.0/16 -j MASQUERADE
-A POSTROUTING ! -o docker0 -s 172.188.0.0/16 -j MASQUERADE
-A POSTROUTING ! -o docker0 -s 172.189.0.0/16 -j MASQUERADE
-A POSTROUTING ! -o docker0 -s 172.190.0.0/16 -j MASQUERADE
-A POSTROUTING ! -o docker0 -s 172.191.0.0/16 -j MASQUERADE
-A POSTROUTING ! -o docker0 -s 172.192.0.0/16 -j MASQUERADE
-A POSTROUTING ! -o docker0 -s 172.193.0.0/16 -j MASQUERADE
-A POSTROUTING ! -o docker0 -s 172.194.0.0/16 -j MASQUERADE
-A POSTROUTING ! -o docker0 -s 172.195.0.0/16 -j MASQUERADE
-A POSTROUTING ! -o docker0 -s 172.196.0.0/16 -j MASQUERADE
-A POSTROUTING ! -o docker0 -s 172.197.0.0/16 -j MASQUERADE
-A POSTROUTING ! -o docker0 -s 172.198.0.0/16 -j MASQUERADE
-A POSTROUTING ! -o docker0 -s 172.199.0.0/16 -j MASQUERADE
-A POSTROUTING ! -o docker0 -s 172.200.0.0/16 -j MASQUERADE
-A POSTROUTING ! -o docker0 -s 172.201.0.0/16 -j MASQUERADE
-A POSTROUTING ! -o docker0 -s 172.202.0.0/16 -j MASQUERADE
-A POSTROUTING ! -o docker0 -s 172.203.0.0/16 -j MASQUERADE
-A POSTROUTING ! -o docker0 -s 172.204.0.0/16 -j MASQUERADE
-A POSTROUTING ! -o docker0 -s 172.205.0.0/16 -j MASQUERADE
-A POSTROUTING ! -o docker0 -s 172.206.0.0/16 -j MASQUERADE
-A POSTROUTING ! -o docker0 -s 172.207.0.0/16 -j MASQUERADE
-A POSTROUTING ! -o docker0 -s 172.208.0.0/16 -j MASQUERADE
-A POSTROUTING ! -o docker0 -s 172.209.0.0/16 -j MASQUERADE
-A POSTROUTING ! -o docker0 -s 172.210.0.0/16 -j MASQUERADE
-A POSTROUTING ! -o docker0 -s 172.211.0.0/16 -j MASQUERADE
-A POSTROUTING ! -o docker0 -s 172.212.0.0/16 -j MASQUERADE
-A POSTROUTING ! -o docker0 -s 172.213.0.0/16 -j MASQUERADE
-A POSTROUTING ! -o docker0 -s 172.214.0.0/16 -j MASQUERADE
-A POSTROUTING ! -o docker0 -s 172.215.0.0/16 -j MASQUERADE
-A POSTROUTING ! -o docker0 -s 172.216.0.0/16 -j MASQUERADE
-A POSTROUTING ! -o docker0 -s 172.217.0.0/16 -j MASQUERADE
-A POSTROUTING ! -o docker0 -s 172.218.0.0/16 -j MASQUERADE
-A POSTROUTING ! -o docker0 -s 172.219.0.0/16 -j MASQUERADE
-A POSTROUTING ! -o docker0 -s 172.220.0.0/16 -j MASQUERADE
-A POSTROUTING ! -o docker0 -s 172.221.0.0/16 -j MASQUERADE
-A POSTROUTING ! -o docker0 -s 172.222.0.0/16 -j MASQUERADE
-A POSTROUTING ! -o docker0 -s 172.223.0.0/16 -j MASQUERADE
-A POSTROUTING ! -o docker0 -s 172.224.0.0/16 -j MASQUERADE
-A POSTROUTING ! -o docker0 -s 172.225.0.0/16 -j MASQUERADE
-A POSTROUTING ! -o docker0 -s 172.226.0.0/16 -j MASQUERADE
-A POSTROUTING ! -o docker0 -s 172.227.0.0/16 -j MASQUERADE
-A POSTROUTING ! -o docker0 -s 172.228.0.0/16 -j MASQUERADE
-A POSTROUTING ! -o docker0 -s 172.229.0.0/16 -j MASQUERADE
-A POSTROUTING ! -o docker0 -s 172.230.0.0/16 -j MASQUERADE
-A POSTROUTING ! -o docker0 -s 172.231.0.0/16 -j MASQUERADE
-A POSTROUTING ! -o docker0 -s 172.232.0.0/16 -j MASQUERADE
-A POSTROUTING ! -o docker0 -s 172.233.0.0/16 -j MASQUERADE
-A POSTROUTING ! -o docker0 -s 172.234.0.0/16 -j MASQUERADE
-A POSTROUTING ! -o docker0 -s 172.235.0.0/16 -j MASQUERADE
-A POSTROUTING ! -o docker0 -s 172.236.0.0/16 -j MASQUERADE
-A POSTROUTING ! -o docker0 -s 172.237.0.0/16 -j MASQUERADE
-A POSTROUTING ! -o docker0 -s 172.238.0.0/16 -j MASQUERADE
-A POSTROUTING ! -o docker0 -s 172.239.0.0/16 -j MASQUERADE
-A POSTROUTING ! -o docker0 -s 172.240.0.0/16 -j MASQUERADE
-A POSTROUTING ! -o docker0 -s 172.241.0.0/16 -j MASQUERADE
-A POSTROUTING ! -o docker0 -s 172.242.0.0/16 -j MASQUERADE
-A POSTROUTING ! -o docker0 -s 172.243.0.0/16 -j MASQUERADE
-A POSTROUTING ! -o docker0 -s 172.244.0.0/16 -j MASQUERADE
-A POSTROUTING ! -o docker0 -s 172.245.0.0/16 -j MASQUERADE
-A POSTROUTING ! -o docker0 -s 172.246.0.0/16 -j MASQUERADE
-A POSTROUTING ! -o docker0 -s 172.247.0.0/16 -j MASQUERADE
-A POSTROUTING ! -o docker0 -s 172.248.0.0/16 -j MASQUERADE
-A POSTROUTING ! -o docker0 -s 172.249.0.0/16 -j MASQUERADE
-A POSTROUTING ! -o docker0 -s 172.250.0.0/16 -j MASQUERADE
-A POSTROUTING ! -o docker0 -s 172.251.0.0/16 -j MASQUERADE
-A POSTROUTING ! -o docker0 -s 172.252.0.0/16 -j MASQUERADE
-A POSTROUTING ! -o docker0 -s 172.253.0.0/16 -j MASQUERADE
-A POSTROUTING ! -o docker0 -s 172.254.0.0/16 -j MASQUERADE
-A POSTROUTING ! -o docker0 -s 172.255.0.0/16 -j MASQUERADE
COMMIT
Mit einem anschließenden Neustart der Firewall, werden die Einstellungen übernommen.
/etc/init.d/ufw restart
Docker Firewall
Docker nimmt bei der Konfiguration von Containern selbstständig Änderungen an der Firewall vor. So werden Ports direkt nach Außen sichtbar gemacht. Dies verhindert man, indem in die Datei /etc/docker/daemon.json folgendes einträgt (ggf. muss die Datei erstellt werden).
{ "iptables": false }
Docker anschließend neu starten.
/etc/init.d/docker restart
Docker Proxy Container
Der Proxy Container erhält als Einziger die Erlaubnis von Außerhalb erreichbar zu sein. In Docker Compose wird somit ein Container erstellt, der auf der Host-Netzwerk gesetzt wird.
version: '3.4'
services:
proxy:
image: nginx:latest
ports:
- 80:80
- 443:443
network_mode: "host"
Wichtig ist der Part "network_mode: host". Damit ist es dem Container möglich die Remote IP des Clients zu erhalten.
Docker Application Container
Bei alle weiteren Docker Containern wird lediglich der Port freigegeben.
version: '3.4'
services:
app:
image: [APP]
ports:
- 8080:80
Proxy VHost Konfiguration
Im Proxy wird nun der Zugriff auf den App-Container als VHost bereitgestellt.
Der erste server-Block definiert den unverschlüsselten Zugriff über Port 80 und leitet den Client auf https um.
Der upstream-Block definiert die Verbindung zu dem Application-Container.
Der zweite server-BLock definiert den verschlüsselten Zugriff über Port 443 und ein Proxy-Pass auf den Upstream.
server {
listen 80;
listen [::]:80;
server_name sub.domain.tld;
# Redirect any HTTP request to HTTPS
location / {
return 301 https://$server_name$request_uri;
}
error_log /pfad/zum/error.log;
access_log /pfad/zum/access.log;
}
upstream app {
server 0.0.0.0:8080;
}
server {
listen 443 ssl;
listen [::]:443 ssl http2;
server_name sub.domain.tld;
real_ip_header X-Forwarded-For;
set_real_ip_from 0.0.0.0/0;
ssl_certificate /pfad/zum/cert;
ssl_certificate_key /pfad/zum/key;
location / {
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Forwarded-Host $host;
proxy_set_header X-Forwarded-Server $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://app;
}
error_log /pfad/zum/error.log;
access_log /pfad/zum/access.log;
}
Docker ps
Die Container sehen gestartet wie folgt aus. Der Proxy-Container zeigt keine freigegebenen Ports an.
root:/root# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
[ID] nginx:latest "nginx -g 'daemon of..." 2 hours ago Up 2 hours proxy
[ID] nextcloud "/entrypoint.sh apac..." 5 hours ago Up 5 hours 0.0.0.0:8080->80/tcp nc_app
No Comments