別の名前空間でアクセス可能な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が設定を復元しないようにする方法についての情報があります。

おすすめ記事