私はiptablesと様々なルールのすべてのニュアンスに慣れていません。学んでいますが、速度を上げる必要があるので、ここに質問します。
AWS EC2インスタンスのDocker内でWebLogicコンテナを実行しています。コンテナはを使用して実行されていますdocker run -d -p 8002:8002 weblogic
。このイメージは私が作ったものではないので、何かが残るはずです。ネットワークの制限により、WebLogicサーバーがポート8002を介してアクセスするように構築されているにもかかわらず、ポート443を介して外部からアクセスできる必要があります。
さまざまなiptablesルールを試しましたが、それらのどれも正常に渡すことができませんでした。ルールが8002 - > 443を渡すように設定されていても、コンテナは8002でアクセスでき続けます。
実行するRHEL 7.3
と、Dockerfileはファイアウォールではなくiptables用に構築されます。私がコントロールできないものがあるので、私が持っているものを持って働かなければなりません。
私が試したiptablesコマンドの1つは次のとおりです。
iptables -t nat -A OUTPUT -p tcp --dport 8002 -j DNAT --to-destination 127.0.0.1:443
注: 私はservice iptables save
。を使用してルールが存在することを確認できますiptables -S
。
編集:現在のiptablesルールは次のとおりです。
-P INPUT ACCEPT
-P FORWARD ACCEPT
-P OUTPUT ACCEPT
-N DOCKER
-N DOCKER-ISOLATION
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT
-A INPUT -j REJECT --reject-with icmp-host-prohibited
-A FORWARD -j DOCKER-ISOLATION
-A FORWARD -o docker0 -j DOCKER
-A FORWARD -o docker0 -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
-A FORWARD -i docker0 ! -o docker0 -j ACCEPT
-A FORWARD -i docker0 -o docker0 -j ACCEPT
-A FORWARD -j REJECT --reject-with icmp-host-prohibited
-A FORWARD -i eth0 -p tcp -m tcp --dport 443 -j ACCEPT
-A DOCKER -d 172.17.0.2/32 ! -i docker0 -o docker0 -p tcp -m tcp --dport 8002 -j ACCEPT
-A DOCKER-ISOLATION -j RETURN
答え1
あなたしてはいけないDocker
イメージを再構築せずに内部で実行されているコンテナのポートを変更します。EXPOSE
このレベルのコマンドDockerfile
はコンテナのポート露出を担当します。次のコマンドを使用して、公開されたコンテナポートを確認できます。
docker inspect <image-name>
ドキュメントに示すように、サーバーはweblogic
デフォルトで実行されます。TCP/8002
そのため、コンテナにアクセスできるようにしたいとし、443
次のように入力します。
docker run -d -p 443:8002 weblogic
NAT
単に-s TCP/443
(ホストレベル) - >(コンテナネームスペースレベル)ですTCP/8002
。iptables
そこでもこれを見ることができます。
iptables -t nat -L
次のように表示されます。
docker ps
次のテキストが表示されます。0.0.0.0:443->127.0.0.1:8002
次のステップ。iptables
を許可するには、ファイアウォールの(特定の)ルールを追加する必要がありますTCP/443
。
だから:
iptables -t filter -A INPUT -p tcp --dport 443 -j ACCEPT
これにより、トラフィックの到着を許可するようにシステムのファイアウォールを設定できますTCP/443
。
一つは抜けました。への接続を許可するには、EC2に関連付けられているセキュリティグループを設定する必要がありますTCP/443
。
このような展開は、本番準備が完了したとは見なされません。セキュリティと証明書の管理から自動サービスの再起動まで、多くを見逃しています。
引用: