7 примера за Route командата в Linux

1. Показване на текущите правила

route командата по подразбиране ще покаже записите в рутиращата таблица на ядрото. В нашия случай IP адресът на машината, на която се изпълняват командите, е 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

Горните редове показват, че ако дестинацията е в обхвата на мрежата

192.168.1.0 – 192.168.1.255, то гейтуеят е *, т.е. 0.0.0.0. Когато се изпратят пакети в този IP диапазон, МAC адреса на дестинацията се извлича през ARP протокола и пакетът ще бъде доставен до конкретния MAC адрес.

В случай, че дестинацията е извън обхвата на мрежата, пакетите се изпращат към гейтуея по подразбиране, който решава накъде да поемат в последствие. Ще се спрем на това след малко.

По подразбиране route командата показва хост имената на записите в таблицата. Ако искаме да видим IP адресите е необходимо да използваме -n опцията:

 

$ route -n
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
0.0.0.0             192.168.1.10  0.0.0.0                 UG         0             0         0          eth0

 

2. Добавяне на гейтуей по подразбиране (default gateway)

Нека зададем на нашия гейтуей адрес 192.168.1.10:

route add default gw 192.168.1.10

Току-що добавихме нов default gateway за нашата машина. За да разберем дали работи правилно, опитваме ping до външен сайт (например google.com)

$ ping www.google.com

При това ще се изпълни следната последователност от събития:

1. Първо ще се изпрати запитване към DNS сървъра, за да се извлече IP адреса на google.com (например: 74.125.236.34)
2. Този адрес не е част от нашата мрежа.
3. Така в Layer-3 (IP хедъра) DESTINATION IP ще бъде установен на “74.125.236.34″.
4. В Layer-2, DESTINATION MAC адресът ще бъде зададен като MAC адреса на гейтуея по подразбиране, в нашия случай (MAC-а на 192.168.1.10).
5. Когато пакетът бъде изпратен, мрежовият суич (който оперира на Layer-2 ) го предава към default gateway-я, тъй като неговият MAC адрес е зададен като дестинация.
6. След като пакетът бъде получен от гейтуея, той ще реши накъде да го пренасочи спрямо правилата, описани в таблицата.

3. Показване на кешираната рутинг информация на ядрото

За целта се използва флага -C.

$ route -Cn

4. Отхвърляне на рутиране към определен хост или мрежа

За целта изпълнете следната команда:

$ route add -host 192.168.1.51 reject

Както се вижда по-долу, сега не можем да достъпим конкретния хост (.51):

$ ping 192.168.1.51 
connect: Network is unreachable

Все още обаче останалите хостове от мрежата (.51, .52, .53 и т.н.) са достъпни. За елиминиране на цялата мрежа е необходимо да се изпълни:

$ route add -net 192.168.1.0 netmask 255.255.255.0 reject

Нека да използваме следната проста мрежа за останалата част от примерите:

В диаграмата по-горе имаме две индивидуални мрежи ( 192.168.1.0 и 192.168.3.0 с маска 255.255.255.0 ). Също така имаме “GATEWAY” машина с три мрежови карти. Първата е свързана с 192.168.1.0, втората – с 192.168.3.0, а третата – към външния свят.

5. Достъп до 192.168.3.* от 192.168.1.*

Сега трябва да добавим запис, който да позволи пинг до 192.168.3. * от 192.168.1.*. Общата точка между двете мрежи е GATEWAY машината. Така, на всяка машина от 192.168.1.* мрежата, гейтуеят по подразбиране трябва да бъде:

$ route add default gw 192.168.1.10

Сега, когато 192.168.1.1 пусне пинг към 192.168.3.1, заявката ще отиде към гейтуея чрез 192.168.1.10. Там е необходимо да се изпълни:

$ route add -net 192.168.3.0 netmask 255.255.255.0 gw 192.168.3.10

Така всички пакети, адресирани до 192.168.3.* мрежата, ще бъдат пренасочени през 192.168.3.10 интерфейса.

6. Достъп до 192.168.1.* от 192.168.3.*

Стъпките са подобни на досега изпълняваните. На всяка машина от 192.168.3.* :

$ route add default gw 192.168.3.10

На GATEWAY машината:

$ route add -net 192.168.1.0 netmask 255.255.255.0 gw 192.168.1.10

Готово!

7. Интернет достъп

В предните два примера свързахме две различни мрежи. Сега тези мрежи се нуждаят от достъп до интернет. За целта трябва да се добави default routing правило към 125.250.60.59

$ route add default gw 125.250.60.59

Това е!

Вашият коментар

Вашият имейл адрес няма да бъде публикуван. Задължителните полета са отбелязани с *

Този сайт използва Akismet за намаляване на спама. Научете как се обработват данните ви за коментари.