web-dev-qa-db-ja.com

AWS yumはプライベートサブネットからは機能しません(パブリックからは機能します)

プライベートサブネットとパブリックサブネットを持つVPCがあり、それぞれに同じように構築されたRHEL7サーバーが含まれています。 VPCが正しく設定されていると思います(以下を参照)。ただし、パブリックサーバーはyumを使用でき、プライベートサーバーは使用できません。プライベートのものはエラーを受け取ります...

$ yum search Apache
Failed to set locale, defaulting to C
Loaded plugins: Amazon-id, rhui-lb
Repo rhui-REGION-client-config-server-7 forced skip_if_unavailable=True due to: /etc/pki/rhui/cdn.redhat.com-chain.crt
Repo rhui-REGION-client-config-server-7 forced skip_if_unavailable=True due to: /etc/pki/rhui/product/rhui-client-config-server-7.crt
Repo rhui-REGION-client-config-server-7 forced skip_if_unavailable=True due to: /etc/pki/rhui/rhui-client-config-server-7.key
Repo rhui-REGION-rhel-server-releases forced skip_if_unavailable=True due to: /etc/pki/rhui/cdn.redhat.com-chain.crt
Repo rhui-REGION-rhel-server-releases forced skip_if_unavailable=True due to: /etc/pki/rhui/product/content-rhel7.crt
Repo rhui-REGION-rhel-server-releases forced skip_if_unavailable=True due to: /etc/pki/rhui/content-rhel7.key
Repo rhui-REGION-rhel-server-rh-common forced skip_if_unavailable=True due to: /etc/pki/rhui/cdn.redhat.com-chain.crt
Repo rhui-REGION-rhel-server-rh-common forced skip_if_unavailable=True due to: /etc/pki/rhui/product/content-rhel7.crt
Repo rhui-REGION-rhel-server-rh-common forced skip_if_unavailable=True due to: /etc/pki/rhui/content-rhel7.key
Could not contact CDS load balancer rhui2-cds01.us-east-1.aws.ce.redhat.com, trying others.

Could not contact any CDS load balancers: rhui2-cds01.us-east-1.aws.ce.redhat.com, rhui2-cds02.us-east-1.aws.ce.redhat.com. 

通信網

RHEL7 AMIを使用するAWS VPCを持っています。

  • 1つのVPC 10.0.0.0/16があります
  • 1つのパブリックサブネット10.0.0.0/24があります。
  • 1つのプライベートサブネット10.0.1.0/24があります。
  • インターネットゲートウェイがあります
  • 私はNATを持っています
  • メインのメインルートテーブルはNATをポイントしています

    Destination Target Status Propagated
    10.0.0.0/16 local Active No
    0.0.0.0/0 eni-xxxxxxxx / i-xxxxxxxx Active No
    
  • プライベートサブネットはメインルートテーブルに関連付けられています

  • 2番目の(メインではない)ルートテーブルはゲートウェイを指しています

    Destination Target Status Propagated 
    10.0.0.0/16 local Active No
    0.0.0.0/0 igw-xxxxxxxx Active No
    
  • パブリックサブネットはこのルートテーブルに関連付けられています

  • すべてのセキュリティグループはトラブルシューティングのために広く開かれています
  • NAT=転送を有効にします(場合によっては、なりすまし...以下を参照)

    sysctl -q -w net.ipv4.ip_forward=1 net.ipv4.conf.eth0.send_redirects=0
    
    PRIVATE_SUBNETS="10.0.1.0/24"
    for SUBNET in $PRIVATE_SUBNETS; do
        iptables -t nat -C POSTROUTING -o eth0 -s $SUBNET -j MASQUERADE 2> /dev/null || iptables -t nat -A POSTROUTING -o eth0 -s $SUBNET -j MASQUERADE
    done
    
  • パブリックサブネットとプライベートサブネットにサーバーがあります

  • どちらも同じRHEL7 AMIから構築されています。

テスト中

  • 私はこのすべての間に根です...
  • 設定を試してみましたsslverify=0 in /etc/yum.repos.d/redhat-rhui.repoおよび/etc/yum.repos.d/redhat-rhui-client-config.repoを実行してからyum clean all。問題は解決しませんでした。
  • プライベートサブネットとパブリックサブネットの両方のサーバーが8.8.8.8にpingできる
  • どちらのサーバーも、yumリポジトリーの名前を含め、名前をIPに解決できます。
  • プライベートサーバーとパブリックサーバーの両方が、次のRPMを表示して操作できるようです。

    $ rpm -Uvh ftp://ftp.pbone.net/mirror/ftp.sourceforge.net/pub/sourceforge/o/os/osolinux/update/RPMS.e/elinks-0.12-0.32.pre5mgc30.x86_64.rpm
    Retrieving ftp://ftp.pbone.net/mirror/ftp.sourceforge.net/pub/sourceforge/o/os/osolinux/update/RPMS.e/elinks-0.12-0.32.pre5mgc30.x86_64.rpm
    error: Failed dependencies:
        libgc.so.1()(64bit) is needed by elinks-0.12-0.32.pre5mgc30.x86_64
        libgpm.so.2()(64bit) is needed by elinks-0.12-0.32.pre5mgc30.x86_64
        libmozjs185.so.1.0()(64bit) is needed by elinks-0.12-0.32.pre5mgc30.x86_64
        libnss_compat_ossl.so.0()(64bit) is needed by elinks-0.12-0.32.pre5mgc30.x86_64
    

プライベートサーバーに新しいリポジトリをロードしようとすると、タイムアウトが発生します...

$ rpm -Uvh http://pkgs.repoforge.org/rpmforge-release/rpmforge-release-0.5.3-1.el7.rf.x86_64.rpm
Retrieving http://pkgs.repoforge.org/rpmforge-release/rpmforge-release-0.5.3-1.el7.rf.x86_64.rpm

curl: (7) Failed connect to pkgs.repoforge.org:80; Connection timed out
error: skipping http://pkgs.repoforge.org/rpmforge-release/rpmforge-release-0.5.3-1.el7.rf.x86_64.rpm - transfer failed
  • マスカレードをオンまたはオフにしても、違いはないようです。

===他の人の修正のためにここに投稿する===
こんにちは、マイケル。コメントありがとうございます。

私は実際にtracerouteを使用し、パケットが問題のプライベートサーバーからNAT)に到達していることを確認しました。転送されたパケットであるはずのサーバーからパケットが送信されることも確認しました。これで終わりです。

pingとインターネットのリモートrpmが機能しているように見えるので、リクエストがリポジトリによって拒否されているように見えますが、理由はわかりません。マスカレードのオンとオフで同じ結果が得られます。

NATサーバーはVPCの作成プロセス中に自動的に構築されました。セキュリティグループは[シナリオ2]ページを使用して作成されましたが、現在広く開かれています。

7
BurningKrome

質問で説明した状況と非常に似た状況で、proxy構成を/etc/yum.confに追加することで解決できました。

このような:

echo "proxy=http://my.proxy.internal:3128/" >> /etc/yum.conf
2
Sebastian Cruz

プライベートサブネットがインターネットに接続されていない場合は、インターネットにアクセスしてパッケージをインストールすることはできません。

パブリックサブネットでインスタンスを起動することもできます。必要なパッケージをインストールした後、そのカスタムイメージを作成するだけで、インターネットがあるかどうかに関係なく、任意のサブネットでインスタンスを起動するときに簡単に使用できます。アクセスかどうか。

1
Muhammad Hannan