Настройка NATa

Материал из FedoraMD.org Wiki
Версия от 11:34, 30 марта 2010; VasileVsx (обсуждение | вклад) (sysctl usage)
(разн.) ← Предыдущая | Текущая версия (разн.) | Следующая → (разн.)
Перейти к навигации Перейти к поиску

ВНИМАНИЕ: команды предваряемые символом '#' должны выполняться с правами 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-адресе.


Источники: