Трансляция сетевых адресов (NAT) - это технология, позволяющая нескольким устройствам совместно использовать один публичный IP-адрес. NAT обычно используется в домашних и офисных сетях для того, чтобы устройства частной сети могли выходить в Интернет через один публичный IP-адрес.
Маскарад же, как следует из названия, позволяет скрыть свою личность за маской или другим предполагаемым именем. Так и в мире компьютерных сетей один из видов трансляции сетевых адресов называется маскарадингом, который используется для скрытия личности устройств в частной сети путем замены их IP-адресов на IP-адрес маршрутизатора или шлюзового устройства.
Когда устройство в частной сети хочет связаться с устройством в Интернете, оно посылает пакет на шлюзовое устройство в частной сети, которое затем пересылает пакет в Интернет. Однако IP-адрес источника пакета - это частный IP-адрес устройства, который не действителен в Интернете. Для решения этой проблемы шлюзовое устройство заменяет IP-адрес источника пакета своим собственным публичным IP-адресом, чтобы устройство в Интернете воспринимало пакет как пришедший от шлюзового устройства, а не от частного устройства.
Реализация маскирования с помощью Iptables
Для реализации маскировки с помощью iptables необходимо добавить правило в одну из цепочек маршрутизации таблицы NAT. Цепочка постмаршрутизации используется для модификации пакетов, покидающих систему после их маршрутизации.
Шаг 1: Добавление правила маскирования в цепочку POSTROUTING
Выполните следующую команду в терминале Linux:
1 | iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE |
Эта команда добавляет в цепочку POSTROUTING таблицы NAT правило, которое соответствует всем исходящим пакетам, проходящим через интерфейс eth0, и заменяет их IP-адрес источника на IP-адрес интерфейса eth0.
- Опция -t используется для указания таблицы, с которой мы хотим работать, в данном случае это таблица NAT.
- Опция -A используется для добавления нового правила в цепочку.
- Опция -o используется для указания исходящего интерфейса, через который будут проходить пакеты.
- Опция -j используется для указания цели правила, которой в данном случае является MASQUERADE, что означает, что IP-адрес источника пакета должен быть замаскирован.
После добавления этого правила все исходящие пакеты, проходящие через интерфейс eth0, будут маскировать свой IP-адрес источника IP-адресом интерфейса eth0.
Шаг 2: Указание IP-адреса для маскирования
По умолчанию правило маскирования применяется ко всем исходящим пакетам на всех интерфейсах. Однако можно указать конкретный интерфейс для маскировки с помощью опции -s, за которой следует IP-адрес интерфейса.
Выполните следующую команду:
1 | iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o eth1 -j MASQUERADE |
Это правило маскировки применяется только к пакетам, выходящим через интерфейс eth1.
Шаг 3: Указание IP-адреса источника для маскирования
По умолчанию правило маскирования заменяет IP-адрес источника всех исходящих пакетов на IP-адрес исходящего интерфейса.
Выполните следующую команду, чтобы указать другой IP-адрес источника, используя опцию -to-source, за которой следует IP-адрес:
1 | iptables -t nat -A POSTROUTING -o eth0 --to-source 203.0.113.1 -j MASQUERADE |
Эта команда маскирует все исходящие пакеты с IP-адресом 203.0.113.1.
Шаг 4. Указание диапазона адресов назначения для исключения из маскирования
Иногда может потребоваться исключить из правила маскирования диапазон IP-адресов назначения.
Это можно сделать, добавив в цепочку PREROUTING правило, которое сопоставляет пакеты с исключенными адресами назначения и устанавливает на них специальную метку. Правило маскировки в цепочке POSTROUTING может быть настроено на пропуск пакетов с такой меткой.
Выполните следующую команду, чтобы исключить из маскарадинга диапазон IP-адресов 203.0.113.0/24:
1 2 | iptables -t mangle -A PREROUTING -d 203.0.113.0/24 -j MARK --set-mark 1 iptables -t nat -A POSTROUTING -o eth0 -m mark ! --mark 1 -j MASQUERADE |
Это лишь несколько примеров из множества опций, которые можно использовать для настройки поведения маскирования с помощью iptables. Благодаря гибкости, которую обеспечивает iptables, можно реализовать сложные сетевые конфигурации и политики безопасности в системе Linux.
Заключение
В этой статье мы рассмотрели, что такое маскарадинг и как его реализовать с помощью iptables. Маскарадинг - это полезная техника, позволяющая скрыть идентичность устройств в частной сети, и iptables предоставляет простой и гибкий способ ее реализации в системе Linux. Добавив правило маскировки в цепочку POSTROUTING таблицы NAT, можно добиться того, что все исходящие пакеты от устройств в частной сети будут маскироваться IP-адресом шлюзового устройства, что позволит им взаимодействовать с устройствами в Интернете, не раскрывая своей истинной идентичности.