atari-home.de - Foren
Hardware => Emulatoren => Thema gestartet von: HamSTer am Do 07.03.2013, 23:00:45
-
Kabellos mit Aranym
Der Wunsch mit Aranym im Netzwerk zu arbeiten ist sicherlich nichts neues. Über WLAN mit einem äteren Laptop wird die Sache umso interessanter.
Hardware ist ein ThinkPad T400 unter Lubuntu, was angenehm schnell ist.
Auf Atari-Seite wird benötigt: Ein MiNT mit zugehörigem AES. Zudem der bin-, etc-, und var-Ordner aus dem AFROS-Archiv
bin:
bash
ifconfig
route
nfethcfg.ttp
netsetup.sh
etc:
passwd
resolv.conf
services
var:
log:
run:
utmp
Die Ordner bekommen Symbolische Links auf Laufwerk U: durch Einträge in der mint.cnf
sln d:/bin u:/bin
sln d:/etc u:/etc
sln d:/var u:/var
Der Pfad der Ordner muss entsprechend der eigenen Bedürfnisse angepasst werden.
Der Ordner bin muss zusätzlich in die Env-Variable PATH eingebracht werden. Ebenfalls in mint.cnf
setenv PATH u:/bin
Nun wird sichergestellt, dass entsprechende Skript bei jedem Booten ausgeführt wird. Auch in mint.cnf
exec u:/bin/bash u:/bin/netsetup.sh
Hat man nur Mintnet-Tools, war es das hier schon in der mint.cnf
Für STiK / STiNG startet man zusätzlich gluestik und für Draconis zusätzlich das mgw.
Nun kopiert man sich noch nfeth.xif und inet4.xdd in den zugehörigen Mint-Ordner.
In der etc/resolv.conf ändert man nun mit einem Texteditor (zb qed) die Adresse des Nameserver. Bei mir ist das zb die 10.0.1.1, mein Router.
Das sollte es auf Atari-Seite schon gewesen sein. Nun folgt der Teil vom Host-system.
Jetzt begeben wir uns ins Console-Fenster auf dem Host.
Um für unseren Virtuellen Atari eine Netzwerkverbindung herstellen zu können, benötigen wir eine virtuelle Netzwerkbuchse sozusagen. Die erzeugen wir mittels:
sudo modprobe tun
sudo tunctl -t tap0 -u benutzer
benutzer mit Eurem Loginnamen austauschen.
In der /etc/network/interfaces müssen Eintragungen vorgenommen werden. Wir tippen ein
sudo nano /etc/network/interfaces
mit dem cursor ans ende scrollen und eingeben:
auto tap0
iface tap0 inet static
address 10.0.1.9
netmask 255.255.255.0
tunctl_user benutzer
uml_proxy_arp 10.0.1.10
uml_proxy_ether wlan0
Mit Strg-O und anschliessend Return wird die Datei gespeichert. Mit Strg-X wird der Editor verlassen.
Alle ip dürfen nicht benutzt sein. Die netmask ist absichtlich anders, da unsere virtuelle Netzwerkbuchse ein eigenes Netzwerk in unserem LAN darstellt. Die 10.0.1.9 ist später die Adresse des Gateway für unser Atari-System. Die 10.0.1.10 ist die IP vom Atari. wlan0 ist die Schnittstelle zur Aussenwelt. Wir wollen ja Kabellos. Auch hier benutzer mit Eurem Loginnamen tauschen.
Eigentlich funktioniert Proxy-Arp nicht Kabellos. Also benötigen wir ein zusätzliches Tool dafür
sudo apt-get install parprouted
installiert es.
Mit
parprouted wlan0 tap0
erzeugen wir eine Brücke zwischen wlan0 und tap0. Das normale Bridging kann das wohl nicht.
Wir haben es fast geschafft.
Das System muss noch unsere Pakete weiterleiten.
sudo nano /etc/sysctl.conf
Dort fügen wir ein
net.ipv4.ip_forward=1
Möglicherweise ist schon ein Zeile vorhanden die aber auskommentiert ist. Dann einfach das # entfernen.
Bald am Ziel.
sudo nano /etc/rc.local
Dort tragen wir ein vor dem exit
chmod go+rw /dev/net/tun
Einen haben wir noch
sudo chmod +s /usr/bin/aratapif
damit Aranym auf Netzwerk zugreifen kann.
Das war es auf der Console
Nun können wir die Aranym config in einem normalen Editor bearbeiten/ergänzen.
[ETH0]
Type = ptp
Tunnel = tap0
HostIP = 10.0.1.9
AtariIP = 10.0.1.10
Netmask = 255.255.255.252
MAC = 00:41:45:54:48:30
Das sollte es gewesen, sofern ich mich nicht vertippt habe ;)
Aranym Kabellos
-
Mein Setup wird vermutlich nicht kabellos sein, aber hier ist gut beschrieben, wie man die PC-Seite konfigurieren muss. Das werde ich bei mir mal ausprobieren.
Kann man dem Tunnelport auch direkt eine IP vom regulären Netzwerk zuweisen, statt ein Subnetz erzeugen zu müssen?
-
Kann ich leider nicht sagen. Aber entsprechend die netmask anpassen und ausprobieren. Kann ja nichts kaputt gehen. Sobald ich zu hause bin, test ich das mal und ergänze hier entsprechend.
-
Ok, scheinbar muss es ein subnetzwerk sein. Ich konnte keine Verbindung herstellen mit gleicher netmask.
-
Ich habe es jetzt auch hingekriegt und es geht noch einfacher. Kein Subnet und gleiche netmaske. Der Mintnet-Teil ist oben richtig beschrieben, aber es geht auch ohne das Script netsetup.sh.
Der Host-teil ist Kokolores, denn auf einem redhat-basierten System wie mein Fedora-17 gibt es kein
/etc/network/interfaces
und statt nano kann man ja jeden beliebigen editor benutzen.
Es muss auch garkeine bridge eingerichtet werden, das ist schon die höhere Weihe, sondern es geht auch mit dem einfachen proxy-arp, wie es im englischen Aranym-wiki beschrieben ist.
http://wiki.aranym.org/manual#networking (http://wiki.aranym.org/manual#networking)
edit: nach neueren Tests ist der folgende Schritt doch unverzichtbar!
Nun ein
parprouted wlan0 tap0
ausführen.
Ich bin dabei so vorgegangen. Natürlich als root im host:
modprobe tun
tunctl -t tap0 -u benutzer
tunctl ist Bestanteil von Fedora, lässt sich aber auch mit yum tunctl nachinstallieren. Man kann es auch als user mit sudo ausführen
sudo tunctl -t tap0 -u benutzer
Bei mir hat das aber nicht gereicht, denn aratapif muss immer als root ausgeführt werden, sonst kann es nicht auf tap0, bzw. tun zugreifen.
Und in meinem System ließ sich nicht aranym als user starten, so dass es mit root-Rechten aratapif ausführen kann. Auch ein
sudo chmod go+rw /dev/net/tun
hat daran nichts geändert.
Diese Tatsache ist auch diesem thread aufgefallen, hier unter Debian. Allerdings wird dort deshalb die Methode bridge empfohlen:
http://lists.debian.org/debian-68k/2008/06/msg00072.html (http://lists.debian.org/debian-68k/2008/06/msg00072.html)
edit: Für dieses Problem gibt Peter Stehling jetzt folgende Anweisung, die auch irgendwo in den Docs stehen soll:
> $ sudo chown root:root /usr/local/bin/aratapif
> $ sudo chmod u+s /usr/local/bin/aratapif
Danach soll es auch ohne sudo funktionieren. (Noch unbestätigt.)
Es geht aber wie gesagt auch ohne bridge, mit der Methode arp-proxy.
Mann muss wissen, dass in /usr/bin oder in /bin, oder in /usr/local/bin die Dateien
aranym
aranym-jit
aratapif
vorhanden sein müssen. Sie werden unter fedora sogar durch ein rpm aus einem extra Repository angelegt. Sie lassen sich aber natürlich auch händig nach /usr/bin kopieren.
Ich starte aranym-jit immer als user aus einem speziell Aranym vorbehaltenen Ordner im /home. Wenn ich das Netzwerk aktivieren will, gelang mir das bisher nur, indem ich aranym mit sudo startete. Dazu muss man vorher sudo natürlich beibringen, dass es das auch darf. Wie das geht, liest man am besten in einschlägigen howtos zu sudo nach.
Also läuft das bei mir so
>cd /home/user/Aranym
>sudo aranym-jit -c config
config muss sich dazu natürlich wie üblich im Ordner Aranym befinden, indem auch der ./system und die images bzw. mein Host-LW ./drive_C sich befindet.
Nun muss man das Netzwerk einrichten:
Bei mir ist der Host ein notebook und daher via wlan0 mit einem Router verbunden.
router 192.168.178.1
wlan0 192.168.178.37
Nun ist es wichtig, dass man dem tap0 genau die gleiche IP zuordnet, wie dem Hostnetzwerk-interface. Also in dem fall nicht eth0, sondern wlan0.
nun muss man noch die firewall instruieren und den proxy-arp einrichten
> echo 1 >/proc/sys/net/ipv4/ip_forward
> echo 1 >/proc/sys/net/ipv4/conf/tap0/proxy_arp
> arp -Ds 192.168.0.114 wlan0 pub
edit: Die folgenden Schritte lassen sich offenbar nur erfolgreich ausführen, wenn man einmal das Netzwerk clientseitig initialisiert hat. Siehe weiter unten. Danach sollte das dann klappen:
> route add -host 192.168.178.114 tap0
ein ifconfig -a sollte nun so aussehen
eth0: flags=4099<UP,BROADCAST,MULTICAST> mtu 1500
ether 00:1e:68:b1:a9:da txqueuelen 1000 (Ethernet)
RX packets 0 bytes 0 (0.0 B)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 0 bytes 0 (0.0 B)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536
inet 127.0.0.1 netmask 255.0.0.0
inet6 ::1 prefixlen 128 scopeid 0x10<host>
loop txqueuelen 0 (Lokale Schleife)
RX packets 729 bytes 41056 (40.0 KiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 729 bytes 41056 (40.0 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
tap0: flags=4099<UP,BROADCAST,MULTICAST> mtu 1500
inet 192.168.178.37 netmask 255.255.255.0 broadcast 192.168.178.255
inet6 fe80::a4e7:8ff:fe23:3b71 prefixlen 64 scopeid 0x20<link>
ether a6:e7:08:23:3b:71 txqueuelen 500 (Ethernet)
RX packets 5084 bytes 415507 (405.7 KiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 5850 bytes 6816911 (6.5 MiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
wlan0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.178.37 netmask 255.255.255.0 broadcast 192.168.178.255
inet6 fe80::222:69ff:fe08:7e2e prefixlen 64 scopeid 0x20<link>
ether 00:22:69:08:7e:2e txqueuelen 1000 (Ethernet)
RX packets 307353 bytes 268750736 (256.3 MiB)
RX errors 0 dropped 10253 overruns 0 frame 0
TX packets 203712 bytes 22248940 (21.2 MiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
Wie man sieht ist meine eth0 garnicht verbunden, keine Strippe dran, hingegen das wlan0 eine IP ausgibt, die gleiche wie tap0.
Ein route sieht folgendermaßen aus
[root@Acer etc]# route
Kernel IP Routentabelle
Ziel Router Genmask Flags Metric Ref Use Iface
default fritz.box 0.0.0.0 UG 0 0 0 wlan0
192.168.0.114 * 255.255.255.255 UH 0 0 0 tap0
192.168.178.0 * 255.255.255.0 U 0 0 0 wlan0
192.168.178.0 * 255.255.255.0 U 0 0 0 tap0
aranym * 255.255.255.255 UH 0 0 0 tap0
[root@Acer etc]#
Auf der Client-Seite, also in Aranym trägt man in die config Datei lediglich folgendes ein. Das sind die Parameter mit denen aratapif die Schnittstelle konfiguriert:
[ETH0]
Type = ptp
HostIP = 192.168.178.37
AtariIP = 192.168.178.114
Netmask = 255.255.255.0
Es ist also hier gar kein
tunnel=tap0
nötig. Und die Host-IP ist unsere Wlan0-IP, tap0 erhält keine extra IP.
Wenn man nun Aranym startet mit
sudo aranym-jit -c config
dann führt aranym automatisch aratapif aus und initialisiert tap0.
Auf der Konsole im Logfile sieht man nun keine Fehlermeldung bei tun mehr - das Zeichen, dass es klappt.
Nun muss man natürlich auf der Aranymseite das Netzwerk auch noch initialisieren und das geht ganz einfach mit
#ifup eth0
echo ifconfig -a eth0 addr 192.168.178.114 netmask 255.255.255.0 broadaddr 192.168.178.255 mtu 1500 up
ifconfig eth0 addr 192.168.178.114 netmask 255.255.255.0
route add default eth0 gw 192.168.178.37
was ich ganz einfach in ein script zusammengefasst, dass ich ifup.sh genannt habe. Es geht natürlich auch ohne script in einzelnen Komandos unter toswin2.
Nun sollte man 192.168.178.114 vom Host aus anpingen können. Allerdings kann man nicht zurück aus aranym ins Netzwerk oder nach Außen pingen. Das ist irgendwie ausmaskiert, bzw. hidden. Das irritiert zunächst, ist aber ohne Bedeutung, denn das serven aus netsurf oder highwire geht nun, ebenso ftp und andere Dienste. Ich habe noch der /etc/hosts 192.168.178.114 aranym
hinzugefügt und ebenso auf der Client-Seite eine /etc/hosts angelegt mit IP-Einträgen für gate, host und Aranym, sodass ich diese Aliasse direkt benutzen kann.
Die oben angegebenen Dateien resolv.conf etc. habe ich ebenfalls angelegt. Automatisiert habe ich das ganze allerdings noch nicht.
Wie man sieht geht also dieses Proxy-Arp Verfahren auch mit wlan0.
Zur Vertiefung der Materie gibt es verschiedene Mini-Howtos zum Proxy-arp im Netz
(http://forum.atari-home.de/index.php?action=dlattach;topic=10212.0;attach=4263)
-
ich habe nun spasseshalber doch nochmal mit gleicher subnetzmaske probiert. funktioniert.
-
also in der aranym config 255.255.255.252 eintragen
in der host interfaces für tap0 255.255.255.0 eintragen
das funktioniert.
-
Ich habe in beiden die gleiche netmask drin
255.255.255.0
funktioniert. Ich verstehs eh nicht, denn Deine Einstellung schränkt ja den Netzbereich unnötig ein.