пятница, 1 апреля 2011 г.

Почта (и не только) через iptables

Порой бывает нужно дать почтовым клиентам внутри локальной сети доступ к внешним серверам. В сети очень много вариантов решения данной задачи, но в этом море очень сложно найти простой ответ, для начинающего пользователя. Зачастую даже и не знаешь как найти нужную информацию.

Надеюсь мой способ пригодится людям, столкнувшимся с подобной задачей.
Вот достаточно простой способ:

1. Разрешим пересылку пакетов
echo 1 > /proc/sys/net/ipv4/ip_forward
2. Командуем iptables пускать нас на почту, да и вообще куда угодно
а) для всех клиентов в подсети 192.168.0.0
sudo iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -o ppp0 -j MASQUERADE
б) для конкретного клиента по IP-адресу
sudo iptables -t nat -A POSTROUTING -s 192.168.0.22 -o ppp0 -j MASQUERADE
СЛЕДУЕТ ОБРАТИТЬ ВНИМАНИЕ НА СЛЕДУЮЩИЕ МОМЕНТЫ:
  1. Чтобы каждый раз не выполнять команду echo 1 > /proc/sys/net/ipv4/ip_forward, нужно в файле /etc/sysctl.conf раскомментировать (или вписать) такую строчку:
    net.ipv4.ip_forward=1
  2. Команду echo 1 > /proc/sys/net/ipv4/ip_forward не получится выполнить через sudo. Сначало нужно выполнить sudo su, а уже потом, с правами root-а делать echo
  3. На клиентской машине в качестве шлюза должен быть указан адрес компьютера, на котором настраиваем iptables.
  4. На клиентской машине должен быть указан адрес DNS сервера.
  5. После перезагрузки настройки iptables слетят, поэтому можно добавить команду, например эту: iptables -t nat -A POSTROUTING -s 192.168.0.22 -o ppp0 -j MASQUERADE в файл /etc/rc.local, чтобы она автоматически срабатывала при запуске системы
  6. Указав интерфейс ppp0, я имел ввиду внешний интерфейс, т.е. это может быть и eth0

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

  1. Весьма забавно. Почему именно почта? Это вообще похоже на первоначальную настройку iptables. MASQURADE рекомендую использовать только в случае с динамическим внешним IP-адресом. В других слуачях лучше DNAT (ниже нагрузка на проц).Хотя 1 маскарадинг вряд ли помешает. Ну и пример приведён при подключении через PPPоE, я думаю это нажо отметить в вашей статье, либо вместо ppp0 написать "внешний интерфейс". И ещё - правила iptables лучше хранить в отдельном файле (.sh) и добавить его в автозагрузку. Так легче править если правибла большие. По смыслу статьи - разрешиь почту по smtp и pop3 протоколу - значит открыть 25 и 110 порт. Вообще много можно рассказать. Если будет интересно - посетите мой ресурс studylinux.ru По iptables там пока нет материала, но думаю в скором времени будет :)

    ОтветитьУдалить
  2. о.теперь знаю как я интернет через вторую сетевуху раздам.спс

    ОтветитьУдалить