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

Siirry navigaatioon Siirry hakuun
ei muokkausyhteenvetoa
Ei muokkausyhteenvetoa
 
Ei muokkausyhteenvetoa
Rivi 8: Rivi 8:


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 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 putkesta: kokeile sanoa
echo "1+2" | bc
<tt>echo "1+2" | bc</tt>


== Miten se saadaan verkkoon? ==
== Miten se saadaan verkkoon? ==
Rivi 14: Rivi 14:
Tiedostossa /etc/services on lueteltu palveluiden nimiä ja niitä vastaavia TCP- ja UDP-portteja. Sieltä pitäisi löytyä esimerkiksi seuraavia rivejä:
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
telnet        23/tcp
telnet        23/tcp
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:
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
remote-bc    2008/tcp                  # Remote calculator
</tt>


Seuraavaksi siirry hakemistoon /etc/xinetd.d/ ja tee sinne tiedosto nimeltä remote-bc 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!
# Talla voipi laskea 1+2 etana! Jee!
service remote-bc
service remote-bc
{
{
        socket_type    = stream
        socket_type    = stream
        wait            = no
        wait            = no
        user            = nobody
        user            = nobody
        server          = /usr/bin/bc
        server          = /usr/bin/bc
        server_args    = --interactive -q
        server_args    = --interactive -q
        disable        = no
        disable        = no
}
}


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.
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/>
/etc/rc.d/init.d/xinetd restart
<tt>/etc/rc.d/init.d/xinetd restart</tt><br/>
tai Debian-pohjaisissa järjestelmissä
tai Debian-pohjaisissa järjestelmissä<br/>
/etc/init.d/xinetd restart
<tt>/etc/init.d/xinetd restart</tt><br/>
ja testaa sanomalla
ja testaa sanomalla<br/>
telnet localhost 2008
<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 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 ipchains-muurille käsky<br/>
ipchains -A input -s 1.2.3.0/255.255.255.0 -d 0/0 2008 -p tcp -y -j ACCEPT
<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 man xinetd ja man xinetd.conf, joskin ohjeet ovat melko kryptisiä. Hyvää yleisesitystä aiheesta "Miten Internet toimii" ei tämän kirjoittaja tunne.
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 "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
(usleep 100 ; echo "1+2" ; usleep 100) | telnet localhost 2008 > tulos.txt
<tt>(usleep 100 ; echo "1+2" ; usleep 100) | telnet localhost 2008 > tulos.txt</tt>
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 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ä.
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ä.
Rekisteröitymätön käyttäjä

Navigointivalikko