Anforderungen von Container an einen anderen Container funktionieren nicht

451
Tijl Van den Brugghen

Ich habe einen dedizierten Server und LXD darauf installiert. Ich habe einen Container für jede Anwendung und einen Container als Proxy für die anderen Container erstellt. Wenn eine Anforderung eingeht (an die IP meines dedizierten Servers), wird sie an den Proxy-Container weitergeleitet und dann an die Anwendungscontainer weitergeleitet.

Dies sind die iptablesRegeln, die ich verwende, um die Ports 80und 443auf dem dedizierten Server an die Ports 80und 443an meinen Container (ip 10.1.232.241) weiterzuleiten :

iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j DNAT --to-destination 10.1.232.241:80 iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 443 -j DNAT --to-destination 10.1.232.241:443 

Dies funktioniert gut für alle Anfragen, die von außen kommen. Es funktioniert nicht für Anforderungen, die vom dedizierten Server an eine Site gerichtet sind, die auf den dedizierten Server verweist. Nehmen wir ein Beispiel: Ich habe eine Website, blog.kindlyfire.medie auf meinen dedizierten Server verweist. Das Laufen curl blog.kindlyfire.mefunktioniert auf meinem lokalen Rechner, funktioniert jedoch nicht, wenn es direkt auf dem Rechner ausgeführt wird (Hinweis: Es funktioniert auch nicht in einem der Container). Um dies zu umgehen, gehe ich auch in der Kette vor OUTPUT:

iptables -t nat -A OUTPUT -p tcp --dport 80 -j DNAT --to-destination 10.1.232.241:80 iptables -t nat -A OUTPUT -p tcp --dport 443 -j DNAT --to-destination 10.1.232.241:443 

Anforderungen von meinem dedizierten Server an die öffentliche IP-Adresse laufen jetzt einwandfrei. Aber sie laufen noch nicht aus meinen Behältern! Ich dachte, weil die Container die lxdbr0Schnittstelle benutzen, müsste ich das auch weiterleiten:

iptables -t nat -A PREROUTING -i lxdbr0 -p tcp --dport 443 -j DNAT --to-destination 10.1.232.241:443 iptables -t nat -A PREROUTING -i lxdbr0 -p tcp --dport 80 -j DNAT --to-destination 10.1.232.241:80 

Jetzt bekomme ich diese Ausgabe nicht mehr (Befehl läuft in einem meiner Container):

$ curl blog.kindlyfire.me curl: (7) Failed to connect to blog.kindlyfire.me port 80: Connection refused 

Stattdessen bekomme ich das:

$ curl blog.kindlyfire.me 

Und es sitzt einfach da ...

Ich habe keine Ahnung, was ich als nächstes versuchen soll. Kommen die Pakete nicht zurück? Ich würde gerne etwas Hilfe bekommen, weil ich am Anfang verloren war und jetzt total tot ist ...

0

0 Antworten auf die Frage