Ero sivun ”Palvelinohjelma xinetd:n avulla” versioiden välillä
Siirry navigaatioon
Siirry hakuun
Palvelinohjelma xinetd:n avulla (muokkaa)
Versio 12. maaliskuuta 2008 kello 14.43
, 12. maaliskuuta 2008→Katso myös: -> inetd, xinetd
pEi muokkausyhteenvetoa |
LP (keskustelu | muokkaukset) (→Katso myös: -> inetd, xinetd) |
||
(6 välissä olevaa versiota 3 käyttäjän tekeminä ei näytetä) | |||
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. | ||
== bc-ohjelma == | == bc-ohjelma == | ||
bc on yksinkertainen laskin. Voit käynnistää sen ilman optioita pelkällä bc-komennolla. Kirjoittamalla 1+2 ja painamalla enter pitäisi tulla tulokseksi 3. Lopettaa voit painamalla Ctrl-D. | [[bc]] on yksinkertainen laskin. Voit käynnistää sen ilman optioita pelkällä bc-komennolla. Kirjoittamalla 1+2 ja painamalla enter pitäisi tulla tulokseksi 3. Lopettaa voit painamalla Ctrl-D. | ||
bc on siis samanlainen ohjelma kuin konsoliohjelmat yleensäkin: se lukee syötettä rivi kerrallaan, vastaa komentoihin ja lopettaa kun syöte loppuu. Syötteen voit ottaa esimerkiksi [[Komentorivin perusteet|putkesta]]: kokeile sanoa | bc on siis samanlainen ohjelma kuin konsoliohjelmat yleensäkin: se lukee syötettä rivi kerrallaan, vastaa komentoihin ja lopettaa kun syöte loppuu. Syötteen voit ottaa esimerkiksi [[Komentorivin perusteet|putkesta]]: kokeile sanoa | ||
echo "1+2" | bc | |||
== 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 18: | Rivi 16: | ||
http 80/tcp www www-http # WorldWideWeb HTTP | http 80/tcp www www-http # WorldWideWeb HTTP | ||
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 # | |||
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: | ||
# | # Tälla voipi laskea 1+2 etana! Jee! | ||
service remote-bc | service remote-bc | ||
{ | { | ||
Rivi 37: | Rivi 33: | ||
} | } | ||
Yllä server- ja server_args -määrittelyt tarkoittavat, että ajetaan komento /usr/bin/bc --interactive -q . --interactive käskee bc-ohjelmaa olettamaan että syöte tulee "normaalisti", vaikka se todellisuudessa tuleekin verkosta; -q tarkoittaa "quiet" eli alkuteksti jätetään pois. user -määrittely kertoo minkä | 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? == | ||
Verkkopalvelujen virittäminen voi toki olla paljon monimutkaisempaakin, tässä esitettiin vain yksinkertainen perustapaus. Lisätietoa saat komennoilla | Verkkopalvelujen virittäminen voi toki olla paljon monimutkaisempaakin, tässä esitettiin vain yksinkertainen perustapaus. Lisätietoa saat komennoilla | ||
<tt>man xinetd</tt> ja <tt>man xinetd.conf</tt>, joskin ohjeet ovat melko kryptisiä. Hyvää yleisesitystä aiheesta | <tt>man xinetd</tt> ja <tt>man xinetd.conf</tt>, joskin ohjeet ovat melko kryptisiä. Hyvää yleisesitystä aiheesta ''Miten Internet toimii'' ei tämän kirjoittaja tunne. | ||
== 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. | ||
Tällä tavalla voi tarvittaessa vaikkapa selvittää levytilan käytön | Tällä tavalla voi tarvittaessa vaikkapa selvittää esimerkiksi levytilan käytön aina halutessaan, eikä tarvitse kirjautua koneelle ssh-yhteydellä, kunhan vain tekee sopivan ohjelman, joka tulostaa halutut tiedot. Myös omia verkko-ohjelmia on helppo kokeilla tällaisella kokeilupalvelimella. | ||
==Katso myös== | |||
* [[xinetd]] | |||
* [[inetd]] | |||
[[Luokka:Verkko]] | [[Luokka:Verkko]] | ||
[[Luokka:Ohjeet]] | |||
[[Luokka:Palvelimet]] |