Samengevat is het volgende nodig. Ik zal de eerste drie in detail uitleggen.
Compileer de kernel met SLIP en TCP/IP
Bewerk een aantal bestanden in /etc
Installeer en configureer dip
Installeer pppd (optioneel, alleen voor PPP)
Je zult tevens aan een emulator binary moeten zien te komen die geschikt is voor je remote host en deze moeten installeren. SLiRP is beschikbaar vanaf Sunsite en andere prima Linux FTP sites. Alle relevante info over TIA is beschikbaar op TIA's homesite.
Dat was het! Laten we beginnen.
Wanneer je dit nog nooit hebt gedaan, zou je eerst de FAQ door moeten lezen, maar maak je geen zorgen, het is makkelijk. Als je dit wilt, zal ik je helpen als je me een e-mail stuurt.
Zoek na een `make config', naar "Network Devices". Antwoord hier uiteraard `y', en vervolgens `y' op SLIP, CSLIP, (of PPP) en TCP/IP en `n' op al het andere, tenzij je ethernetkaarten hebt of een ander protocol voor iets anders nodig hebt. Doe je dit niet, dan werkt het niet! Voltooi de compilatie en installeer de nieuwe kernel.
In deze bestanden zullen je routes naar je remote host worden ingesteld. De directory voor systeemconfiguraties is /etc. Vervang uiteraard alles tussen dubbele aanhalingstekens door de juiste waarden (maar neem hierbij niet de dubbele aanhalingstekens mee, ze staan daar als referentie). De drie te bewerken bestanden zijn:
/etc/hosts
#De volgende regel moet exact worden overgenomen. 127.0.0.1 localhost #Aan het einde van de volgende twee regels wordt de hostnaam herhaald. #Deze afkorting is een alias, en deze is nodig voor de eerste regel. #Als je bent aangesloten op een LAN, dan moet je je IP-adres vervangen # door de eerste hieronder. 192.0.2.1 "jehostnaam.domein.naam jehostnaam" "XXX.XXX.XX.XX" "remotehostnaam.domein.naam remotehostnaam" |
/etc/host.conf
order hosts, bind multi on |
/etc/resolv.conf
domain "jedomein.naam" #In de volgende regel wordt gewoonlijk hetzelfde remote IP-adres gebruikt # als in /etc/hosts nameserver "XXX.XXX.XX.XX" |
Plaats voor gebruik van een NNTPserver, deze regel in /etc/profile
export NNTPSERVER="remote.hosts.nntpservername" |
Je gebruikt DIP (Dialup Internet Protocol) om bij de remote host in te bellen, de emulator te starten en de regel om te zetten naar SLIP/PPP. Het is te vinden in de "N" set van Slackware, samen met nog een boel clients en utility's, waarvan je er wellicht ook nog een aantal wilt installeren =). Het is ook beschikbaar vanaf Sunsite in een individueel tar bestand.
Zodra je het hebt geïnstalleerd, heb je nog een dipscript nodig. Hier is een voorbeeld, vervang op de plaats van de dubbelde aanhalingstekens het van toepassing zijnde gegeven (maar laat de aanhalingstekens weg, die zijn bedoeld als referentie).
main: get $local "jehostnaam.domein.naam" get $remote "remotehostnaam.domein.naam" #Je poort port cua"?" #Gebruik 115200 voor 28.8 modems speed 57400 reset #maak geen gebruik van spaties in je AT opdrachtstring! init AT "opdrachtenreeks" wait OK 5 # Dit zorgt voor het bellen. Mocht het niet werken, speel dan wat met de # wait time (luisteren naar je modem). Mail me als het dan nog niet werkt. # Zie ook; de notitie onderaan het script re: error codes. dial: dial "phonenumber" print Dialing... if $errlvl != 0 goto error #Wellicht dat je de wait time moet aanpassen aan je modem wait BUSY 20 if $errlvl == 0 goto dial login: print Verbinding gemaakt. Inloggen... #Deze wait en send krijgt me voorbij mijn hosts Annex. Pas het voor je site aan! wait ==> 60 send 4\n wait ogin: 60 if $errlvl != 0 goto login_error1 send "LOGIN"\n wait assword: 60 if $errlvl != 0 goto login_error2 send "PASSWORD"\n loggedin: wait "SYSTEM PROMPT" 60 if $errlvl != 0 goto shell_error print Logged in! send "emulator startup command"\n wait "emulator startup response" 60 if $errlvl != 0 goto emu_error #De aanbevolen mtu instelling is 1500, maar dit is interactief sneller. #Ftp kan langzamer zijn, dus pas het naar eigen wens aan. get $mtu 296 default done: print VERBONDEN met $remote met adres $rmtip mode CSLIP goto exit error: print Inbelfout login_error1: print Geen Login login_error2: print Geen Password prompt shell_error: print Geen shellprompt emu_error: Er trad een probleem op bij het starten van de emulator exit: #Hiermee wordt gestopt wanneer de -v vlag wordt gebruikt, maar werkt wanneer #het normaal wordt uitgevoerd #(beeindigt dip achter een lokale prompt). \r |
Nieuwere versies van dip retourneren de modem statuscodes niet (BUSY, NO CONNECT, enz.), in plaats daarvan maken ze gebruik van nummers. Hier is een tabel:
0 = OK
1 = CONNECT
2 = ERROR
3 = BUSY
4 = NO CARRIER
Je belsectie komt er daarmee ongeveer zo uit te zien:
dial: dial "phonenumber" print Dialing... if $errlvl != 0 goto error wait 1 20 if $errlvl != 1 goto dial |
Met dank aan Lee Olds <lee@eskimo.com> hiervoor.
\n = newline, \r = carriage return. Wellicht dat je de een of ander (of beiden) op de van toepassing zijnde plaatsen nodig hebt. Experimenteer ermee als datgene dat wordt gegeven niet werkt.
Een woord over de vorm van wait en send. Hieronder wordt uitgelegd wat het script doet mocht dit niet duidelijk blijken uit het voorbeeld:
Het script wacht 60 seconden op de remote computer tot het 'ogin:' verzendt. Wanneer het dit krijgt, gaat het script verder. Als het dit niet krijgt, zal het verdergaan na de timeout van 60 seconden.
(Deze hele regel is optioneel.) Als het script verdergaat omdat het kreeg waarop het wachtte, dan wordt dit overgeslagen. Als het script verdergaat door een timeout, dan zal het gaan naar waar je het vertelt verder te gaan ('login_error1' in dit geval).
DIP zal 'LOGIN' en een newline sturen
Je kunt als volgt sleep statements opnemen als dat nodig is: "sleep 10" Het script zal hierdoor 10 seconden pauzeren.
Hernoem het bestand na bewerking in bijvoorbeeld remote.dip en plaats het in /root. Geef dan als root de opdracht 'dip remote'. Gebruik de eerste keer de -v vlag om fouten op te sporen. Met ('dip -v remote') zullen alle stappen worden getoond die dip neemt.
Dip zal alleen als root worden uitgevoerd, maar er is een manier om het via een gebruikersaccount uit te voeren. Vraag me erom als je deze info nodig hebt. Wellicht dat ik het later in dit bestand opneem als er voldoende interesse voor is.
Als dip meteen stopt, probeer het dan door de opmerkingen uit het script te verwijderen.
Het bovenstaande maakt dat je aan de slag kunt met CSLIP, wat meestal prima volstaat. Het is werkelijk eenvoudig werkend te krijgen, aangezien het protocol op het niveau van de kernel wordt ondersteund. Zorg dat het daarin is opgenomen en het werkt.
Een aantal van jullie zullen echter PPP willen, om redenen die alleen jullie aan kunnen geven. Ik ga je hier niet vertellen hoe je het instelt, daar is al een hele andere HOWTO over geschreven. Wat ik zal doen is je vertellen waar je aan moet denken als je PPP gaat gebruiken met een emulator.
Ten eerste wordt in de laatste versie van DIP aangegeven dat je het kunt gebruiken om PPP op te starten, en dat is ook zo, MAAR het start alleen de PPP-daemon, geen vlaggen, niets. Dus als je DIP wilt gebruiken om PPP op te starten, zorg er dan voor dat je alle opstartinfo in het bestand /etc/ppp/options plaatst, anders werkt het niet.
Nu we het toch over het options bestand hebben, één van de dingen die daarin moet staan ongeacht hoe je pppd opstart, is: '192.0.2.1:XXX.XXX.XX.XX'. Dit wil zeggen: 'lokaalIPadres:remoteIPadres'. Je moet het hierin plaatsen omdat pppd de niet ingevulde waarde niet zelf kan invullen wanneer je een verbinding maakt met een emulator.
Zorg dat je aan het laatste pppd package komt. Het schijnt dat er recent een paar versies waren waarmee wat problemen waren.
Als laatste, tenzij je een goede reden hebt om PPP te gebruiken, of gewoon wilt leren hoe het werkt, je hebt het niet echt nodig. Ik heb ze beiden geprobeerd, en merkte geen verschil in performance met de standaard set clients. Uiteraard kun jij andere ervaringen hebben. :)