Difference between revisions of "Static routing"
(→routes) |
|||
(68 intermediate revisions by the same user not shown) | |||
Line 1: | Line 1: | ||
− | [[ | + | Опитна постановка 1: |
+ | Дадена е мрежа (фиг.1), състояща се от три подмрежи – MAT, INT и DIFF, свързани помежду си с рутери интеграл и диференциал. | ||
+ | |||
+ | [[Image:staticRouting.png|frame|none|Фиг.1. Статично рутиране, опитна постановка]] | ||
+ | |||
+ | == Адресна схема == | ||
+ | Попълнете празните клетки от таблицата, в съответствие с мрежата от фиг.1 и дадената информация. | ||
+ | |||
+ | <table width="100%" border="1" style="text-align:center"> | ||
+ | <tr> | ||
+ | <td>Network</td> <td>IPv4 </td> <td>netmask(decimal) </td> <td>gateway </td> | ||
+ | </tr> | ||
+ | |||
+ | <tr> | ||
+ | <td>INT </td> <td>10.10.12.0 / 24</td> <td> </td> <td> </td> | ||
+ | </tr> | ||
+ | |||
+ | <tr> | ||
+ | <td>DIFF </td> <td>10.10.11.0 / 24</td> <td> </td> <td></td> | ||
+ | </tr> | ||
+ | |||
+ | <tr> | ||
+ | <td>MAT </td> <td> 10.10.10.0 / 30</td> <td> </td> <td>/\/\/\/\/\/\/\ </td> | ||
+ | </tr> | ||
+ | |||
+ | <tr> | ||
+ | <td></td> <td></td> <td> </td> <td></td> | ||
+ | </tr> | ||
+ | |||
+ | <tr> | ||
+ | <td>router </td> <td> if0</td> <td> if1</td> <td> route to DIFF </td> | ||
+ | </tr> | ||
+ | |||
+ | <tr> | ||
+ | <td>int</td> <td> 10.10.12.1 /24</td> <td>10.10.10.1 /30 </td> <td> </td> | ||
+ | </tr> | ||
+ | |||
+ | <tr> | ||
+ | <td>router</td> <td> if0 </td> <td> if1</td> <td> route to INT</td> | ||
+ | </tr> | ||
+ | |||
+ | <tr> | ||
+ | <td>diff</td> <td> 10.10.11.1 /24</td> <td> </td> <td> </td> | ||
+ | </tr> | ||
+ | |||
+ | |||
+ | <tr> | ||
+ | <td>Workstation</td> <td>IPv4 address</td> <td>netmask (decimal)</td> <td>gateway</td> | ||
+ | </tr> | ||
+ | |||
+ | <tr> | ||
+ | <td>PC1</td> <td>10.10.12.12/24</td> <td> </td> <td> </td> | ||
+ | </tr> | ||
+ | |||
+ | <tr> | ||
+ | <td>Workstation</td> <td> IPv4 address</td> <td>netmask (decimal)</td> <td>gateway</td> | ||
+ | </tr> | ||
+ | |||
+ | <tr> | ||
+ | <td>PC2</td> <td></td> <td> </td> <td> </td> | ||
+ | </tr> | ||
+ | |||
+ | </table> | ||
+ | |||
+ | == Създаване на опитна постановка == | ||
+ | За реализацията на хардуерната постановка ще се използва [[VirtualBox]]. Ще се създадат 4 виртуални машини от образа на предварително подготвена инсталация Ubuntu server. | ||
+ | |||
+ | [[VirtualBox|Импортиране и настройка на интерфейсите на виртуалната машина.]] | ||
+ | |||
+ | Като импортирате няколко виртуални машини от един и същ образ, трябва да смените MAC адресите на интерфейсите. | ||
+ | |||
+ | След стартиране на машината сменете имената на машините със съответните имена от адресната схема. За целта трябва да редактирате файловете | ||
+ | * /etc/hostname - тук се изтрива старото име и се записва новото. | ||
+ | * /etc/hosts - тук след адреса 127.0.1.1 се изтрива старото име и на негово място се записва новото | ||
+ | |||
+ | За да редактирате файла може да се използва [[vi|текстов редактор vi]] или [[nano|nano]]. Трябва да имате администраторски права. | ||
+ | |||
+ | Включване на root потребител | ||
+ | ~$sudo su | ||
+ | |||
+ | Отваряне на файл hostname. | ||
+ | ~$nano /etc/hostname | ||
+ | |||
+ | Отваряне на файл hosts. | ||
+ | ~$nano /etc/hosts | ||
+ | |||
+ | == Мрежови настройки Linux == | ||
+ | Конфигурация на Linux (Ubuntu) рутер и работнa станция. Използват се вградените в ядрото на Линукс възможности за маршрутизация. | ||
+ | |||
+ | |||
+ | === Настройка мрежови интерфейси === | ||
+ | |||
+ | Проверете имената на съществуващите интерфейси. Най-често те са eth0 или eth1 или eth2 ... | ||
+ | Използвайте командата: | ||
+ | ~$ifconfig -a | ||
+ | |||
+ | Използвайте текстов редактор [[nano]] или [[vi]] и редактирайте файл interfaces. | ||
+ | ~$nano /etc/network/interfaces | ||
+ | |||
+ | Във файла се добавя съответната информация и се записва. | ||
+ | |||
+ | ==== Работните станции ==== | ||
+ | За работните станции конфигурационния файл би трябвало да изглежда така | ||
+ | <code><pre> | ||
+ | auto lo | ||
+ | iface lo inet loopback | ||
+ | |||
+ | auto ethX | ||
+ | iface ethX inet static | ||
+ | address if0.if0.if0.if0 | ||
+ | netmask if0.if0.if0.if0 | ||
+ | gateway X.X.X.X | ||
+ | </pre></code> | ||
+ | където ethX,if0.if0.if0.if0 и X.X.X.X се заместват със съответните стойности от задача 1. | ||
+ | |||
+ | ==== Рутер ==== | ||
+ | За рутерите конфигурационния файл би трябвало да изглежда така | ||
+ | <code><pre> | ||
+ | auto lo | ||
+ | iface lo inet loopback | ||
+ | |||
+ | auto ethX | ||
+ | iface ethX inet static | ||
+ | address if0.if0.if0.if0 | ||
+ | netmask if0.if0.if0.if0 | ||
+ | |||
+ | auto ethY | ||
+ | iface ethY inet static | ||
+ | address if1.if1.if1.if1 | ||
+ | netmask if1.if1.if1.if1 | ||
+ | </pre></code> | ||
+ | |||
+ | където ethX, ethY, if0.if0.if0.if0 и if1.if1.if1.if1 се заместват със съответните стойности за съответния рутер от задача 1. | ||
+ | |||
+ | '''''Допълнителна литература: '''''[https://wiki.debian.org/NetworkConfiguration Мрежови настройки в Debian] | ||
+ | |||
+ | ==== Прилагане на промените ==== | ||
+ | За да се заредят новите настройки, мрежовите интерфейси трябва да се рестартират. | ||
+ | :~$ ifdown ethX && ifup ethX | ||
+ | където '''''ethX'''' е името на интефейса. | ||
+ | |||
+ | == Тестване на мрежовите настройки == | ||
+ | |||
+ | === Проверка настройките на интерфейсите === | ||
+ | |||
+ | Без параметри командата показва текущото състояние на порта | ||
+ | :~$ifconfig | ||
+ | |||
+ | === Пътища === | ||
+ | :~$ netstat –r | ||
+ | |||
+ | Текущата рутираща таблица. Без добавени пътища (ръчно или от рутиращ демон) се показват пътищата само към директно свързаните мрежи, т.е. ползва се информацията от настройката на интерфейсите. | ||
+ | |||
+ | === Internet Control Message Protocol (ICMP) === | ||
+ | |||
+ | Ping изпраща ехо заявки (изпраща се съобщение и се чака отговор че е получено). | ||
+ | :~$ ping X.X.X.X | ||
+ | |||
+ | където X.X.X.X e IP адресът на машината, която проверяваме дали има връзка с нашата машина. Много често стандартните настройки на firewall-ите ограничават ping заявките. | ||
+ | |||
+ | |||
+ | '''Попълнете таблицата:''' Заменете имената с IP адресите на компютрите и тествайте наличието на връзка с командата <code>ping</code>.отбележете с ''да'' и ''не'' наличието на връзка. | ||
+ | <table width="100%" border="1" cellpadding="2" cellspasing = "1" style="text-align:center"> | ||
+ | <tr> | ||
+ | <td width="16%">От / Към</td> <td width="14%">PC1</td> <td width="14%">интеграл if0</td> <td width="14%">интеграл if1</td> <td width="14%">диференциал if1</td> <td width="14%">диференциал if0</td> <td width="14%">PC2</td> | ||
+ | </tr> | ||
+ | |||
+ | <tr> | ||
+ | <td>PC1</td> <td> </td> <td> </td> <td> </td> <td> </td> <td> </td> <td> </td> | ||
+ | </tr> | ||
+ | |||
+ | <tr> | ||
+ | <td>интеграл</td> <td> </td> <td> </td> <td> </td> <td> </td> <td> </td> <td> </td> | ||
+ | </tr> | ||
+ | |||
+ | <tr> | ||
+ | <td>диференциал</td> <td> </td> <td> </td> <td> </td> <td> </td> <td> </td> <td> </td> | ||
+ | </tr> | ||
+ | |||
+ | </table> | ||
+ | |||
+ | == ip forwarding == | ||
+ | |||
+ | Включване на ip forwarding (препращане на пакетите, само за рутерите). | ||
+ | |||
+ | Редактирайте файла ''sysctl.conf''. | ||
+ | |||
+ | ~$ nano /etc/sysctl.conf | ||
+ | Разкоментира се реда: <code> net.ipv4.ip_forward = 1 </code> и се записва. | ||
+ | |||
+ | Настройките могат да се приложат без рестариране с командата: | ||
+ | ~$ sysctl –p #динамично презареждане на %настройките на ядрото | ||
+ | |||
+ | == routes == | ||
+ | Добавяне на статични маршрути ( routes ) към рутиращите таблици на рутерите. | ||
+ | |||
+ | Като имате предвид,че '''X.X.X.X''' е адреса на мрежата с маска '''Y.Y.Y.Y''', която е достъпна през рутер с адрес '''Z.Z.Z.Z'''. | ||
+ | |||
+ | :~$ route add –net X.X.X.X netmask Y.Y.Y.Y gw Z.Z.Z.Z | ||
+ | :~$ netstat –r #показване на текущата рутираща таблица | ||
+ | |||
+ | '''Запишете рутиращата таблица на един от рутерите.''' | ||
+ | <table width="100%" border="1" cellpadding="2" cellspasing = "1" style="text-align:center"> | ||
+ | <tr> | ||
+ | <td width="25%">Destination</td> | ||
+ | <td width="25%">Gateway</td> | ||
+ | <td width="25%">Genmask</td> | ||
+ | <td width="12%">Flags</td> | ||
+ | <td width="13%">Iface</td> | ||
+ | </tr> | ||
+ | <tr> | ||
+ | <td> </td> <td> </td> <td> </td> <td> </td> <td> </td> | ||
+ | </tr> | ||
+ | <tr> | ||
+ | <td> </td> <td> </td> <td> </td> <td> </td> <td> </td> | ||
+ | </tr> | ||
+ | <tr> | ||
+ | <td> </td> <td> </td> <td> </td> <td> </td> <td> </td> | ||
+ | </tr> | ||
+ | <tr> | ||
+ | <td> </td> <td> </td> <td> </td> <td> </td> <td> </td> | ||
+ | </tr> | ||
+ | </table> | ||
+ | |||
+ | |||
+ | |||
+ | '''Попълнете таблицата:''' Заменете имената с IP адресите на компютрите и тествайте наличието на връзка с командата <code>ping</code>.отбележете с ''да'' и ''не'' наличието на връзка. | ||
+ | <table width="100%" border="1" cellpadding="2" cellspasing = "1" style="text-align:center"> | ||
+ | <tr> | ||
+ | <td width="16%">От / Към</td> <td width="14%">PC1</td> <td width="14%">интеграл if0</td> <td width="14%">интеграл if1</td> <td width="14%">диференциал if1</td> <td width="14%">диференциал if0</td> <td width="14%">PC2</td> | ||
+ | </tr> | ||
+ | |||
+ | <tr> | ||
+ | <td>PC1</td> <td> </td> <td> </td> <td> </td> <td> </td> <td> </td> <td> </td> | ||
+ | </tr> | ||
+ | |||
+ | <tr> | ||
+ | <td>интеграл</td> <td> </td> <td> </td> <td> </td> <td> </td> <td> </td> <td> </td> | ||
+ | </tr> | ||
+ | |||
+ | <tr> | ||
+ | <td>диференциал</td> <td> </td> <td> </td> <td> </td> <td> </td> <td> </td> <td> </td> | ||
+ | </tr> | ||
+ | |||
+ | </table> | ||
+ | |||
+ | == Задача== | ||
+ | Да се проследи с wireshark преминаване на ping пакет от PC1 до PC2 през всички интерфейси и да се попълни таблицата: | ||
+ | |||
+ | {| class="wikitable" | ||
+ | |- | ||
+ | ! address/interface !! integral if1 !! differencial if0!! PC2 | ||
+ | |- | ||
+ | | Source MAC || || || | ||
+ | |- | ||
+ | | Destination MAC || || || | ||
+ | |- | ||
+ | | Source IP || || || | ||
+ | |- | ||
+ | | Destination IP|| || || | ||
+ | |} | ||
+ | |||
+ | == Използвани команди == | ||
+ | |||
+ | [[Команди Linux#cd Change Directory|cd]] | ||
+ | [[Команди Linux#sudo|sudo]] | ||
+ | [[Команди Linux#cp Copy|cp]] | ||
+ | route | ||
+ | |||
+ | netstat | ||
+ | |||
+ | ping | ||
+ | |||
[[Category:Компютърни мрежи| ]] | [[Category:Компютърни мрежи| ]] |
Latest revision as of 06:57, 23 October 2013
Опитна постановка 1: Дадена е мрежа (фиг.1), състояща се от три подмрежи – MAT, INT и DIFF, свързани помежду си с рутери интеграл и диференциал.
Contents
Адресна схема
Попълнете празните клетки от таблицата, в съответствие с мрежата от фиг.1 и дадената информация.
Network | IPv4 | netmask(decimal) | gateway |
INT | 10.10.12.0 / 24 | ||
DIFF | 10.10.11.0 / 24 | ||
MAT | 10.10.10.0 / 30 | /\/\/\/\/\/\/\ | |
router | if0 | if1 | route to DIFF |
int | 10.10.12.1 /24 | 10.10.10.1 /30 | |
router | if0 | if1 | route to INT |
diff | 10.10.11.1 /24 | ||
Workstation | IPv4 address | netmask (decimal) | gateway |
PC1 | 10.10.12.12/24 | ||
Workstation | IPv4 address | netmask (decimal) | gateway |
PC2 |
Създаване на опитна постановка
За реализацията на хардуерната постановка ще се използва VirtualBox. Ще се създадат 4 виртуални машини от образа на предварително подготвена инсталация Ubuntu server.
Импортиране и настройка на интерфейсите на виртуалната машина.
Като импортирате няколко виртуални машини от един и същ образ, трябва да смените MAC адресите на интерфейсите.
След стартиране на машината сменете имената на машините със съответните имена от адресната схема. За целта трябва да редактирате файловете
- /etc/hostname - тук се изтрива старото име и се записва новото.
- /etc/hosts - тук след адреса 127.0.1.1 се изтрива старото име и на негово място се записва новото
За да редактирате файла може да се използва текстов редактор vi или nano. Трябва да имате администраторски права.
Включване на root потребител
~$sudo su
Отваряне на файл hostname.
~$nano /etc/hostname
Отваряне на файл hosts.
~$nano /etc/hosts
Мрежови настройки Linux
Конфигурация на Linux (Ubuntu) рутер и работнa станция. Използват се вградените в ядрото на Линукс възможности за маршрутизация.
Настройка мрежови интерфейси
Проверете имената на съществуващите интерфейси. Най-често те са eth0 или eth1 или eth2 ... Използвайте командата:
~$ifconfig -a
Използвайте текстов редактор nano или vi и редактирайте файл interfaces.
~$nano /etc/network/interfaces
Във файла се добавя съответната информация и се записва.
Работните станции
За работните станции конфигурационния файл би трябвало да изглежда така
auto lo
iface lo inet loopback
auto ethX
iface ethX inet static
address if0.if0.if0.if0
netmask if0.if0.if0.if0
gateway X.X.X.X
където ethX,if0.if0.if0.if0 и X.X.X.X се заместват със съответните стойности от задача 1.
Рутер
За рутерите конфигурационния файл би трябвало да изглежда така
auto lo
iface lo inet loopback
auto ethX
iface ethX inet static
address if0.if0.if0.if0
netmask if0.if0.if0.if0
auto ethY
iface ethY inet static
address if1.if1.if1.if1
netmask if1.if1.if1.if1
където ethX, ethY, if0.if0.if0.if0 и if1.if1.if1.if1 се заместват със съответните стойности за съответния рутер от задача 1.
Допълнителна литература: Мрежови настройки в Debian
Прилагане на промените
За да се заредят новите настройки, мрежовите интерфейси трябва да се рестартират.
:~$ ifdown ethX && ifup ethX
където ethX' е името на интефейса.
Тестване на мрежовите настройки
Проверка настройките на интерфейсите
Без параметри командата показва текущото състояние на порта
:~$ifconfig
Пътища
:~$ netstat –r
Текущата рутираща таблица. Без добавени пътища (ръчно или от рутиращ демон) се показват пътищата само към директно свързаните мрежи, т.е. ползва се информацията от настройката на интерфейсите.
Internet Control Message Protocol (ICMP)
Ping изпраща ехо заявки (изпраща се съобщение и се чака отговор че е получено).
:~$ ping X.X.X.X
където X.X.X.X e IP адресът на машината, която проверяваме дали има връзка с нашата машина. Много често стандартните настройки на firewall-ите ограничават ping заявките.
Попълнете таблицата: Заменете имената с IP адресите на компютрите и тествайте наличието на връзка с командата ping
.отбележете с да и не наличието на връзка.
От / Към | PC1 | интеграл if0 | интеграл if1 | диференциал if1 | диференциал if0 | PC2 |
PC1 | ||||||
интеграл | ||||||
диференциал |
ip forwarding
Включване на ip forwarding (препращане на пакетите, само за рутерите).
Редактирайте файла sysctl.conf.
~$ nano /etc/sysctl.conf
Разкоментира се реда: net.ipv4.ip_forward = 1
и се записва.
Настройките могат да се приложат без рестариране с командата:
~$ sysctl –p #динамично презареждане на %настройките на ядрото
routes
Добавяне на статични маршрути ( routes ) към рутиращите таблици на рутерите.
Като имате предвид,че X.X.X.X е адреса на мрежата с маска Y.Y.Y.Y, която е достъпна през рутер с адрес Z.Z.Z.Z.
:~$ route add –net X.X.X.X netmask Y.Y.Y.Y gw Z.Z.Z.Z :~$ netstat –r #показване на текущата рутираща таблица
Запишете рутиращата таблица на един от рутерите.
Destination | Gateway | Genmask | Flags | Iface |
Попълнете таблицата: Заменете имената с IP адресите на компютрите и тествайте наличието на връзка с командата ping
.отбележете с да и не наличието на връзка.
От / Към | PC1 | интеграл if0 | интеграл if1 | диференциал if1 | диференциал if0 | PC2 |
PC1 | ||||||
интеграл | ||||||
диференциал |
Задача
Да се проследи с wireshark преминаване на ping пакет от PC1 до PC2 през всички интерфейси и да се попълни таблицата:
address/interface | integral if1 | differencial if0 | PC2 |
---|---|---|---|
Source MAC | |||
Destination MAC | |||
Source IP | |||
Destination IP |
Използвани команди
netstat
ping