Muokataan sivua Palvelinohjelma xinetd:n avulla
Siirry navigaatioon
Siirry hakuun
Kumoaminen voidaan suorittaa. Varmista alla olevasta vertailusta, että haluat saada aikaan tämän lopputuloksen, ja sen jälkeen julkaise alla näkyvät muutokset.
Nykyinen versio | Oma tekstisi | ||
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. | ||
== 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 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<br/> | ||
<tt>echo "1+2" | bc</tt> | |||
== Miten se saadaan verkkoon? == | == Miten se saadaan verkkoon? == | ||
Tiedostossa /etc/services 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 16: | Rivi 18: | ||
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: | |||
<tt> | |||
remote-bc 2008/tcp # Remote calculator | |||
</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: | ||
# | # Talla voipi laskea 1+2 etana! Jee! | ||
service remote-bc | service remote-bc | ||
{ | { | ||
Rivi 33: | Rivi 37: | ||
} | } | ||
Yllä server- ja server_args -määrittelyt tarkoittavat, että ajetaan komento | 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ä 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<br/> | ||
<tt>/etc/rc.d/init.d/xinetd restart</tt><br/> | |||
tai Debian-pohjaisissa järjestelmissä | tai Debian-pohjaisissa järjestelmissä<br/> | ||
<tt>/etc/init.d/xinetd restart</tt><br/> | |||
ja testaa sanomalla | ja testaa sanomalla<br/> | ||
<tt>telnet localhost 2008</tt><br/> | |||
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 | 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/> | ||
<tt>ipchains -A input -s 1.2.3.0/255.255.255.0 -d 0/0 2008 -p tcp -y -j ACCEPT</tt><br/> | |||
avaa aliverkkoon 1.2.3.* portin 2008. | avaa aliverkkoon 1.2.3.* portin 2008. | ||
== 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<br/> | ||
<tt>(usleep 100 ; echo "1+2" ; usleep 100) | telnet localhost 2008 > tulos.txt</tt><br/> | |||
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ää | Tällä tavalla voi tarvittaessa vaikkapa selvittää levytilan käytön tms. 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 testiserverillä. | ||
[[Luokka:Verkko]] | [[Luokka:Verkko]] | ||