Many-to-One
Следующий тип имеет несколько названий: NAT Overload, Port Address Translation (PAT), IP Masquerading, Many-to-One NAT. Последнее название говорит само за себя — через один внешний адрес выходит в мир много приватных. Это позволяет решить проблему с нехваткой внешних адресов и выпустить в мир всех желающих. Тут надо бы дать пояснение, как это работает. Как два приватных адреса транслируются в один можно представить, но как маршрутизатор понимает кому нужно переслать пакет, вернувшийся из Интернета на этот адрес? Всё очень просто: Предположим, что от двух хостов из внутренней сети приходят пакеты на натирующее устройство. Оба с запросом к WEB-серверу 192.0.2.2. Данные от хостов выглядят так:
Адрес отправителя
| Порт отправителя
| Адрес получателя
| Порт получателя
| 172.16.6.5
|
| 192.0.2.2
|
| 172.16.4.5
|
| 192.0.2.2
|
| Маршрутизатор расчехляет IP-пакет от первого хоста, извлекает из него TCP-сегмент, распечатывает его и узнаёт, с какого порта устанавливается соединение. У него есть внешний адрес 198.51.100.2, на который будет меняться адрес из внутренней сети. Далее он выбирает свободный порт, например, 11874. И что он делает дальше? Все данные уровня приложений он упаковывает в новый TCP сегмент, где в качестве порта назначения по-прежнему остаётся 80 (именно на него ждёт коннектов WEB-сервер), а порт отправителя меняется с 23761 на 11874. Этот TCP-сегмент инкапсулируется в новый IP-пакет, где меняется IP-адрес отправителя с 172.16.6.5 на 198.51.100.2. То же самое происходит для пакета от второго хоста, только выбирается следующий свободный порт, например 11875. “Свободный” означает, что он ещё не занят другими такими соединениями. Данные, которые отправляются в интернет, теперь буду выглядеть так.
Адрес отправителя
| Порт отправителя
| Адрес получателя
| Порт получателя
| 198.51.100.2
|
| 192.0.2.2
|
| 198.51.100.2
|
| 192.0.2.2
|
| В свою NAT-таблицу он заносит данные отправителей и получателей
Локальный адрес отправителя
| Локальный порт отправителя
| Глобальный адрес отправителя
| Глобальный порт отправителя
| Адрес получателя
| Порт получателя
| 172.16.6.5
|
| 198.51.100.2
|
| 192.0.2.2
|
| 172.16.4.5
|
| 198.51.100.2
|
| 192.0.2.2
|
| Для WEB-сервера — это два совершенно разных запроса, которые он должен обработать каждый индивидуально. После этого он отсылает ответ, который выглядит так:
Адрес отправителя
| Порт отправителя
| Адрес получателя
| Порт получателя
| 192.0.2.2
|
| 198.51.100.2
|
| 192.0.2.2
|
| 198.51.100.2
|
| Когда один из этих пакетов доходит до нашего маршрутизатора, тот сопоставляет данные в этом пакете со своими записями в NAT-таблице. Если совпадение найдено, происходит обратная процедура — пакету и TCP сегменту возвращаются его изначальные параметры только в качестве назначения:
Адрес отправителя
| Порт отправителя
| Адрес получателя
| Порт получателя
| 192.0.2.2
|
| 172.16.6.5
|
| 192.0.2.2
|
| 172.16.4.5
|
| И теперь пакеты доставляется по внутренней сети компьютерам-инициаторам, которым и невдомёк даже, что где-то с их данными так жёстко обошлись на границе.
Каждое ваше обращение — это отдельное соединение. То есть попытались вы открыть WEB-страницу — это протокол HTTP, использующий порт 80. Для этого ваш компьютер должен установить TCP-сессию с удалённым сервером. Такая сессия (TCP или UDP) определяется двумя сокетами: локальный IP-адрес: локальный порт и удалённый IP-адрес: удалённый порт. В обычной ситуации у вас устанавливается одно соединение компьютер-сервер, в случае же NATа соединения будет как бы два:, маршрутизатор-сервер и компьютер думает, что у него есть сессия компьютер-сервер.
Настройка отличается совершенно незначительно: добавочным словом overload:
Router(config)#access-list 101 permit 172.16.4.0 0.0.0.255 Router(config)#ip nat inside source list 101 interface fa0/1 <b>overload</b> При этом, разумеется, сохраняется возможность настроить пул адресов:
Router(config)#ip nat pool lol_pool 198.51.100.2 198.51.103.14 Router(config)#access-list 100 permit 172.16.6.0 0.0.0.255 Router(config)#ip nat inside source list 100 pool lol_pool <b>overload</b> 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | Поиск по сайту:
|