これが私のシナリオです:
2 つの異なるネットワーク インターフェイスがあり、それぞれが独自の静的パブリック IP とプライベート IP (IPv4) を持ち、単一の仮想ネットワークに接続されています。この仮想ネットワークは単一の仮想マシンに接続されています。eth1
セカンダリ ネットワーク インターフェイスを独自のネットワーク名前空間に割り当て、その名前空間を使用して、MySQL データベースに情報を送信する Python アプリケーションを実行できるようにしたいと考えています。
基本的に、これらのアプリケーションを 2 つ、単一の VM で同時に実行したいのですが、別々の名前空間内で実行して、データベースが 2 つの異なるパブリック IP アドレスからクエリを受信できるようにしたいのです。名前空間を使用するのが、私が見つけた最良の選択肢でした。Python の部分は整理しましたが (netns 用の Python ラッパーを使用しています)、名前空間のネームサーバーと思われるものに苦労しています。
名前空間を作成するには、次のコマンドを実行します。
>> sudo ip netns add 001
>> sudo ip link set eth1 netns 001
>> sudo ip netns exec 001 ip link set eth1 up
次に ping を実行しようとするgoogle.com
と、次のエラーが表示されます。
ping: google.com: Temporary failure in name resolution
何かが足りないことはわかっていますし、ネットワークに関してはまったくの初心者であることも認めます。どんな助けでもいただければ幸いです。
ご参考までに: 私はこれらすべてにAzureクラウドサービスを使用しています。両方のネットワークインターフェイスのDNSサーバーは次のように設定されています。仮想ネットワークから継承IP 転送は無効になっています。仮想ネットワークのアドレス空間は、10.0.0.0/24
プライマリ インターフェイス ( eth0
) が を使用し10.0.0.4
、セカンダリ インターフェイス ( eth1
) が を使用します10.0.0.5
。
編集: ネットワーク ルーティングを理解するコツをつかんできたと思いますが、別のエラーが発生しています。
>> sudo ip netns add 001
>> sudo ip link set eth1 netns 001
>> sudo ip netns exec 001 ip link set eth1 up
>> sudo ip netns exec 001 ip addr add 10.0.0.5/24 dev eth1
のデフォルト ゲートウェイはeth0
なので、同じ仮想ネットワークを共有しているので、 のデフォルト ゲートウェイを同じアドレスに10.0.0.1
設定すると想定しました。eth1
>> sudo ip netns exec 001 ip route add default via 10.0.0.1 dev eth1
Error: Nexthop has invalid gateway.