Linux Slackware의 86Box에서 pcap 네트워킹을 활성화하는 방법은 무엇입니까?

Linux Slackware의 86Box에서 pcap 네트워킹을 활성화하는 방법은 무엇입니까?

Slackware 15.0 호스트에서 이전 UNIX SVR4 게스트를 성공적으로 실행했습니다.

이것은 유닉스 "vm"의 구성입니다.

    [General]
vid_renderer = qt_opengl3
confirm_save = 0
confirm_reset = 0
language = en-US
confirm_exit = 0
vid_resize = 1

[Machine]
machine = p5sp4
cpu_family = pentium_p5
cpu_speed = 66666666
cpu_multi = 1
cpu_use_dynarec = 1
time_sync = local
fpu_type = internal
mem_size = 16384

[Video]
gfxcard = vga

[Input devices]
mouse_type = ltserial

[Sound]
fm_driver = nuked
midi_device = system_midi
midi_in_device = midi_in

[Network]
net_01_link = 0
net_02_link = 0
net_03_link = 0
net_04_link = 0
net_01_net_type = pcap
net_01_host_device = br0
net_01_card = wd8003e

[Storage controllers]
hdc = internal
cassette_mode = load

[Ports (COM & LPT)]
lpt1_device = text_prt

[Hard disks]
hdd_01_parameters = 63, 16, 1013, 0, ide
hdd_01_fn = unix.img
hdd_01_speed = ramdisk
hdd_01_ide_channel = 0:0

[Floppy and CD-ROM drives]
fdd_01_type = 525_2hd
cdrom_01_parameters = 1, atapi
cdrom_01_ide_channel = 0:1

[Western Digital WD8003E #1]
mac = **:**:**
base = 0300
irq = 2
ram_addr = D8000

머신이 부팅되고 기존 WD 카드를 인식하며 내부에서 내부로(sic!) 핑을 보낼 수 있지만 호스트에서 게스트로 또는 그 반대로는 핑할 수 없습니다.

네트워크 상황이므로 인터페이스가 나타나지 않습니다.

sudo brctl show
bridge name bridge id       STP enabled interfaces
br0     ****************    yes     eth0

sudo ip link show

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast master br0 state UP mode DEFAULT group default qlen 1000
    link/ether ************ brd ff:ff:ff:ff:ff:ff
3: br0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP mode DEFAULT group default qlen 1000
    link/ether **:**:**:**:**:** brd ff:ff:ff:ff:ff:ff

바인딩을 해봤는데..

br0 (which is a bridge with eth0..) FAIL
eth0 FAIL
virbr0 (an adapter created by libvirt) FAIL

답변1

실제로 pcap은 Linux 호스트에서는 재앙인 것 같습니다. 안정적인 버전은 작동하지 않으며 클라이언트에서 먼저 ping을 실행하면 git 버전이 충돌합니다.

86Box[23929]: segfault at 3c8 ip 0000000000655468 sp 00007f18317fd940 error 4 in 86Box[426000+40e000]

Slirp 네트워크가 작동하는 것 같습니다. 따라서 ATM의 pcap 네트워크는 Linux 호스트에서 취약하다고 생각됩니다.

ps=기존 SVr4 시스템은 qemu에 의해 완벽하게 시뮬레이션되었습니다.

qemu-system-i386 -m 16 -hda unix.img -fda boot.img

하지만 qemu는 wd8003 isa 카드를 지원하지 않습니다.

편집: 해결 방법/솔루션을 찾았습니다. pcap이나 slirp 대신 vde를 사용하세요.

클릭 인터페이스가 필요합니다. 저는 개인적으로 이 스크립트를 사용합니다.

#!/bin/sh

# Exit at first error
set -e

# Run this as root
if [ $UID != "0" ]
then
echo "Run this script as root"
exit 1
fi

# Increment tap device number
TAP=`ip link show type tun|grep tap|awk '{print $2}'|cut -d : -f 1|cut -c 4|tail -1`
let "TAP=TAP+1"
TAPDEV=tap${TAP}

# Other vars
USER=yourname
BRIDGE=br0

# Create tap for user
ip tuntap add dev $TAPDEV mode tap user $USER
ip link set $TAPDEV up promisc on
ip link set $TAPDEV master $BRIDGE
echo "I have created $TAPDEV for user $USER, using bridge $BRIDGE"
echo "To remove it use command ip link delete $TAPDEV as root"

그런 다음 스위치를 ROOT로 생성합니다. (일반 사용자는 스위치를 생성할 수 있지만 86box 시스템을 시작하면 스위치에 연결되지 않습니다!)

sudo vde_switch --mode 666 --numports 8 --tap tap1 --mgmt /tmp/vde.manag --mgmtmode 666 -s /tmp/vde.switch --daemon

그런 다음 86Box를 시작합니다.

vde 스위치를 제어한 후 두 개의 포트를 보고해야 합니다(tap1 및 86box 프로그램).

vdeterm  /tmp/vde.manag 
VDE switch V.2.3.2
(C) Virtual Square Team (coord. R. Davoli) 2005,2006,2007 - GPLv2

vde[/tmp/vde.manag]: port/allprint 

Port 0001 untagged_vlan=0000 ACTIVE - Unnamed Allocatable
 Current User: NONE Access Control: (User: NONE - Group: NONE)
  -- endpoint ID 0007 module tuntap      : tap1
Port 0002 untagged_vlan=0000 ACTIVE - Unnamed Allocatable
 Current User: myname Access Control: (User: NONE - Group: NONE)
  -- endpoint ID 0008 module unix prog   : 86Box virtual card user=yourname PID=2886
Success

Tap1은 브리지의 IP 클래스로 구성되어야 합니다. 예를 들어 br0의 IP가 192.168.0.1/24인 경우 tap1의 IP는 192.168.0.*/24여야 하며 가상 머신에서도 마찬가지입니다(예:

br0 192.168.0.1
tap1 192.168.0.2
vm 192.168.0.3

드디어 결과가 나왔습니다!

Unix svr4 VM의 빠른 핑

ping 192.168.0.91
PING 192.168.0.91 (192.168.0.91) 56(84) bytes of data.
64 bytes from 192.168.0.91: icmp_seq=1 ttl=255 time=6.23 ms
64 bytes from 192.168.0.91: icmp_seq=2 ttl=255 time=4.86 ms
64 bytes from 192.168.0.91: icmp_seq=3 ttl=255 time=3.44 ms

slirp 및 기타 느린 솔루션을 사용하지 않고 내 컴퓨터의 이전 svr4 Unix에서 처음으로 텔넷을 보았습니다!

telnet 192.168.0.91
Trying 192.168.0.91...
Connected to 192.168.0.91.
Escape character is '^]'.
[SSL not available]


UNIX(r) System V Release 4.0 (unix01)

login: 

ftp, rlogin 등 모두 사용 가능합니다!

VDE 네트워킹은 4.0 86Box 이상에서만 사용할 수 있습니다.

이것은 이전 Unix svr4의 cfg입니다.

[General]
vid_renderer = qt_opengl3
confirm_save = 0
confirm_reset = 0
language = it-IT
confirm_exit = 0
vid_resize = 1

[Machine]
machine = cubx
cpu_family = c3_samuel
cpu_speed = 733333333
cpu_multi = 5,5
cpu_use_dynarec = 1
time_sync = local
fpu_type = internal
fpu_softfloat = 0
mem_size = 16384

[Video]
gfxcard = cl_gd5430_pci

[Input devices]
mouse_type = ltserial

[Sound]
fm_driver = nuked
midi_device = system_midi
midi_in_device = midi_in

[Storage controllers]
hdc = internal
cassette_mode = load

[Ports (COM & LPT)]
lpt1_device = text_prt

[Hard disks]
hdd_01_parameters = 63, 16, 1013, 0, ide
hdd_01_fn = unix.img
hdd_01_speed = ramdisk
hdd_01_ide_channel = 0:0

[Floppy and CD-ROM drives]
fdd_01_type = 525_2hd
cdrom_01_parameters = 1, atapi
cdrom_01_ide_channel = 0:1
fdd_01_image_history_01 = /home/user/sistemi operativi/storici/unix/AT&T Intel Unix/Disk 58 - Hardware Set - qt pc586 wd8003 pc1 - Disk 1 of 1.img
cdrom_01_type = 86BOX_CD-ROM_1.00

[Western Digital WD8013EBT #1]
base = 0280
irq = 9
ram_addr = D8000
ram_size = 16384
mac = ******

[Network]
net_01_card = wd8013ebt
net_01_link = 1
net_01_host_device = /tmp/vde.switch
net_01_net_type = vde

[Western Digital WD8013EBT]
base = 0280
irq = 9
ram_addr = D8000
ram_size = 16384
mac = 1f:6e:52

[Cirrus Logic GD5430 (PCI)]
memory = 2

관련 정보