среда, 2 января 2008 г.

iptables или подробнее о NAT на практике (часть 1)

У новичков в процессе изучения возникает много вопросов по поводу практического применения NAT (от англ. Network Address Translation — «преобразование сетевых адресов»), и даже прочитав огромный мануал по iptables не всегда удается с 1-го раза понять о чем же идет речь. Поэтому мы разберем эту вещь на практике. Если излагать в кратце что умеет NAT: механизм в сетях TCP/IP, позволяющий преобразовывать IP-адреса транзитных пакетов. Нужно это чтобы можно было имеея 1 ip адрес выделенный например провайдером сидеть в интернете целой сети.

Итак, представим что у нас есть локальная сеть 192.168.1.0 с маской 24. Допустим интернет-провайдер выделил для нас 1 ip адрес: пусть это будет 81.18.1.1(все совпадения случайны). Мы поставили на нужный компьютер debian (конечно можно и другую unix-подобную ОС поставить), определились с ip адресом шлюза для нашей локальной сети: пусть у нас это будет 192.168.1.1 ,настроили подключение с интернетом. В нашем частном случае все это удет выглядеть как на рисунке:



В нашей локальной сети все компьютеры должны иметь шлюз по умолчнию 192.168.1.1. Надеюсь на надо объяснять для чего это нужно. Если ваши пользователи локальной сети будут иметь полный доступ до Интернета,- то с помощью iptables это реализуется следующим образом. Допустим нам надо открыть доступ до интернета компьютеру с ip-адресом 192.168.1.22, тогда:
root@server# iptables -A POSTROUTING -t nat -s 192.168.1.22 -j MASQUERADE
Теперь ваш компьютер с ip-адресом 192.168.1.22 получит доступ до Интернета. Конечно может вы не захотите отрывать полный доступ, а захотите отрыть только получение и отправку электронной почты с сервера yandex.ru. Тогда вам необходимо в командной строке выполнить:
root@server# iptables -A POSTROUTING -t nat -s 192.168.1.22 -d 213.180.204.67 -p tcp --dport 110 -j MASQUERADE
и
root@server# iptables -A POSTROUTING -t nat -s 192.168.1.22 -d 87.250.251.38 -p tcp --dport 25 -j MASQUERADE
На это пока что все. Продолжение о возможностях NAT в следующей статье.

3 комментария:

Анонимный комментирует...

А как можно отменить сделанные изменения?

Анонимный комментирует...

Например так:
root@server# iptables -D POSTROUTING -t nat -s 192.168.1.22 -d 87.250.251.38 -p tcp --dport 25 -j MASQUERADE

morbo комментирует...

В случаях когда внешний адрес постоянный и заренне известен, лучше использовать SNAT.

MASQUERADE предназначен для интерфейсов с динамическими адресами, поэтому тратит больше ресурсов на отслеживание изменений IP-адреса на интерфейсе.