[МУЗЫКА]
Здравствуйте, с вами я — Николай Булахов.
И мы продолжаем изучать компьютерные сети.
Иногда возникает потребность подключить к компьютерной сети заведомо
большее количество устройств, нежели имеется IP-адресов в нашем распоряжении.
В таком случае целесообразно воспользоваться технологией трансляции
сетевых адресов, или же Network Address Translation, сокращённо NAT.
В этом случае маршрутизатор в пересылаемых из внутренней, или же как ее еще иногда
называют маскируемой, сети пакетов, заменяет IP-адрес источника на свой.
Об этом он делает пометку в специальной таблице и уже после этого пересылает
пакет во внешнюю сеть или же в Интернет.
Когда возвращается ответный пакет, маршрутизатор,
основываясь на данных своей таблицы, производит обратную манипуляцию и заменяет
IP-адрес получателя на адрес изначального отправителя из внутренней сети.
После этого пакет отправляется во внутреннюю маскируемую сеть.
Таким образом во внутренней сети можно использовать частные IP-адреса,
имея только один публичный на внешнем интерфейсе маршрутизатора.
Компьютеры же в маскируемой сети и во внешней не требуют никаких дополнительных
настроек.
Более того, они могут даже не догадываться,
что между ними имеется маршрутизатор, использующий технологию NAT.
При этом компьютеры в маскируемой сети недоступны извне и действуют от
имени маршрутизатора.
В некоторых случаях это может быть даже полезно для достижения большей приватности
и безопасности в Интернете.
Давайте включим NAT на нашем маршрутизаторе,
повторим действия предыдущей лекции и сравним результат.
Итак, включите маршрутизатор,
дождитесь процесса окончания загрузки и залогинтесь на второй консоль.
Для начала нам потребуется добавить пару опций в ядро
операционной системы, пересобрать его и настроить межсетевой экран.
Запустите уже знакомый вам Midnight Commander при помощи команды MC.
И перейдите в папку usr/ssrc/cis/img64/conf.
Если ваша система 32-разрядная,
то вместо папки img-64, выберите папку i386.
Скопируйте файл настроек ядра по умолчанию GENERIC под другим именем.
В моем случае, KERN1, для этого вы можете воспользоваться командой
cp пробел имя копируемого файла, пробел, имя получаемой копии.
В моем случае cp пробел GENERIC пробел KERN1.
Откройте для редактирования новый файл при помощи клавиши F4,
измените параметр Ident с GENERIC на KERN1.
Рядом со строками options добавьте две новые строки:
options IP Firewall и options IP Divert.
Для разделения слов между собой вы можете использовать как пробелы,
так и символы табуляции — кнопка Tab.
Сохраните изменения при помощи клавиши F2.
Выйдите из режима редактирования файла, два раза нажав клавишу Escape.
Перейдите в каталог usr/src.
Вы можете воспользоваться для этого командой cd пробел/urs/src или
сделать это вручную.
Нажмите Ctrl O, для того чтобы получить доступ к консоли,
где не будут мешать панели Midnight Commander.
Скомпилируйте новое ядро с поддержкой нужных нам технологий
при помощи команды make пробел buildkernel
пробел KERNCONF = имя нового файла ядра.
В моем случае KERN1.
Процесс компиляции довольно долгий, поэтому запаситесь
терпением и дождитесь приглашения интерпретатора для ввода новых команд.
Далее, установите новое ядро при помощи команды
make пробел installkernel пробел KERNCONF = имя нового файла ядра.
Дождитесь окончания процесса.
В файл
etc/rc.conf надо добавить следующие строки.
Далее, в основной файл настроек надо добавить несколько строк.
Для этого перейдите в каталог etc, найдите файл rc.conf,
откройте для редактирования и добавьте
firewall_enable = "Yes", для включения межсетевого экрана.
Он непосредственно и будет направлять информационные пакеты в программу
трансляции сетевых адресов.
Далее, firewall_type
= /usr/local/etc/firewall.conf.
Эта опция задаст файл настроек в firewall, в котором мы будем писать
конфигурацию межсетевого экрана, которая нам необходима.
Далее, natd_enable = "Yes".
Это позволит запускать программу сетевых адресов при старте операционной системы.
И natd_interface = em1,
чтобы программа трансляции сетевых адресов знала,
какой интерфейс у нас является интерфейсом внутренней сети, а какой — внешней.
Сохраните изменения при помощи клавиши F2 и два раза нажмите клавишу Escape,
чтобы выйти из режима редактирования.
Перейдите в каталог usr/local/etc.
Создайте там файл Firewall.conf при помощи команды touch пробел firewall.conf.
Откройте его для редактирования при помощи клавиши F4.
Впишите в данный файл правила, перенаправляющие
все проходящие мимо пакеты на маскирование-размаскирование.
Для этого добавьте следующие строки: add
пробел 10000 пробел divert пробел
natd пробел IP пробел from пробел
any пробел to пробел any пробел пробел em1.
То есть правило №10000 добавить,
отправить в программу маскирования сетевых адресов весь IP-трафик,
исходящий откуда угодно и предназначенный кому угодно,
но при этом проходящий через интерфейс em1.
Следующая строчка: add пробел 10100
пробел allow пробел IP пробел from пробел any пробел to пробел any.
То есть добавить правило 10100, которое разрешает
проходить пакеты информационные по протоколу IP,
предназначенные от кого угодно к кому угодно.
Без этой строчки все пакеты Firewall бы отбрасывались.
Сохраните файл.
Для этого воспользуйтесь клавишей F2 и выйдите из режима редактирования,
два раза нажав Escape.
Перезапустите маршрутизатор командой init 6.
[БЕЗ_ЗВУКА]
[БЕЗ_ЗВУКА] Если
всё прошло удачно, то команда IP FW с
ключами −a и l, выведет список правил Firewall,
в том числе и тех, которые мы только что прописали в его файле конфигурации.
Проверьте, работает ли при этом маршрутизация.
Маскируемая сеть у нас LAN1, публичная LAN2.
Запустите Wireshark на PC1 и PC4.
[БЕЗ_ЗВУКА] В
терминале посмотрите имя вашего сетевого интерфейса команда if config.
[БЕЗ_ЗВУКА] У меня это по-прежнему Enp0S3.
Выберите этот интерфейс Wireshark и нажмите Start capture packets на обоих
компьютерах.
В терминале PC1 опять выполните команду ping с ключом −c1
и соответственно IP-адресом 192.168.2.4,
чтобы отослать ICMP Echo запрос компьютеру PC4 и получить от него ответ.
В Wireshark вы опять увидите по четыре пойманных пакета.
Остановите дальнейший мониторинг сети.
Итак, когда вы запустите утилиту ping c аргументом -c 192.168.2.4,
она опять отправит ICMP Echo запрос,
попросив об этом операционную систему, которая в свою очередь,
повторит все описанные в предыдущей лекции действия с небольшой разницей.
После того как операционная система при помощи протокола
ARP установит соответствие IP-адреса маршрутизатора его MAC-адреса,
компьютер PC1 опять вышлет ICMP Echo запрос, предназначенный компьютеру PC4.
При этом этот ICMP запрос поступит маршрутизатору из сети LAN1.
Маршрутизатор, увидев, что этот ICMP Echo запрос предназначен компьютеру PC4,
опять при помощи протокола ARP установит соответствие его MAC-адреса и IP-адреса
и должен будет передать этот ICMP Echo запрос по сети LAN2.
В этот момент случится главное: маршрутизатор
заменит адрес PC1 на свой адрес маршрутизатора,
точнее его интерфейса, который присоединен к сети LAN2.
И вот именно такой пакет с измененным IP-адресом
будет выслан в сеть и пойман компьютером PC4.
Таким образом PC4 будет думать,
что ICMP Echo запрос ему прислал именно маршрутизатор с интерфейса,
присоединенного к сети LAN2, и PC4 отошлет ICMP Echo ответ
именно маршрутизатору на интерфейс, который присоединен к сети LAN2.
После извлечения такого пакета из сети маршрутизатором,
он по-прежнему будет отправлен в программу natd,
которая осуществила до этого маскирование ICMP Echo запроса.
Эта же программа заменит IP-адрес получателя, который теперь значится,
IP-адрес маршрутизатора, который присоединен к сети LAN2,
на исходный IP-адрес компьютера PC1.
Именно в таком измененном виде ICMP Echo ответ будет
выслан в сеть LAN1 и будет принят получателем PC1.
Подытожив, можно сказать,
что разница будет в значениях IP-адресов всего в двух пакетах.
Во внешней сети вместо PC1, то есть адреса
192.168.1.1 будет фигурировать IP-адрес маршрутизатора,
точнее его интерфейса, который присоединен к сети LAN2, 192.
168.2.5 в нашем случае.
Все эти метаморфозы можно пронаблюдать в Wireshark.
Тщательно сравните различия в случае с NAT и без него.
Тщательно сравните результаты в случае использования технологии NAT и без нее.
На этом можно завершить изучение данной темы.
После мы рассмотрим,
как можно объединить несколько локальных сетей при помощи одного маршрутизатора.
[МУЗЫКА]
[МУЗЫКА]