別の名前空間でアクセス可能なmacvlanエイリアスを作成するには?

別の名前空間でアクセス可能なmacvlanエイリアスを作成するには?

私は持っています

  • eth0私のネイティブネットワークネームスペースのインターフェース名
  • 他のインターフェイス名はjail0代替ネットワーク名前空間(name name0)にあります。この名前空間は刑務所環境で使用されます。
  • jail0macvlan エイリアスeth0

メインシステムと刑務所の両方でネットワークに問題がないようです。

しかし、互いにpingできません。

なぜですか?私は彼らがアクセスできるようにしたいと思います。

他のネットワークインターフェイスの名前空間にはネットワークインターフェイスはありません。

答え1

許可された回答を完成させるには、ブリッジモードが最も簡単な方法ですが、通信には十分ではありません。

刑務所のインスタンスがホストにpingしようとすると、IPを取得するためにARP要求を送信します。ホストにmacvlanインスタンスがないため、パケットは物理リンクから直接送信されます(ブリッジモード定義による結果)。ホストはこのパケットを表示できないため、応答できません。 ping応答がありません。他の方法は同じです。ホストはすべてのパケットを物理物理LANに送信し、ホストのないパケットはコンテナのmacvlanインターフェイス(刑務所...)に移動します。

秘密は、ホストのブリッジモードで2番目のmacvlanインターフェイスを作成することです。これにより、ホストからのトラフィックがコンテナ/刑務所と統合されます。

host# ip link add link eth0 name hostmvl0 type macvlan mode bridge

次に、2つの方法があります。

  • 両方のインターフェイスで同じIP

    pro:eth0またはその設定は変更されないため、ホストのDHCPに問題はありません。
    欠点:やや複雑で、どこでも放送できません。

    ホストのIPを割り当てます(eth0と同じ)。デフォルトLANパスなしnoprefixroute)そうでない場合は、ホスト全体のルーティングを混同する可能性があります。

    host# ip addr add hostip/netmask dev hostmvl0 noprefixroute
    host# ip link set hostmvl0 up
    

    各コンテナ(刑務所...)に対して、物理インターフェイスの代わりにホストのmacvlanインターフェイスを介してパスを追加します。

    host# ip route add jailip/32 dev hostmvl0
    

    これで、すべてがうまく機能します(コンテナ/刑務所はeth0でルーティングされるため、ホストのブロードキャスト(ping、udp ...)を見ることができないことを除く)。

    注:新しいインターフェイスは任意のMACアドレスを取得します。これは作成時に追加で設定できますが、address xx:xx:xx:xx:xx:xx実際の(eth0)MACアドレスにすることはできません。刑務所でのみこのMACアドレスを表示できます。

  • ホストmacvlanインターフェイスのIP、物理インターフェイスにはIPがありません。

    利点:ネットワーク構成がより一般的で特別な場合はなく(たとえば、ホストのブロードキャストがどこでも有効である)、各コンテナに追加のルーティング設定がありません。
    欠点:eth0のネットワーク設定を削除し、hostmvl0に移行する必要があります。 MACアドレスは変更されるため(他のハッキングによってこれを防止しない限り)、DHCPクライアントが影響を受ける可能性があります。

    sebasthが提案したように、単にeth0からIPを削除し、新しい「デフォルト」ネットワークカードをhostmvl0として扱うことができます。もちろん、これを管理するサービスがある場合は、そこから変更してください。常に同じMACアドレスを設定するのが最善です。そうしないと、再起動するたびにネットワーク上のアドレスが変更されるため、ビジネス環境では望ましくありません。

    host# ip addr del hostip/netmask dev eth0 #careful, connectivity is lost
    host# ip link set hostmvl0 address xx:xx:xx:xx:xx:xx
    host# ip addr add hostip/netmask dev hostmvl0
    host# ip link set hostmvl0 up
    host# ip route add default via usualrouterip
    

    DHCPを使用する場合、MACが変更され、IPも変更されます。 eth0のMACを変更して、元のMACをhostmvl0に再利用できます。この作業が完了すると、一部のツールは時々スマートすぎる可能性があります。このArchlinux議論NetworkManagerが設定を復元しないようにする方法についての情報があります。

答え2

macvlanインターフェイスは、2つのmacvlanインスタンス間で転送されるデータの処理方法を変更するさまざまなモードで使用できます。デフォルトモードはvepa(Virtual Ethernet Port Aggregation)なので、設定がうまくいかない可能性があります。

構成できる一般的なパターンの簡単な説明:

  • vepaデータは物理インターフェイスを介して送信され、スイッチはmacvlanインスタンス間の通信をサポートする必要があります。ヘアピンパターンまたは、パケットを転送するIPルーターが必要です。

  • private外部スイッチがヘアピンモードをサポートしていても、macvlanインスタンス間の通信は許可されません。

  • bridgeインスタンス間の直接通信を許可し、macvlanインスタンス間のトラフィックは物理リンクを介して送信されません。

以下でmacvlanを使用したいかもしれません。ブリッジモード。 macvlanインスタンスとネットワークインタフェース自体を含むネームスペース間の通信には、同じ(メイン/ホスト)ネットワークネームスペースにmacvlanインスタンスを作成する必要があります。詳細と説明については、以下を参照してください。ABの答え

完全なドキュメント(およびその他のモード)については、以下を参照してください。man 8 ip-link

関連情報