Ero sivun ”Palvelinohjelma xinetd:n avulla” versioiden välillä

Siirry navigaatioon Siirry hakuun
p
ei muokkausyhteenvetoa
pEi muokkausyhteenvetoa
pEi muokkausyhteenvetoa
Rivi 1: Rivi 1:
= Tee oma verkkopalvelu Linuxissa =
Linuxissa on hyvin helppoa ohjata mikä tahansa normaali näppäimistöä lukeva ja näytölle tulostava ohjelma toimimaan verkkopalveluna. Tässä esimerkkinä käytetään bc-ohjelmaa, joka on yksinkertainen laskin.
Linuxissa on hyvin helppoa ohjata mikä tahansa normaali näppäimistöä lukeva ja näytölle tulostava ohjelma toimimaan verkkopalveluna. Tässä esimerkkinä käytetään bc-ohjelmaa, joka on yksinkertainen laskin.


Rivi 12: Rivi 10:
== Miten se saadaan verkkoon? ==
== Miten se saadaan verkkoon? ==


Tiedostossa <tt>/etc/services</tt> on lueteltu palveluiden nimiä ja niitä vastaavia TCP- ja UDP-portteja. Sieltä pitäisi löytyä esimerkiksi seuraavia rivejä:
[[Asetustiedosto]]ssa <tt>/etc/services</tt> on lueteltu palveluiden nimiä ja niitä vastaavia TCP- ja UDP-portteja. Sieltä pitäisi löytyä esimerkiksi seuraavia rivejä:


  ssh          22/tcp                    # SSH Remote Login Protocol
  ssh          22/tcp                    # SSH Remote Login Protocol
Rivi 20: Rivi 18:
Yllä oleva ei suinkaan tarkoita, että koneessasi olisi [[ssh]]-palvelin, [[telnet]]-palvelin ja http-palvelin. Palvelut vain on valmiiksi nimetty, niin että voit vaikkapa sanoa "telnet www.flug.fi http" eikä "telnet www.flug.fi 80". Lisätään ensiksi tänne oma palvelumme, vaikkapa porttinumeroon 2008, tekemällä mallin mukaan uusi rivi:
Yllä oleva ei suinkaan tarkoita, että koneessasi olisi [[ssh]]-palvelin, [[telnet]]-palvelin ja http-palvelin. Palvelut vain on valmiiksi nimetty, niin että voit vaikkapa sanoa "telnet www.flug.fi http" eikä "telnet www.flug.fi 80". Lisätään ensiksi tänne oma palvelumme, vaikkapa porttinumeroon 2008, tekemällä mallin mukaan uusi rivi:


<tt>
remote-bc    2008/tcp                  # Etäkäytettävä laskin
remote-bc    2008/tcp                  # Etäkäytettävä laskin
</tt>


Seuraavaksi siirry hakemistoon <tt>/etc/xinetd.d/</tt> ja tee sinne tiedosto nimeltä <tt>remote-bc</tt> ja tiedoston sisällöksi seuraavaa:
Seuraavaksi siirry hakemistoon <tt>/etc/xinetd.d/</tt> ja tee sinne tiedosto nimeltä <tt>remote-bc</tt> ja tiedoston sisällöksi seuraavaa:
Rivi 39: Rivi 35:
Yllä server- ja server_args -määrittelyt tarkoittavat, että ajetaan komento <tt>/usr/bin/bc --interactive -q</tt> . <tt>--interactive</tt> käskee bc-ohjelmaa olettamaan että syöte tulee "normaalisti", vaikka se todellisuudessa tuleekin verkosta; <tt>-q</tt> tarkoittaa "quiet" eli alkuteksti jätetään pois. user -määrittely kertoo minkä [[käyttäjä]]n oikeuksilla ohjelma ajetaan, ja turvallisuussyistä on tärkeää että annetaan mahdollisimman vähän oikeuksia omaava käyttäjä. socket_type -määrittelyn pitää olla yllä oleva stream, ja disable-määrittelyn tietenkin "no". wait kertoo että uuden yhteydenoton tullessa ei odoteta vanhan loppumista: siis useampi käyttäjä voi ajaa bc-ohjelmaa samaan aikaan.
Yllä server- ja server_args -määrittelyt tarkoittavat, että ajetaan komento <tt>/usr/bin/bc --interactive -q</tt> . <tt>--interactive</tt> käskee bc-ohjelmaa olettamaan että syöte tulee "normaalisti", vaikka se todellisuudessa tuleekin verkosta; <tt>-q</tt> tarkoittaa "quiet" eli alkuteksti jätetään pois. user -määrittely kertoo minkä [[käyttäjä]]n oikeuksilla ohjelma ajetaan, ja turvallisuussyistä on tärkeää että annetaan mahdollisimman vähän oikeuksia omaava käyttäjä. socket_type -määrittelyn pitää olla yllä oleva stream, ja disable-määrittelyn tietenkin "no". wait kertoo että uuden yhteydenoton tullessa ei odoteta vanhan loppumista: siis useampi käyttäjä voi ajaa bc-ohjelmaa samaan aikaan.


Nyt kaiken pitäisi olla valmista. Uudelleenkäynnistä xinetd sanomalla<br/>
Nyt kaiken pitäisi olla valmista. Uudelleenkäynnistä xinetd sanomalla
<tt>/etc/rc.d/init.d/xinetd restart</tt><br/>
/etc/rc.d/init.d/xinetd restart
tai Debian-pohjaisissa järjestelmissä<br/>
tai Debian-pohjaisissa järjestelmissä
<tt>/etc/init.d/xinetd restart</tt><br/>
/etc/init.d/xinetd restart
ja testaa sanomalla<br/>
ja testaa sanomalla
<tt>telnet localhost 2008</tt><br/>
telnet localhost 2008
Lopettaa voit nytkin Ctrl-D -näppäilyllä.
Lopettaa voit nytkin Ctrl-D -näppäilyllä.


== Palomuuriin reikä ==
== Palomuuriin reikä ==


Yllä otettiin telnet-yhteys localhostiin, ts. ei oikeasti minnekään vaan kierrätettiin verkkoyhteys omalle koneelle. Muualta voi yhteyden ottaa, jos palomuuri ei estä sitä. Palomuurin konfigurointia tämä ohje ei käsittele enempää, mutta esimerkiksi ipchains-muurille käsky<br/>
Yllä otettiin telnet-yhteys localhostiin, ts. ei oikeasti minnekään vaan kierrätettiin verkkoyhteys omalle koneelle. Muualta voi yhteyden ottaa, jos palomuuri ei estä sitä. Palomuurin konfigurointia tämä ohje ei käsittele enempää, mutta esimerkiksi 2.2-sarjan ja sitä vanhemmissa ytimissä käytössä olleelle ipchains-muurille käsky
<tt>ipchains -A input -s 1.2.3.0/255.255.255.0 -d 0/0 2008 -p tcp -y -j ACCEPT</tt><br/>
ipchains -A input -s 1.2.3.0/255.255.255.0 -d 0/0 2008 -p tcp -y -j ACCEPT
avaa aliverkkoon 1.2.3.* portin 2008.<br>
avaa aliverkkoon 1.2.3.* portin 2008.
Iptablesille ohjeet löytyvät artikkelista [[iptables]].
Uudemmalle iptablesille löytyy ohjeet artikkelista [[iptables]].


== Lisätietoa? ==
== Lisätietoa? ==
Rivi 61: Rivi 57:
== telnet-komento skripteissä ==
== telnet-komento skripteissä ==


Telnet-yhteyden muodostuminen voi kestää hetken. Siksi yleensä kannattaa sanoa esimerkiksi<br/>
Telnet-yhteyden muodostuminen voi kestää hetken. Siksi yleensä kannattaa sanoa esimerkiksi
<tt>(usleep 100 ; echo "1+2" ; usleep 100) | telnet localhost 2008 > tulos.txt</tt><br/>
([[sleep]] 0.0001 ; [[echo]] "1+2" ; sleep 0.0001) | telnet localhost 2008 > tulos.txt
jolloin ensin odotetaan 100 millisekuntia, sitten lähetetään komento, ja sitten odotetaan toiset 100 millisekuntia jotta vastaus ehtii tulla.
jolloin ensin odotetaan 100 millisekuntia, sitten lähetetään komento, ja sitten odotetaan toiset 100 millisekuntia jotta vastaus ehtii tulla.


4 316

muokkausta

Navigointivalikko