Документация по руководству сервера
Целью IP Masquerading является предоставление машинам с частными, не маршрутизируемыми IP-адресами в сети доступа к Интернету через машину, выполняющую маскировку. Трафик из вашей частной сети, предназначенной для Интернета, необходимо манипулировать, чтобы ответы могли перенаправляться обратно на компьютер, который сделал запрос. Для этого ядро должно изменить IP-адрес source каждого пакета так, чтобы ответы направлялись обратно на него, а не на частный IP-адрес, который сделал запрос, что невозможно через Интернет. , Linux использует Connection Tracking (conntrack), чтобы отслеживать, какие соединения принадлежат каким машинам, и соответственно перенаправлять каждый возвращаемый пакет. Таким образом, трафик, выходящий из вашей частной сети, «маскируется» как исходящий с вашего шлюза Ubuntu. Этот процесс упоминается в документации Microsoft как общий доступ к подключению к Интернету.
Инструкция по маскировке IP
Это можно сделать с помощью одного правила iptables, которое может немного отличаться в зависимости от конфигурации вашей сети:
sudo iptables -t nat -A POSTROUTING -s 192.168.0.0/16 -o ppp0 -j MASQUERADE
Приведенная выше команда предполагает, что ваше личное адресное пространство – 192.168.0.0/16, а ваше устройство с выходом в Интернет – ppp0. Синтаксис разбит следующим образом:
- -t nat – правило заходить в таблицу nat
- -A POSTROUTING – правило должно быть добавлено (-A) к цепочке POSTROUTING
- -s 192.168.0.0/16 – правило применяется к трафику, исходящему из указанного адресного пространства
- -o ppp0 – правило применяется к трафику, запланированному для маршрутизации через указанное сетевое устройство
- -j MASQUERADE – трафик, соответствующий этому правилу, должен «перепрыгнуть» (-j) к цели MASQUERADE для манипуляции, как описано выше
Каждая цепочка в таблице фильтров (таблица по умолчанию и где происходит большая или вся фильтрация пакетов) имеет политику по умолчанию ACCEPT, но если вы создаете межсетевой экран в дополнение к устройству шлюза, вы можете установите политики в DROP или REJECT, и в этом случае ваш маскарадированный трафик должен быть разрешен через цепочку FORWARD для работы вышеуказанного правила:
sudo iptables -A FORWARD -s 192.168.0.0/16 -o ppp0 -j ПРИНЯТЬ
sudo iptables -A FORWARD -d 192.168.0.0/ 16-м состоянии - состояние УСТАНОВЛЕНО, СВЯЗАНО -i ppp0 -j ПРИНЯТЬ
Приведенные выше команды позволят всем соединениям из вашей локальной сети с Интернетом и всему трафику, связанному с этими соединениями, возвращаться на компьютер, который их инициировал.