Целью IP Masquerading является предоставление машинам с частными, не маршрутизируемыми IP-адресами в сети доступа к Интернету через машину, выполняющую маскировку. Трафик из вашей частной сети, предназначенной для Интернета, необходимо манипулировать, чтобы ответы могли перенаправляться обратно на компьютер, который сделал запрос. Для этого ядро должно изменить исходный IP-адрес каждого пакета так, чтобы ответы направлялись обратно на него, а не на частный IP-адрес, который сделал запрос, что невозможно через Интернет. Linux использует отслеживание соединений (conntrack), чтобы отслеживать, какие соединения принадлежат каким машинам, и соответственно перенаправлять каждый возвращаемый пакет. Таким образом, трафик, выходящий из вашей частной сети, «маскируется» как исходящий с вашего шлюза Ubuntu. Этот процесс упоминается в документации Microsoft как общий доступ к подключению к Интернету.
Инструкция по IP Маскарадинг
Это можно сделать с помощью одного правила iptables, которое может немного отличаться в зависимости от конфигурации вашей сети:
Приведенная выше команда предполагает, что ваше личное адресное пространство — 192.168.0.0/16, а ваше устройство с выходом в Интернет — ppp0. Синтаксис разбит следующим образом:
- -т нат — Правило состоит в том, чтобы войти в таблицу nat.
- -РАЗМЕЩЕНИЕ — Правило должно быть добавлено (-A) к цепочке POSTROUTING.
- -с 192.168.0.0/16 — Правило применяется к трафику, исходящему из указанного адресного пространства.
- -о ppp0 — Правило применяется к трафику, запланированному для маршрутизации через указанное сетевое устройство.
- -J MASQUERADE — Трафик, соответствующий этому правилу, предназначен для «перехода» (-j) к цели MASQUERADE для манипуляции, как описано выше.
Каждая цепочка в таблице фильтров (таблица по умолчанию и где происходит большая или вся фильтрация пакетов) имеет политику по умолчанию ACCEPT, но если вы создаете брандмауэр в дополнение к устройству шлюза, возможно, вы установили политики на DROP или REJECT, и в этом случае ваш маскарадированный трафик должен быть разрешен через цепочку FORWARD для работы вышеуказанного правила:
Приведенные выше команды позволят всем соединениям из вашей локальной сети с Интернетом и всему трафику, связанному с этими соединениями, возвращаться на компьютер, который их инициировал.