CentOS Dockerコンテナ内の仮想マシンからホストポートにトラフィックをリダイレクトする方法は?

CentOS Dockerコンテナ内の仮想マシンからホストポートにトラフィックをリダイレクトする方法は?

このシナリオがあります。

  • ufwがインストールされているDebianを実行しているホスト。
  • CentOS Dockerコンテナには、特定のIPで実行される仮想マシンがあります。
  • VMはコンテナ呼び出しを処理し、https://app.domainエントリをhostsアプリケーションIP)。

localhost:7000私のホストマシンを呼び出し、コンテナの仮想マシンアプリケーションを使用したいと思います。

コンテナの実行時にコンテナのポートを公開しました-p 7000:7000

iptablesコンテナのトラフィックを読み、リダイレクトしようとしましたが、運がありませんでした!

それでは...誰でもiptables私が実行する必要があるコマンドの例を作成できますか?


編集する:次のようなこれ私は試した:

IP_CONTAINER=xxx.xxx.xxx.xxx
APP_IP=xxx.xxx.xxx.xxx

echo 1 > /proc/sys/net/ipv4/ip_forward
iptables -t nat -A PREROUTING --protocol tcp --destination $APP_IP --dport 80 --source $IP_CONTAINER --jump DNAT --to-destination $APP_IP
iptables -t nat -A POSTROUTING -j MASQUERADE

しかし、まだ成功していません!

ベストアンサー1

ホストポートからCentOS Dockerコンテナ内の仮想マシンで実行されているアプリケーションにトラフィックをリダイレクトするには、Dockerコンテナネットワークを設定し、iptablesルールを使用してトラフィックを転送する必要があります。

取ることができるアクションの例は次のとおりです。

  1. Dockerネットワークを作成し、ここにCentOSコンテナを接続します。

    docker network create mynetwork
    docker run --network=mynetwork --name=centos_container centos
    
  2. CentOSコンテナ内でDockerネットワークと同じネットワークの静的IPアドレスを使用するようにVMを設定します。たとえば、DockerネットワークIP範囲の場合は、それを172.18.0.0/16使用するように仮想マシンを設定できます172.18.0.2

  3. CentOSコンテナ内の仮想マシンのポートをDockerネットワークに公開します。たとえば、アプリケーションが仮想マシン内のポート80で実行されている場合は、docker runコマンドを使用して-pそのポートをDockerネットワークにマッピングすることを選択できます。

    docker run --network=mynetwork --name=centos_container -p 7000:80 centos
    

    これにより、コンテナポート80がホストポート7000にマッピングされます。

  4. HOSTシステムでIP転送を有効にします。

    echo 1 > /proc/sys/net/ipv4/ip_forward
    
  5. iptablesホストポート7000からDockerコンテナ内の仮想マシンにトラフィックを転送するルールを設定します。たとえば、コンテナ内の仮想マシンのIPアドレスがある場合は、172.18.0.2次のiptables規則を使用できます。

    iptables -t nat -A PREROUTING -p tcp --dport 7000 -j DNAT --to-destination 172.18.0.2:80
    iptables -t nat -A POSTROUTING -j MASQUERADE
    

    これらのルールは、ホストのポート 7000 からの着信トラフィックをコンテナ内の仮想マシンのポート 80 に転送し、送信元 IP アドレスをホストの IP アドレスに書き換えます。

これらの手順を実行したら、ホストシステムのhttp://localhost:7000にアクセスして、CentOSコンテナ内のVMで実行されているアプリケーションにアクセスできるようにする必要があります。

おすすめ記事