Voorbereiden van je Linux machine

Samengevat is het volgende nodig. Ik zal de eerste drie in detail uitleggen.

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.

Compileer de kernel

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.

Bewerk een aantal bestanden in /etc

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:

DIP

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		

   

DIP notities

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 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:

wait ogin: 60

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.

if $errlvl != 0 goto login_error

(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).

send "LOGIN"\n

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.

PPP

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. :)