Ero sivun ”Palvelinohjelma xinetd:n avulla” versioiden välillä
Siirry navigaatioon
Siirry hakuun
Palvelinohjelma xinetd:n avulla (muokkaa)
Versio 18. lokakuuta 2007 kello 20.08
, 18. lokakuuta 2007ei muokkausyhteenvetoa
pEi muokkausyhteenvetoa |
Pb (keskustelu | muokkaukset) pEi muokkausyhteenvetoa |
||
Rivi 1: | Rivi 1: | ||
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? == | ||
[[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: | ||
remote-bc 2008/tcp # Etäkäytettävä laskin | |||
remote-bc 2008/tcp # Etäkäytettävä laskin | |||
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 | Nyt kaiken pitäisi olla valmista. Uudelleenkäynnistä xinetd sanomalla | ||
/etc/rc.d/init.d/xinetd restart | |||
tai Debian-pohjaisissa järjestelmissä | tai Debian-pohjaisissa järjestelmissä | ||
/etc/init.d/xinetd restart | |||
ja testaa sanomalla | ja testaa sanomalla | ||
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 | 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 | ||
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. | avaa aliverkkoon 1.2.3.* portin 2008. | ||
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 | Telnet-yhteyden muodostuminen voi kestää hetken. Siksi yleensä kannattaa sanoa esimerkiksi | ||
([[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. | ||