イーサネットとエミュレータを接続するためにTAPを設定するには?

イーサネットとエミュレータを接続するためにTAPを設定するには?

シミュレートされたイーサネットインターフェイスが私のLANに接続されている実際のイーサネットインターフェイスのように動作するようにエミュレータを設定したいと思います。この例では、エミュレータを実行するLinuxホストとしてアドレス192.168.120.6を使用し、エミュレータとして192.168.120.19を使用します。 (好奇心から離れて、エミュレータはQETHアダプタがレイヤ2モードで動作するHerculesなので、TAPインターフェイスを使用します。)実際の回線からのすべての着信パケットをエミュレータに送信し、エミュレータはAny送信されたパケットは有線で転送されます。また、エミュレータが実行されているホストコンピュータからエミュレータに接続できるようにしたいです。

これは、TAP デバイスとブリッジの操作のように見えます。したがって、永続TAPインターフェイスを作成し、tunctlそれを使用するようにエミュレータに指示しました。次に、を使用してブリッジを作成し、brctl addbr br0ここにTAPデバイスとイーサネットデバイスを追加すると、生活が良くなります。brctl addif br0 tap0brctl addif br0 enp4s0

唯一の問題があります。これにより、brctl addif br0 enp4s0ルーティングテーブルが混乱し、実際の回線で通信できなくなります。実際のインターフェイスとブリッジの両方にデフォルトパスとゲートウェイへのパスがあり、カーネルはフレームをLANに送信する場所を決定できなくなりました。

私はここでルートを探していません。私はレイヤ2ブリッジが欲しいので、シミュレートされたコンピュータは実際のコンピュータのように独自のARPingを実行できます。カーネルのルーティングテーブルは含めないでください。私はどこで間違っていますか?

編集する:ホストはPop!_OS 20.10(Ubuntu派生バージョン)を実行するSystem76 Oryx Proです。結局のところ、私は以前Raspbianとして知られているシステムを実行しているRaspberry Piでこれを行いたいと思います。私はこれらのシステムでネイティブネットワーク構成パッケージを使用していますが、必要に応じて他のパッケージをインストールして動作させることを望んでいます。しかし、すでに存在するパッケージを使用したいと思います。

編集2要求通り:

(2061) jmaynard@wakko:/etc$ systemctl status systemd-networkd
● systemd-networkd.service - Network Service
     Loaded: loaded (/lib/systemd/system/systemd-networkd.service; disabled; ve>
     Active: inactive (dead)
TriggeredBy: ● systemd-networkd.socket
       Docs: man:systemd-networkd.service(8)
(2062) jmaynard@wakko:/etc$ systemctl status NetworkManager
● NetworkManager.service - Network Manager
     Loaded: loaded (/lib/systemd/system/NetworkManager.service; enabled; vendo>
     Active: active (running) since Thu 2021-02-04 15:02:50 CST; 1h 14min ago
       Docs: man:NetworkManager(8)
   Main PID: 889 (NetworkManager)
      Tasks: 3 (limit: 38216)
     Memory: 15.7M
     CGroup: /system.slice/NetworkManager.service
             └─889 /usr/sbin/NetworkManager --no-daemon

Feb 04 15:02:54 wakko NetworkManager[889]: <info>  [1612472574.8311] dhcp6 (enp>
Feb 04 15:02:54 wakko NetworkManager[889]: <warn>  [1612472574.8312] device (en>
Feb 04 15:03:02 wakko NetworkManager[889]: <info>  [1612472582.6467] agent-mana>
Feb 04 15:03:34 wakko NetworkManager[889]: <info>  [1612472614.5986] policy: se>
Feb 04 15:03:47 wakko NetworkManager[889]: <info>  [1612472627.4148] policy: se>
Feb 04 15:13:53 wakko NetworkManager[889]: <info>  [1612473233.0786] policy: se>
Feb 04 15:15:20 wakko NetworkManager[889]: <info>  [1612473320.4621] policy: se>
Feb 04 15:16:02 wakko NetworkManager[889]: <info>  [1612473362.0738] policy: se>
Feb 04 15:54:40 wakko NetworkManager[889]: <info>  [1612475680.1599] agent-mana>
Feb 04 16:11:37 wakko NetworkManager[889]: <info>  [1612476697.9046] policy: se>
(2063) jmaynard@wakko:/etc$ nmcli
enp4s0: connected to Wired connection 1
        "Realtek RTL8111/8168/8411"
        ethernet (r8169), 80:FA:5B:66:A7:72, hw, mtu 1500
        ip4 default, ip6 default
        inet4 192.168.120.6/24
        inet4 192.168.120.132/24
        route4 192.168.120.0/24
        route4 0.0.0.0/0
        inet6 2001:48f8:7032:13a:7c00:8452:ce3f:9534/64
        inet6 2001:48f8:7032:13a:9a29:6d38:c636:307/64
        inet6 2001:48f8:7032:13a:ad68:dad3:227a:b804/64
        inet6 2001:48f8:7032:13a:3adb:958b:61fb:82db/64
        inet6 fe80::ea05:da80:dfa4:2978/64
        route6 2001:48f8:7032:13a::/64
        route6 ::/0
        route6 2001:48f8:7032:13a::/64
        route6 fe80::/64
        route6 fe80::/64
        route6 ::/0
        route6 ff00::/8

wlp3s0: unavailable
        "Intel 8265 / 8275"
        wifi (iwlwifi), 74:70:FD:F2:0C:B0, sw disabled, hw, mtu 1500

lo: unmanaged
        "lo"
        loopback (unknown), 00:00:00:00:00:00, sw, mtu 65536

DNS configuration:
        servers: 192.168.120.1
        interface: enp4s0

        servers: 2001:48f8:7032:13a:21b:78ff:fec3:851e
        domains: conmicro.com
        interface: enp4s0

Use "nmcli device show" to get complete information about known devices and
"nmcli connection show" to get an overview on active connection profiles.

Consult nmcli(1) and nmcli-examples(7) manual pages for complete usage details.
(2064) jmaynard@wakko:/etc$ 

なぜ追加のIPアドレスがあるのか​​わかりませんenp4s0dhcpcdインターフェイスの DHCP をオフにしたにもかかわらず、まだそのアドレスを取得しようとする必要性を感じます。これまで、それを取り除こうとするすべての試みに抵抗してきました。

答え1

まず、どのネットワーク管理者を使用するかを決定することが重要です。たとえば、Debian では systemd-networkd、ネットワーキング、NetworkManager を使用できます。これらのツールは通常相互に排他的ではありませんが、さまざまなツールを使用して複数のインターフェースを操作する場合は注意が必要であり、どのツールが特定のインターフェースを管理しているかを指定する必要があります。

NetworkManagerには、コマンドラインツールnmcliとnmtuiが付属しています。後者を使用すると、ユーザーフレンドリーな環境でインターフェイスを設定できます。

Herculesがどのように機能するかはわかりませんが、設定を試してみることができます。macvtap、仮想化環境が物理アダプタにアクセスできるようにします。この方法は、ホストとHercules間のリンクを提供しません。これを行うには、ホストとHerculesを接続する独立したローカルネットワークを作成できます。

macvatapの詳細については、以下で確認できます。レッドハットのウェブサイト

使用しているシステムや使用しているネットワーキングツールなど、より詳細な情報を共有してください。

編集:新しい情報があるので、システムはPopです! - systemd-networkd構成を使用してネットワーク設定を取得できるようです。文書。その考えが合うようです。私が見る唯一の問題は、systemd-networkdが配備されているシステムを使用するときにネットワーク上のbrctlなどのツールを選択することです。確実に両方のネットワークシステムを使用できますが、適切な注意を払わないと、構成の競合が発生する可能性があります。

編集2:brctlは、ネットワーキングと呼ばれる「以前のネットワーキングシステム」の一部です。デフォルトでは、Linuxでネットワーキングを設定できる複数のネットワーキングツールキットがあります。私はすでにネットワーキング、NetworkManager、およびsystemd-networkdについて述べました。これらを組み合わせる方法がわからない場合は、1種類のネットワークツール内ですべての設定を維持してください。

「システムにどのようなネットワークツールを使用しますか?」と書かなければなりませんでした。明らかにbrctlを使用しています。

関連情報