V 1. díle série IP Routing jsme se naučili základy Linux IP Routing.
Příkaz Route se používá k zobrazení/manipulaci směrovací tabulky IP. Primárně se používá k nastavení statických směrování ke konkrétnímu hostiteli nebo sítím prostřednictvím rozhraní.
V tomto článku uvidíme, jak manipulovat se směrovacími tabulkami v Linuxu pomocí příkazu route.
Nejprve vysvětlíme, jak se směrování provádí na několika základních příkladech příkazů route, a poté pomocí vzorové síťové architektury vysvětlíme, jak nastavit trasy ve vaší síti.
I. Jak se provádí směrování?
1. Zobrazit existující trasy
příkaz route ve výchozím nastavení zobrazí podrobnosti o položkách směrovací tabulky jádra. V tomto příkladu je ip-adresa systému, kde se provádí příkaz route, 192.168.1.157
$ route Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface 192.168.1.0 * 255.255.255.0 U 0 0 0 eth0
Výše uvedený příkaz ukazuje, že pokud je cíl v rozsahu sítě 192.168.1.0 – 192.168.1.255, pak je brána *, což je 0.0.0.0.
Když jsou pakety odesílány v tomto rozsahu IP adres, je MAC adresa cíle nalezena pomocí protokolu ARP a paket bude odeslán na MAC adresu.
Pokud nevíte, co je ARP, měli byste nejprve pochopit, jak protokol ARP funguje.
Aby bylo možné odeslat pakety na místo určení, které není v tomto rozsahu IP, budou pakety předány výchozí bráně, která rozhodne o dalším směrování pro daný paket. To uvidíme brzy.
Ve výchozím nastavení příkaz route zobrazuje název hostitele ve svém výstupu. Můžeme jej požádat o zobrazení číselné IP adresy pomocí volby -n, jak je uvedeno níže.
$ route -n Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface 192.168.1.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0 0.0.0.0 192.168.1.10 0.0.0.0 UG 0 0 0 eth0
2. Přidání výchozí brány
Můžeme určit, že pakety, které nejsou v síti, musí být předány na adresu brány.
Následující příkaz route add nastaví výchozí bránu na 192.168.1.10.
$ route add default gw 192.168.1.10
Nyní příkaz route zobrazí následující položky.
$ route Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface 192.168.1.0 * 255.255.255.0 U 0 0 0 eth0 default gateway.co.in 0.0.0.0 UG 0 0 0 eth0
Nyní jsme do našeho počítače právě přidali výchozí bránu. Chcete-li ověřit, zda funguje správně, odešlete paket ICMP pomocí příkazu ping na některého externího hostitele (například google.com).
$ ping www.google.com
Následuje sekvence událostí, ke kterým dojde při provedení výše uvedeného příkazu ping.
- Nejprve požádá server DNS, aby získal IP adresu google.com (například:74.125.236.34)
- Cílová adresa ( 74.125.236.34 ) není v dosahu sítě.
- Takže ve vrstvě 3 (záhlaví IP) bude CÍLOVÁ IP adresa nastavena na „74.125.236.34“.
- Ve vrstvě 2 bude CÍLOVÁ MAC adresa vyplněna jako MAC adresa výchozí brány ( MAC 192.168.1.10 ). MAC bude nalezena pomocí ARP, jak bylo popsáno dříve.
- Když je paket odeslán, síťový přepínač (který funguje na vrstvě 2) odešle paket na výchozí bránu, protože cílová MAC je MAC brány.
- Jakmile brána přijme paket na základě své směrovací tabulky, přepošle pakety dále.
Výše uvedené 2 příklady by poskytly dobrou představu o tom, jak se provádí směrování v síti. Nyní uvidíme další možnosti příkazového řádku dostupné s příkazem route.
3. Vypište informace o směrovací mezipaměti jádra
Jádro udržuje informace o směrovací mezipaměti pro rychlejší směrování paketů. Můžeme vypsat informace o směrovací mezipaměti jádra pomocí parametru -C.
$ route -Cn Kernel IP routing cache Source Destination Gateway Flags Metric Ref Use Iface 192.168.1.157 192.168.1.51 192.168.1.51 0 0 1 eth0 192.168.1.157 74.125.236.69 192.168.1.10 0 0 0 eth0 . . .
4. Odmítnout směrování na konkrétního hostitele nebo síť
Někdy můžeme chtít odmítnout směrování paketů do určitého hostitele/sítě. Chcete-li to provést, přidejte následující položku.
$ route add -host 192.168.1.51 reject
Jak vidíte níže, nemáme přístup k tomuto konkrétnímu hostiteli (tj. hostiteli .51, kterého jsme právě odmítli).
$ ping 192.168.1.51 connect: Network is unreachable
Stále však můžeme přistupovat k dalším hostitelům v síti (například hostitel .52 je stále přístupný).
$ ping 192.168.1.53 PING 192.168.1.53 (192.168.1.53) 56(84) bytes of data. 64 bytes from 192.168.1.53: icmp_seq=1 ttl=64 time=7.77 ms
Pokud chcete odmítnout celou síť ( 192.168.1.1 – 192.168.1.255 ), přidejte následující položku.
$ route add -net 192.168.1.0 netmask 255.255.255.0 reject
Nyní nemáte přístup k žádnému z hostitelů v této síti (například:.51, .52, .53 atd.)
$ ping 192.168.1.51 connect: Network is unreachable $ ping 192.168.1.52 connect: Network is unreachable $ ping 192.168.1.53 connect: Network is unreachable
II. Ukázková síťová architektura (pro pochopení směrování)
Pro zbytek příkladů použijme následující vzorovou síťovou architekturu.
V níže uvedeném diagramu máme 2 jednotlivé sítě (192.168.1.0 a 192.168.3.0, s maskou podsítě 255.255.255.0).
Máme také stroj „GATEWAY“ se 3 síťovými kartami. 1. karta je připojena k 192.168.1.0, 2. karta je připojena k 192.168.3.0 a 3. karta je připojena k vnějšímu světu.
5. Zpřístupnit 192.168.3.* z 192.168.1.*
Nyní musíme přidat směrovací položku tak, abychom byli schopni pingnout 192.168.3. série IP adres od 192.168.1. série. Společný bod, který máme, je stroj GATEWAY.
Takže na každý počítač v síti 192.168.1.* bude přidána výchozí brána, jak je uvedeno níže.
$ route add default gw 192.168.1.10
Nyní, když 192.168.1.1 odešle ping na 192.168.3.1, přejde do BRÁNY přes 192.168.1.10.
V bráně GATEWAY přidejte následující položku směrování.
$ route add -net 192.168.3.0 netmask 255.255.255.0 gw 192.168.3.10
Nyní budou všechny pakety adresované do sítě 192.168.3.* předávány přes rozhraní 192.168.3.10, které pak doručuje pakety na adresovaný počítač.
6. Zpřístupnit 192.168.1.* z 192.168.3.*
Je to velmi podobné tomu, co jsme dělali dříve.
Takže na každý počítač v síti 192.168.3.* bude přidána výchozí brána, jak je uvedeno níže.
$ route add default gw 192.168.3.10
V bráně GATEWAY přidejte následující položku směrování.
$ route add -net 192.168.1.0 netmask 255.255.255.0 gw 192.168.1.10
Nyní mohou stroje 192.168.3.* pingnout stroje 192.168.1.*.
7. Povolit přístup k internetu (Externí svět)
V předchozích dvou příkladech jsme propojili 2 různé sítě.
Nyní potřebujeme přístup k internetu z těchto 2 různých sítí. Za tímto účelem můžeme k 125.250.60.59, které je připojeno k vnějšímu světu následovně, přidat výchozí směrování (když žádné pravidlo směrování neodpovídá).
$ route add default gw 125.250.60.59
Funguje to takto:
- Nyní, když se pokusíte o přístup k internetu (například:ping google.com) z kteréhokoli z těchto počítačů (například z 192.168.3.2), následuje následující sekvence událostí.
- Vzhledem k tomu, že cíl (google.com) není v sérii 3.*, bude přesměrován na GATEWAY prostřednictvím rozhraní 3.10
- V GATEWAY kontroluje, zda je cíl v rozsahu 1*. V tomto příkladu tomu tak není.
- Potom zkontroluje, zda je cíl v rozsahu 2*. V tomto příkladu tomu tak není
- Nakonec používá výchozí cestu k předávání paketů (tj. pomocí rozhraní 125.250.60.59, které je propojeno s vnějším světem).