Настройка NATa
ВНИМАНИЕ: команды предваряемые символом '#
' должны выполняться с правами root (Суперпользователь). Открыв терминал (или находясь в консоли) с правами обычного пользователя, введите команду $ su -
для повышения уровня привелегий. Символы '$
' и '#
' в начале строки не являются частью команды и не должны вводится. Прочие команды могут выполняться с правами обыкновенного пользователя.
SNAT используется для преобразования сетевых адресов (Source Network Address Translation), т.е. изменение исходящего IP адреса в IP заголовке пакета. Например, это действие можно использовать для предоставления выхода в Интернет другим компьютерам из локальной сети, имея лишь один уникальный IP адрес. Для этого. необходимо включить пересылку пакетов (forwarding) в ядре и затем создать правила, которые будут транслировать исходящие IP адреса нашей локальной сети в реальный внешний адрес. В результате, внешний мир ничего не будет знать о нашей локальной сети, он будет считать, что запросы пришли с нашего брандмауэра.
SNAT допускается выполнять только в таблице nat, в цепочке POSTROUTING. Другими словами, только здесь допускается преобразование исходящих адресов. Если первый пакет в соединении подвергся преобразованию исходящего адреса, то все последующие пакеты, из этого же соединения, будут преобразованы автоматически и не пойдут через эту цепочку правил.
Для включения этого режима необходимо:
1. Выполнить для разрешения трафика пакетов между интрефейсами:
# echo 1 > /proc/sys/net/ipv4/ip_forward
или, для включения режима при каждом запуске:
# echo net.ipv4.ip_forward = 1 > /etc/sysctl.conf
# sysctl -p /etc/sysctl.conf
Чтобы при загрузке данная опция сохранялась необходимо в файле /etc/sysctl.conf отредактировать net.ipv4.ip_forward = 1
2. Разрешаем FORWARD:
# iptables -t filter -A FORWARD -s {LOCAL_IP} -j ACCEPT
# iptables -t filter -A FORWARD -d {LOCAL_IP} -j ACCEPT
где {LOCAL_IP}
- подсеть или локальная IP.
3. Устанавливаем NAT:
# iptables -t nat -A POSTROUTING -s {LOCAL_IP} -j SNAT --to-source {EXTERNAL_IP}
где {EXTERNAL_IP}
- внешняя IP или диапазон внешних IP.
Для того, чтобы настройки сохранились при следующем запуске, необходимо выполнить команду:
# service iptables save
Возможно использовать вместо SNAT - MASQUERADE, но он белее ресурсоёмкий из-за того, что iptables автоматически выбирает внешний интерфейс. Рекомендуется использовать при динамически назначаемом внешнем IP-адресе.
Источники: