Введение
В 1981 году был принят протокол IPv4, который основывался на 32-битной адресации и мог адресовать чуть более 4 млрд. адресов (2^32 степени). В то время все были уверены, что этого хватит навсегда.
Однако развитие сети и количество подключенных к ней устройств превысило самые смелые прогнозы, и как следствие, сначала возник дефицит адресов, а затем они и вовсе закончились. По крайней мере в Европе это событие произошло 17 сентября 2012 года. В этот день Европейская IP-регистратура RIPE NCC (Réseaux IP Européens Network Coordination Centre) сообщила о том, что последний блок IPv4-адресов был распределен на прошлой неделе.
Однако есть три диапазона адресов называемых «частными». Так же можно встретить наименования «серые» и «приватные». Эти адреса не маршрутизируются в сети Интернет и позволяют использовать их любому человеку. Вот эти адреса:
- 10.0.0.0/8
- 172.16-31.0.0/16
- 192.168.0-255.0/24
Понятно, что эти адреса могут многократно дублироваться и у вашего соседа может быть тот же диапазон адресов что и у вас. Однако, для работы в Интернет эти адреса необходимо преобразовать в публичные адреса выданные вам оператором связи. Так же иногда требуется обеспечить «видимость» сервера находящегося в таком диапазоне адресов снаружи.
И то и другое обеспечивается технологией трансляции адресов (Network Address Translation), а сокращенно NAT.
Как вы знаете в заголовке IP-пакета содержится следующая информация:
- Адрес и порт источника (source address и source port);
- Адрес и порт назначения (destination Address и destination port).
В маршрутизаторе для трансляции адресов предусмотрено две цепочки:
- src-nat (меняет адрес и, возможно порт источника);
- dst-nat (меняет адрес и, возможно порт назначения).
Пакет при обработке маршрутизатором сначала попадает в цепочку dst-nat, а затем после обработки фильтром пакетов и принятия решения об маршрутизации попадает в цепочку src-nat.
Вот диаграмма обработки трафика маршрутизатором,из которой видно, что пакет, прийдя на маршрутизатор, сначала попадает в цепочку prerouting, одним из этапов которой является Destination NAT, а после прохождения всех основных этапов обработки, попадает в цепочку postrouting, где выполняется этап Source NAT.
Из этого следует два важных вывода:
- Адрес и порт назначения пакета будут изменены в цепочке dst-nat до поступления в цепочки input или forward. А это значит, что в файрволле надо писать правила с учетом уже преобразованного адреса назначения пакета (т. е. если у вас внутри сети есть терминальный сервер с адресом 192.168.0.15 и портом 3389, то именно этот адрес и порт надо использовать в файрволле, не глядя на то, что снаружи у вас указан другой адрес и порт);
- Один и тот же пакет может быть обработан сначала в dst-nat, а затем в src-nat.
Так же нужно учитывать, что правилом NAT обрабатывается только первый пакет соединения. Далее этим занимается Connection Tracker.
Вся настройка NAT производится в меню /IP firewall nat. Работаю те же правила выбора пакета, обозначенные в этой статье с некоторыми исключениями. А именно:
- В цепочке dst-nat недоступен выбор out-interface. Так как цепочка отрабатывает до принятия решения о маршрутизации и машрутизатор еще не определил этот интерфейс.
- В цепочке src-nat недоступен выбор in-interface. Причины аналогичны.
- Не будут корректно работать правила связанные с количеством пакетов или объемом трафика, т. к. обрабатывается только первый пакет соединения.