Comment faire un travail de Boto avec un port 443, Pré-routé vers un autre port?

Mon titre peut être mal formulé, mais je vais essayer de raconter à l'arrière-plan:

J'ai des copies Ubuntu Avec des grappes de conteneurs Docker, Tous les serveurs Web Hébergement

Pour calmer les pare-feu, nous voulons utiliser le port 443 au lieu du port 8000 (Où le service écoute les prises de circulation et des suites ouvertes aux conteneurs pertinents)

Pour ce faire, nous avons ajouté une règle:

sudo iptables -t nat -D PREROUTING -p tcp --dport 443 -j REDIRECT --to-port 8000

Cependant, des conteneurs sont utilisés boto Envoyer du contenu sur s3, C'est quelque chose comme:

from boto.s3.connection import S3Connection

s3_connection = S3Connection(
'AWS_KEY_ID',
'AWS_SECRET_KEY'
)
s3_bucket = s3_connection.get_bucket(
'AWS_BUCKET'
)

Avec le jeu de règles de routage présidentiel boto ne peut plus utiliser le port 443 Et retour avec:

Traceback (most recent call last):
File "<stdin>", line 2, in <module>
File "/usr/local/lib/python2.7/dist-packages/boto/s3/connection.py", line 496, in get_bucket
return self.head_bucket(bucket_name, headers=headers)
File "/usr/local/lib/python2.7/dist-packages/boto/s3/connection.py", line 543, in head_bucket
response.status, response.reason, body)
boto.exception.S3ResponseError: S3ResponseError: 405 Method Not Allowed

Sans règne boto fonctionne bien, mais nous ne pouvons pas utiliser le port 8000 Pour le service de fabrication ssl.

Comment nous devons configurer notre table PREROUTING et service pour effectuer les deux tâches?

Je ne suis pas un expert sur boto, iptables ou docker, Et il est intéressant de dire qu'il semble être un problème de conteneurs, et non avec l'hôte.
</module></stdin>
Invité:

Emilie

Confirmation de:

Votre règle DNAT Pas assez spécifique. Il est utilisé par K.

tout

Le trafic est redirigé via l'hôte sur le port 443, Indépendamment de son origine ou de son destination.

Pour résoudre ce problème, rendez-vous une règle plus spécifique, par exemple, indiquant qu'elle s'applique uniquement au trafic entrant du monde extérieur. Si ça arrive

eth0

interface alors vous devez ajouter

-i eth0

Pour gouverner:

sudo iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 443 -j REDIRECT --to-port 8000

Cela ne s'applique pas à la circulation dans une autre direction, par exemple, à "Entrant" interface.

docker0

et "sortant" interface

eth0

.

Pour répondre aux questions, connectez-vous ou registre