DOSBox Netzwerkzugriff

  • Hallo,

    für Johannes und Konstantin and alle Anderen DOSBox-Nutzer hier eine kleine Anleitung, wie man selbige ins Netzwerk einbindet.

    Welche Netzwerk-Setup sind möglich?
    - DOSBox zu DOSBox Kommunikation via IPX über internen IPX-Server
    - DOSBox interne Modememulation für DOSBox-zu-DOSBox Kommunikation oder DOSBox-zu-Telnet (evtl. PPP/SLIP)
    - NE2000 passthrough in einigen CVS-Versionen

    Wie funktioniert Letzteres?
    - DOSBox klingt sich mit Hilfe eines speziellen (für Netzwerksniffer entwickelten) Treibers in einen Ethernet-Netzwerkadapter ein und kann so Ethernetpakete empfangen/senden
    - innerhalb der DOSBox kann ein NE2000 kompatibler ODI- (Netware Stack) oder PACKET-Treiber geladen werden, über den dann die Applikationen kommunizieren können

    :!: Das folgende Setup funktioniert i.d.R. leider nicht mit WLAN-Adptern.

    Was braucht man?
    - eine DOSBox-Version mit NE2000 pass through Patch, z.B. DOSBox MB6: https://web.archive.org/web/2012041116…2-installer.exe
    - Npcap Free Edit https://nmap.org/npcap/dist/npcap-0.9984.exe
    - einen NE2000.COM Packet-Treiber: http://www.georgpotthast.de/sioux/pktdrv/ne2000.zip
    - (optional) das mTCP-Paket zum Testen der Netzwerkverbindung: http://www.brutman.com/mTCP/mTCP_2015-07-05.zip

    Und dann?
    1. nPCAP installieren und dabei die Option "Install Npcap in WinPcap APT-compatible Mode" auswählen
    2. DOSBox-MB6 installieren
    3. Startmenü/Programme/DOSBox-MB6/Configuration/Edit Configuration aufrufen und im Abschnitt [ne2000] folgendes einstellen und Speichern:

    Code
    ne2000=true
    nicbase=300
    nicirq=3
    macaddr=AC:DE:48:88:99:AA
    realnic=list


    :!: will man mehrere DOSBox im sleben Netz betrieben, muss man die MAC-Adresse änder: z.B AC:DE:48:88:99:AB

    4. DOSBox starten und im Status-Fenster :!: die ID-Nr. des physischen Netzadapter finden, in Bild 2. ist es der Apapter 4 'Intel(R) 82579LM Gigabit..."
    5. in der DOSBox-Configuration den Eintrag "realnic=<Adpter-Nr>" entsprechend anpassen, z.B.:

    Code
    realnic=4

    6. den Packet Treiber (und optional mTCP) in ein Verzeichnis kopieren, das als DOSBox-LW C gemeountet wird, z.B. c:\temp\dos_c
    7. inder DOSBox-Configration im Abschnitt [size=10][autoexec] dann den Netzwerktreiber laden:

    Code
    mount c c:\temp\dos_c
    set PATH=c:\mtcp
    set MTCPCFG=c:\mtcp\mtcp.cfg
    ne2000 0x60 3
    dhcp

    8. Konfiguration speichern und DOSBox starten. Hat alles funktioniert, sollte die Ausgabe im DOSBox-Fenster wie in Bild 3. aussehen (mit anderen IP-Adressen natürlich)
    9. BBE wie unter DOS einrichten und dabei in 8. geliefert IP-Parameter verwenden

    Gruß Thomas[/size]

  • Danke Thomas!

    Leider bin ich bei "kein WLAN" raus - keiner meiner Rechner (außer der IGEL) hat noch Ethernet...

    Ich habe gestern Abend mal mit einem anderen Ansatz gespielt, wußte aber nicht wirklich was ich tue: die DosBox unterstützt ja IPX. Im Internet findet man einen IPX to Packet Driver shim (http://www.shikadi.net/network/) Damit wollte ich GEOS ein Packet Driver Interface basteln...

    Unter einem Android Port der DosBox auf meinem Chromebook ließ der Treiber sich nicht laden, er findet keine IPX-"Hardware", obwohl die IPX Emulation angehakt war. GEOS läuft aber in der DosBox.

    In der Linux Umgebung des Chromebooks ließ sich die DosBox aus den Ubuntu Quellen installieren und konfigurieren. Und der Treiber (ipxpkt.com) wurde tatsächlich geladen und gestartet! Einziges Problem - GEOS lässt sich nicht starten, trotz "primaryFSD = ntfat.geo", egal ob mit oder ohne Treiber....

    Hat jemand diesen Weg schon mal probiert und weiß mehr? Wißt Ihr wie man GEOS in der DosBox (nicht: dosemu) unter Linux zum Laufen kriegt? Gibt es da bekannte Probleme? (Der Splashscreen kommt, dann folgt KR-09...)

  • Ich habe gestern Abend mal mit einem anderen Ansatz gespielt, wußte aber nicht wirklich was ich tue: die DosBox unterstützt ja IPX. Im Internet findet man einen IPX to Packet Driver shim (http://www.shikadi.net/network/) Damit wollte ich GEOS ein Packet Driver Interface basteln...

    Über den internen IPX-Server kannst Du nur eine DOSBox-zu-DOSBox Kommunikation realisieren und mit dem IPX-Packet-Driver darüber auch wieder IP-Pakte tunneln. Bild 1. zeigt das Setup und Bild 2. einen kurzen Test mit netcat, bei dem ich am Client (rechts) "Hallo Server!" getippt habe, was vom Server (links) empfangen und angezeigt wird.

    Gruß Thomas

    PS: macht doch bitte zum Thema DOSBox unter Ubuntu ein eigenes Thema auf.

  • Um den Web-zugriff mit einem WLAN-Adapter zu reaalisieren, habe ich mir folgende Workaround überlegt:

    Wie funktionierts?
    - Npcap wird an einen virtuellen Ethernatdapter gebunden,
    - um die HTTP-Pakte von diesem an den WLAN-Adapter zu leiten - ohne komliziertes NAT/Routing - kommt ein Web-Proxy zum Einsatz

    Code
    (Internet)--<WLAN-Adpt.>--[Squid]--<VirtualBox Adapt.>--[Npcap]--<DOSBox NE2k-Adpt.>--[NE2KPKT][GEOS][Skipper]

    Was braucht man (zusätzlich)?
    - Oracle VirtualBox https://download.virtualbox.org/virtualbox/6.0…-133895-Win.exe
    - Squid für Windows http://packages.diladele.com/squid/3.5.28/squid.msi

    Und dann?
    - VirtualBox installieren
    - vBox starten und einen Host-Only Dapter konfigurien (Str+H) wie in Bild 1. gezeigt (DHCP ist nicht nötig)

    - danach sollte in Windows unter "Netzwerkverbindungen" ein neues Gerät "VirtualBox Host-Only Network"-Adpter aftauchen in aktiv sein

    - Squid installieren (funktieoniert mit Standardeinstellungen)
    - die DOSBox-Konfiguration anpassen:

    Code
    [ne2000]
    ne2000=true
    nicbase=300
    nicirq=3
    macaddr=AC:DE:48:88:99:AA
    realnic=Oracle

    - ggf. noch ETHERPKT.GEO nach GEOS\SYSTEM\SOCKET kopieren und Geos.ini einrichten:

    :!: die exakten Werte können zwischen den verschieden GEOS-Versionen leicht varieren, die IP-Adressen sind jedoch immer gleich in diesem Setup.

    - GEOS starten und nochmal die Proxy-Einstellung prüfen wie in Bild 3. gezeigt, denn ohne sie ist kein Internetzugriff möglich

    Gruß Thomas

  • Mal interessehalber: Warum braucht das überhaupt solche artistischen Verrenkungen (mit Treiber hacken usw.)?
    Ich hätt mir gedacht, daß die Dosbox einfach, wie alle anderen Programme auch, die vom Betriebssystem bereitgestellte Netzwerkverbindung nutzt und diese intern an die Programme weiterreicht. Aber so funktioniert es offenbar nicht ...

  • ...
    Ich hätt mir gedacht, daß die Dosbox einfach, wie alle anderen Programme auch, die vom Betriebssystem bereitgestellte Netzwerkverbindung nutzt und diese intern an die Programme weiterreicht. ...

    So hat es mal mit dosemu unter Linux funktioniert... :(

    Gruß Achim


    PC/GEOS unter Linux in der DOSEMU = UNSCHLAGBAR!

  • Ich hätt mir gedacht, daß die Dosbox einfach, wie alle anderen Programme auch, die vom Betriebssystem bereitgestellte Netzwerkverbindung nutzt und diese intern an die Programme weiterreicht. Aber so funktioniert es offenbar nicht ...

    DOSBox wurde eigentlich entwickelt, um alte DOS-Spiele auf aktuellen Rechnern spielbar zu machen. Die Unterstützung für Netzwerkkarten usw. weicht eigentlich vom ursprünglichen Ziel ab und sind eher 'hacks', die sich in speziellen Versionen der DOSBox finden.

  • Hi Thomas,
    I have found an article how to connect a DOS browser to internet using the modem emulation and PPP in DOSBox. This works only with Linux, as I understand. I find the article messy, and I can't pick the parts which will be useful to connect Geos to internet, everything seems to be mashed together. Here is the link to the wiki article: https://www.dosbox.com/wiki/PPP_configuration_on_linux_host
    Maybe we can work it out? I have plans to sit down and trying to configure it for Geos, but I lack the time for the moment.
    The network way you describe is a bit risky as it opens the computer to internet. I tried it when using the MegaBuild, and it worked great, except for the feeling of having a security hole. :(
    Hans

  • Dear Hans,

    The network way you describe is a bit risky as it opens the computer to internet.

    No the computer istn't "open to the internet". Sure you can use an ethernet adapter in promiscuous mode to do things your notwork admin and/or security policy will not allow, but it doesn't manipulate the packet filtering rules on the host. The second version that uses the virtual Ethernet adaptor and the Squid proxy is more secure than any other routing solution. On Windows also the DOSBox requires no super user permissions to work.

    But I agree with you that modem emulation is much cooler! And that's why I did it 8)

    Regards
    Thomas

  • für Linux-Nutzer und alle, denen die vorherigen Ansätze nicht verrückt genug waren (oder nicht helfen konnten) beschreibe ich hier die 3. Möglichkeit mit GEOS aus der DOSBox heraus ins Internet zu gelangen.

    Wie funktioniert's?
    Einige DOSBox-Versionen besitzen eine eingebaut Modememulation, welche eine Verbindung zu einer anderen DOSBox-Instanz oder einem Telnet-Deamon unter Linux/UN*X aufbauen kann. Diese Eigenschaft kann man, wie im DOSBox-Wiki beschrieben, benutzen, um eine Verbindung zu einer entfernten PPP-Gegenstellen herzustellen - ganz 'old school' :)

    Code
    (Internet)--<Linux Eth.>--[Linux]--<ppd>[socat]--[DOSBox[modem_emu][serial]--[GEOS][Skipper]

    Was braucht man?
    - DOSBox MB5/MB6
    - Eine Linux-Installation mit SystemD, SoCat und natürlich PPP (DOSBox MB5/6: sowie einer IP-Adresse mit 4x3 Ziffern, z.B. 192.168.178.188)
    - (optional) mTCP und LSPPP zum debuggen/testen

    Los gehts!
    - Serielle Schnittstelle und Modememulation in DOSBox.conf aktivieren (IPX und NE2000 deaktivieren):

    - DOSBox starten und die ggf. angeforderten Windows-Firewalländerungen akzeptieren, damit die DOSBox-Applikation von Linux aus erreichbar ist.
    - unter Linux (bei mir Debian 9.0) die benötigten Pakte installieren:

    Code
    apt install iptables ppp socat

    - einen Systemd-Service für die virtuelle serielle Schnittstelle anlegen unter: /etc/systemd/system/socat@.service

    - die zugehörige Konfigurationsdatei unter erstellen: /etc/default/socat-ttyN0.conf

    Code
    SOCAT_DEFAULTS=-d -d -s -lf /var/log/socat.log
    SOCAT_CONNECTION=TCP4-LISTEN:23 PTY,link=/dev/ttyN0,raw,echo=0,b57600

    - da das virtuelle serielle Interface /dev/ttyN0 nur verfügbar ist, wenn ein Client eine Verbindung aufgebaut hat, müssen wir die Geräte-Datei überwachen um bei Bedarf den ppp-Service starten zu können. Das erledigen wir in: /etc/systemd/system/pppd@.path

    Code
    [Unit]
    Description=Start PPP, if the given (SoCAT) TTY is present
    
    
    [Path]
    PathExists=/dev/%i
    
    
    [Install]
    WantedBy=multi-user.target

    - jetzt ist noch der eigentlichen PPP-Service zu erstellen in: /etc/systemd/system/pppd@.service

    Code
    [Unit]
    Description=Start PPPD for the given TTY
    
    
    [Service]
    Type=simple
    EnvironmentFile=/etc/default/pppd-%i.conf
    PIDFile=/var/run/pppd%i.pid
    ExecStartPre=/sbin/iptables -t nat -A POSTROUTING -s $PPPD_NETWORK -j MASQUERADE
    ExecStart=/usr/sbin/pppd /dev/%i $PPPD_CONNECTION $PPPD_DEFAULTS

    - auch dieser Service braucht eine Konfiguration unter: /etc/default/pppd-ttyN0.conf

    Code
    PPPD_DEFAULTS=nodetach local noauth
    PPPD_NETWORK=192.168.6.0/30
    PPPD_CONNECTION=57600 192.168.6.1:192.168.6.2

    - bevor wir die Services starten können, ist noch das Routing zu aktivieren im System zu aktivieren indem eine entsprechnde syctl-Konfiguration erstellt wird in: /etc/sysctl.d/98-ppd.conf

    Code
    net.ipv4.ip_forward=1


    - Services aktivieren & starten:

    Code
    sysctl -p /etc/sysctl.conf
    systemctl daemon-reload
    systemctl enable socat@ttyN0
    systemctl start socat@ttyN0
    systemctl enable pppd@ttyN0.path
    systemctl start pppd@ttyN0.path

    - jetzt kann man die DOSBox starten und (optional) mit LSPPP den Verbindungsaufbau testen:

    Code
    lsppp /d:<IP des Linux-Rechners> /B:57600 /V:60

    - In GEOS muss man bei der Rufnummer die Punkte der IP-Adresse des Linuxrechners weglassen, aus "192.168.178.141" wird somit "192168178141". Haben nicht alle Octets 3 Ziffern müssen Nullen eingefügtwerden z.B 10.52.236.17 -> 010052236017. Der DNS1-Eintrag muss ebenfalls an die des eigenen Routers angepaßt werden. Die anderen IP-Adressen könnt ihr 1:1 aus dem Screenshot übernehmen:

    - Unter Linux kann man mit folgendem Kommando die Aktivitäten Services kontrollieren:

    Code
    journalctl -fex

    Bei mir läuft jetzt eine kleine Linux-VM auf dem NAS und ich habe dieses Setup mit DOSBox unter Windows 7/10 sowie unter OS X getestet. Wenn GEOS in der DOSBox unter Linux läuft, sollte das ganz auch lokal (IP: 127.0.0.1) funktionieren. Ich hoffe, ich konnte einigen wieder Mut machen, an GEOS-kompatiblen Webseiten zu basten oder diese weiter zu pflegen. Und so fühlt es sich an Eure Seiten zu besuchen:

    Skipper Video

    Gruß
    Thomas

    2 Mal editiert, zuletzt von t.hass (13. Dezember 2019 um 22:54) aus folgendem Grund: Rechtschreibung und Quellenangaben

  • Amazing work! I can see how all this could work if I had the skills to do it. My PC/Geos set up is a bit different due to my disability. I use virtual box and Windows 98 as a visual way for me to install and add new Geos programs and add-ons. I have spent some time trying to get this to work I must be doing something wrong since I don't know to how edit the scripts that T.Hass has given me. I am really excited that Geos has found a way to the Internet! :D :)