이더넷과 에뮬레이터를 연결하기 위해 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 주소가 있는지 모르겠습니다 enp4s0. dhcpcd인터페이스에 대해 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에 대해 언급했습니다. 이들을 결합하는 방법을 잘 모르는 경우에는 한 가지 유형의 네트워크 도구 내에서 모든 설정을 유지하십시오.

"시스템에 어떤 네트워크 도구를 사용합니까?"라고 작성했어야 했습니다. 분명히 brctl을 사용하고 있습니다.

관련 정보