Rekisteröitymätön käyttäjä
Ero sivun ”Kahden oletusreitin käyttö” versioiden välillä
Siirry navigaatioon
Siirry hakuun
→Ratkaisu
p (kh, wikimuotoilua) |
|||
(4 välissä olevaa versiota 4 käyttäjän tekeminä ei näytetä) | |||
Rivi 1: | Rivi 1: | ||
Oletetaan, että halutaan saada yhdelle Linux-koneelle useampi [[IP]]-osoite siten, että nämä osoitteet ovat erillisistä aliverkoista ja niiden liikenne kulkee eri yhdyskäytävien kautta ja molempien aliverkkojen kautta on myös pääsy ulkomaailmaan. | |||
Itse IP-osoitteen antamisessa ei ole ongelmaa, kun koneellehan saa helposti useamman IP-osoitteen käyttämällä useampaa fyysistä verkkoliityntää tai käyttämällä fyysisen verkkoliitynnän lisänä virtuaalisia verkkolaitteita <tt>eth0:1</tt>, <tt>eth0:2</tt> jne. | Itse IP-osoitteen antamisessa ei ole ongelmaa, kun koneellehan saa helposti useamman IP-osoitteen käyttämällä useampaa fyysistä verkkoliityntää tai käyttämällä fyysisen verkkoliitynnän lisänä virtuaalisia verkkolaitteita <tt>eth0:1</tt>, <tt>eth0:2</tt> jne. | ||
Rivi 9: | Rivi 7: | ||
ifconfig eth1 172.16.1.2 netmask 255.255.255.0 up | ifconfig eth1 172.16.1.2 netmask 255.255.255.0 up | ||
Uudet Linux-asennukset laittavat oletuksena reititystietoihinsa reitin kummallekin aliverkolle, mutta jos se pitäisi tehdä itse, niin se tapahtuisi komennolla <tt>[[route]]</tt>: | Uudet Linux-asennukset laittavat oletuksena reititystietoihinsa reitin kummallekin aliverkolle, mutta jos se pitäisi tehdä itse, niin perinteisesti se tapahtuisi komennolla <tt>[[route]]</tt>: | ||
route add -net 192.168.1.0 eth0 | route add -net 192.168.1.0 eth0 | ||
route add -net 172.16.1.0 eth1 | route add -net 172.16.1.0 eth1 | ||
Rivi 38: | Rivi 36: | ||
Mutta entäs, jos paketin lähettäjäosoitteena olikin tuo 172.16.1.2 ja kohteena edelleenkin tuo 10.11.12.13? Sillekin reitityspäätös tehdään samalla tavalla, joten paketti päätyy eth0-laitteen takana olevalle reitittimelle 192.168.1.1, mikä on väärin, ja monissa tapauksissa tuo reititin ei edes suostu välittämään IP-osoitteen 172.16.1.2 lähettämää liikennettä. Tuo lähettäjäosoite voi vaihdella siksi, että verkkoon kommunikoiva ohjelma saattaa nimenomaan haluta käyttää sitä, tai paketti voi olla vaikkapa paluuliikennettä siihen kun joku muu kone on halunnut keskustella nimenomaan osoitteen 172.16.1.2 kanssa. | Mutta entäs, jos paketin lähettäjäosoitteena olikin tuo 172.16.1.2 ja kohteena edelleenkin tuo 10.11.12.13? Sillekin reitityspäätös tehdään samalla tavalla, joten paketti päätyy eth0-laitteen takana olevalle reitittimelle 192.168.1.1, mikä on väärin, ja monissa tapauksissa tuo reititin ei edes suostu välittämään IP-osoitteen 172.16.1.2 lähettämää liikennettä. Tuo lähettäjäosoite voi vaihdella siksi, että verkkoon kommunikoiva ohjelma saattaa nimenomaan haluta käyttää sitä, tai paketti voi olla vaikkapa paluuliikennettä siihen kun joku muu kone on halunnut keskustella nimenomaan osoitteen 172.16.1.2 kanssa. | ||
==Ratkaisu== | ==Ratkaisu== | ||
Ratkaisu ongelmaan on se, että Linuxille voi tehdä useamman reititystaulun, ja sitten liikenteen lähettäjäosoitteen perusteella valitaan, mitä taulua käytetään. | Ratkaisu ongelmaan on se, että Linuxille voi tehdä useamman reititystaulun, ja sitten liikenteen lähettäjäosoitteen perusteella valitaan, mitä taulua käytetään. | ||
Tuo aiemmin käytetty <tt>route</tt>-käsky ei enää kelpaa, koska se käyttää aina oletustaulua eikä sille voi kertoa, että reititystieto halutaankin johonkin toiseen. Pitää käyttää uudempaa työkalua <tt>ip</tt>, johon on rakennettu myös <tt>ifconfig</tt> | Tuo aiemmin käytetty <tt>route</tt>-käsky ei enää kelpaa, koska se käyttää aina oletustaulua eikä sille voi kertoa, että reititystieto halutaankin johonkin toiseen. Pitää käyttää uudempaa työkalua <tt>[[ip]]</tt>, johon on rakennettu myös <tt>ifconfig</tt>in ja oikeastaan lähes kaikkien muidenkin verkon konfigurointiin tarvittavien komentojen toiminnallisuus. | ||
Ensimmäisenä voisi katsoa, että mitä reitityssääntöjä koneessa on komennolla <tt>ip rule show</tt>: | Ensimmäisenä voisi katsoa, että mitä reitityssääntöjä koneessa on komennolla <tt>ip rule show</tt>: | ||
Rivi 51: | Rivi 47: | ||
32767: from all lookup default | 32767: from all lookup default | ||
Eli koneessa on siis kolme reitityssääntöä, ja aiemmin kerrottua reitityspäätösprosessia pitääkin laajentaa. Reitityspäätöstä tehdessään käyttöjärjestelmä käy ensimmäisenä läpi nuo säännöt prioriteettijärjestyksessä ( | Eli koneessa on siis kolme reitityssääntöä, ja aiemmin kerrottua reitityspäätösprosessia pitääkin laajentaa. Reitityspäätöstä tehdessään käyttöjärjestelmä käy ensimmäisenä läpi nuo säännöt prioriteettijärjestyksessä (rivin ensimmäinen numero). | ||
Ensimmäisessä säännössä sanotaan, että sitä käytetään, mikäli lähettäjäosoitteena on mikä tahansa (''from all''), ja käytetään reititystaulua, joka on nimetty nimelle ''local''. Mikäli siellä mikään reititystieto ei täsmännyt kokeillaan seuraavaa sääntöä. | Ensimmäisessä säännössä sanotaan, että sitä käytetään, mikäli lähettäjäosoitteena on mikä tahansa (''from all''), ja käytetään reititystaulua, joka on nimetty nimelle ''local''. Mikäli siellä mikään reititystieto ei täsmännyt kokeillaan seuraavaa sääntöä. | ||
Rivi 79: | Rivi 75: | ||
32767: from all lookup default | 32767: from all lookup default | ||
<tt>ip</tt>-komento ei laita asetuksia suoraan käyttöön, vaan asetukset | <tt>ip</tt>-komento ei välttämättä laita asetuksia suoraan käyttöön, vaan saatetaan joutua tyhjentämään vanhat asetukset reititysjärjestelmän välimuistista ennen kuin uudet muutokset ihan oikeasti vaikuttavat verkkoliikenteeseen. Tämä tapahtuu komennolla <tt>ip route flush cache</tt>. | ||
Nyt homman pitäisi toimia. Vaikka | Nyt homman pitäisi toimia. Vaikka <tt>main</tt>-taulua käyttävään sääntöön ei pitäisi tässä esimerkissä käytetyillä asetuksilla joutua, kannattaa silti sinnekin jotain järkevää laittaa. | ||
Kannattaa huomioida, että vaikka reititystiedot häviävätkin automaattisesti | Kannattaa huomioida, että vaikka reititystiedot (route) häviävätkin automaattisesti kun verkkoliityntä sammutetaan, jäävät reitityssäännöt (rule) kuitenkin edelleen olemaan, joten ne pitää poistaa erikseen. | ||
[[Luokka:Verkko]] | [[Luokka:Verkko]] | ||
[[Luokka:Ohjeet]] | [[Luokka:Ohjeet]] |