Форум русскоязычного сообщества Ubuntu


Следите за новостями русскоязычного сообщества Ubuntu в Twitter-ленте @ubuntu_ru_loco

Автор Тема: HOWTO: Iptables для новичков  (Прочитано 462775 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн letsGo

  • Новичок
  • *
  • Сообщений: 4
    • Просмотр профиля
Re: HOWTO: Iptables для новичков
« Ответ #15 : 16 Февраля 2008, 23:14:44 »
получилось, спасибо огромное zeus  ;)

Оффлайн grut

  • Новичок
  • *
  • Сообщений: 5
    • Просмотр профиля
Re: HOWTO: Iptables для новичков
« Ответ #16 : 26 Февраля 2008, 11:48:59 »
Здравствуйте.
Расскажите, пожалуйста, как настроить iptables для домашнего использования  с учетом фильтрации пакетов по содержанию. А именно, как заставить блокировать пакеты, которые содержат java-скрипты.

Оффлайн MadKox

  • Активист
  • *
  • Сообщений: 441
  • =)
    • Просмотр профиля
    • Моя страница на Launchpad
Re: HOWTO: Iptables для новичков
« Ответ #17 : 26 Февраля 2008, 13:30:33 »
А вообще, после тщательного прокуривания вот этого http://gazette.linux.ru.net/archive/iptables-tutorial-1.1.19.tar.bz2 вопросов остаться не должно.

 :-[ у меня один вопросик таки остался... В мануале говорится о подгружении дополнительных модулей, в твоем варианте rc.firewall.txt строки инициализации модулей  закоментированы. Отсюда вопрос: в убунтовском iptables все необходимые модули уже стоят при сборке?
Homo homini admini est...

Оффлайн Lion-Simba

  • Старожил
  • *
  • Сообщений: 1126
    • Просмотр профиля
Re: HOWTO: Iptables для новичков
« Ответ #18 : 26 Февраля 2008, 14:16:57 »
Здравствуйте.
Расскажите, пожалуйста, как настроить iptables для домашнего использования  с учетом фильтрации пакетов по содержанию. А именно, как заставить блокировать пакеты, которые содержат java-скрипты.
Пакеты содержат информацию. iptables не вникает в суть того, что за информация в них лежит (за исключением некоторых моментов). Он работает исключительно с заголовками.

С java вам надо смотреть в сторону прокси-серверов, например privoxy и squid.
Оказываю индивидуальную платную техподдержку широкого профиля. Обращаться в ЛС или Jabber.

Оффлайн Gundos

  • Новичок
  • *
  • Сообщений: 33
    • Просмотр профиля
Re: HOWTO: Iptables для новичков
« Ответ #19 : 26 Февраля 2008, 16:45:26 »
А вообще, после тщательного прокуривания вот этого http://gazette.linux.ru.net/archive/iptables-tutorial-1.1.19.tar.bz2 вопросов остаться не должно.

 :-[ у меня один вопросик таки остался... В мануале говорится о подгружении дополнительных модулей, в твоем варианте rc.firewall.txt строки инициализации модулей  закоментированы. Отсюда вопрос: в убунтовском iptables все необходимые модули уже стоят при сборке?


###########################################################################
#
# 2. Module loading.
#

#
# Needed to initially load modules
#

#/sbin/depmod -a

#
# 2.1 Required modules
#

#/sbin/modprobe ip_tables
#/sbin/modprobe ip_conntrack
#/sbin/modprobe iptable_filter
#/sbin/modprobe iptable_mangle
#/sbin/modprobe iptable_nat
#/sbin/modprobe ipt_LOG
#/sbin/modprobe ipt_limit
#/sbin/modprobe ipt_state

#
# 2.2 Non-Required modules
#

#/sbin/modprobe ipt_owner
#/sbin/modprobe ipt_REJECT
#/sbin/modprobe ipt_MASQUERADE
/sbin/modprobe ip_conntrack_ftp
#/sbin/modprobe ip_conntrack_irc
#/sbin/modprobe ip_nat_ftp
#/sbin/modprobe ip_nat_irc

###########################################################################
#
# 3. /proc set up.
#

#
# 3.1 Required proc configuration
#

echo "1" > /proc/sys/net/ipv4/ip_forward

#
# 3.2 Non-Required proc configuration
#

echo "1" > /proc/sys/net/ipv4/conf/all/rp_filter
#echo "1" > /proc/sys/net/ipv4/conf/all/proxy_arp
#echo "1" > /proc/sys/net/ipv4/ip_dynaddr
echo "1" > /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts
echo "128" > /proc/sys/net/ipv4/ip_default_ttl

###########################################################################

Вот кусочек моего рабочего скрипта. Основные модули уже есть, по крайней мере мне хватает.
« Последнее редактирование: 26 Февраля 2008, 16:59:57 от Gundos »

Оффлайн Gundos

  • Новичок
  • *
  • Сообщений: 33
    • Просмотр профиля
Re: HOWTO: Iptables для новичков
« Ответ #20 : 26 Февраля 2008, 17:28:36 »
Размещаю свой переработанный под шаблон скрипт настройки сетевого экрана.
 
Код снабжен комментариями, и адаптирован под следующие задачи:
1 Сетевой экран с политикой "что не разрешено, то запрещено"
2 Работа с тремя сетями: LOCAL- некоторая районная домашняя сеть, DMZ-ваша личная квартирная сетка, INET-интернет
3 Выполнение трансляции сетевых адресов получателя в направлениях DMZ->INET, DMZ->LOCAL, INET->DMZ. В случаях как статического, так и динамического внешнего IP.
4 Фильтрация некорректного траффика

Это должен быть хороший шаблон для индивидуальной настройки.
Перед применением внимательно прочитать и задать необходимые переменные.

# !bin/sh
###########################################################################

#
# Очистка таблиц, установка политик в значения "по умолчанию"
#
IPTABLES="/sbin/iptables"

#
# Установка стандартных политик в таблице filter.
#
$IPTABLES -P INPUT ACCEPT
$IPTABLES -P FORWARD ACCEPT
$IPTABLES -P OUTPUT ACCEPT

#
# Установка стандартных политик в таблице nat.
#
$IPTABLES -t nat -P PREROUTING ACCEPT
$IPTABLES -t nat -P POSTROUTING ACCEPT
$IPTABLES -t nat -P OUTPUT ACCEPT

#
# Установка стандартных политик в таблице mangle.
#
$IPTABLES -t mangle -P PREROUTING ACCEPT
$IPTABLES -t mangle -P OUTPUT ACCEPT

#
# Удаление всех правил во всех таблицах.
#
$IPTABLES -F
$IPTABLES -t nat -F
$IPTABLES -t mangle -F
#
# Удаление пользовательских правил во всех таблицах.
#
$IPTABLES -X
$IPTABLES -t nat -X
$IPTABLES -t mangle -X

###########################################################################
# 1. Конфигурационные настройки.
#

#
# 1.1 Конфигурация интернет.
#

INET_IP="77.222.234.151"
INET_IFACE="ppp0"

# Очевидно, что это интернет ip адрес и интерфейс через который осуществляется доступ в интернет.
# Если у Вас динамически изменяющийся интернет ip адрес, в этом случае переменная INET_IP не устанавливается.

#
# 1.1.1 DHCP
#

#
# 1.1.2 PPPoE
#

#
# 1.2 Конфигурация локальной сети.
#

LAN_IP="10.2.10.146"
LAN_IP_RANGE="10.0.0.0/8"
LAN_IFACE="eth0"

# Здесь добавилась переменная LAN_IP_RANGE это диапазон ip адресов относящихся к сети LOCAL, (Некий районный провайдер), заданный новомодным способом, могло быть и так  10.0.0.0/255.0.0.0

#
# 1.3 DMZ.
#

DMZ_IP="10.11.11.1"
DMZ_IP_RANGE="10.11.11.0/28"
DMZ_IFACE="eth1"

DMZ_HTTP_IP="10.11.11.2"
DMZ_FTP_IP="10.11.11.2"
DMZ_GAME_IP="10.11.11.2"
DMZ_MYSQL_IP="10.11.11.2"

# Всё ясно, конфигурация маленькой сетки на 14 машин. Видно, что http/ftp/game/mysql-сервер это один и тот же хост. Разумеется ip адреса и размер сети вы определяете самостоятельно. (Это ваша квартирная сеть)

#
# 1.4 Конфигурация обратной петли Loopback.
#

LO_IFACE="lo"
LO_IP="127.0.0.1"
LO_IP_RANGE="127.0.0.0/8"

# Без комментариев.

#
# 1.5 Настройка IPTables.
#

IPTABLES="/sbin/iptables"

#Это путь до iptables, проверьте и исправьте если он иной.

#
# 1.6 Друзья
#

FRIEND_1="10.2.10.146" # Вася

#Это адреса друзей или доверенных хостов, список можно и не создавать.

#
# 1.6 Порты
#

MYSQL_PORT="3306"
HTTP_PORT="80"
HTTPS_PORT="443"
FTP_PORT="21"
TORRENT_PORT="6881"

# Это список портов которые используются вашими сетевыми приложениями. При написании правил эти переменные можно и не использовать.

###########################################################################
#
# 2. Module loading.
#

#
# Needed to initially load modules
#

#/sbin/depmod -a

#
# 2.1 Required modules
#

#/sbin/modprobe ip_tables
#/sbin/modprobe ip_conntrack
#/sbin/modprobe iptable_filter
#/sbin/modprobe iptable_mangle
#/sbin/modprobe iptable_nat
#/sbin/modprobe ipt_LOG
#/sbin/modprobe ipt_limit
#/sbin/modprobe ipt_state

#
# 2.2 Non-Required modules
#

#/sbin/modprobe ipt_owner
#/sbin/modprobe ipt_REJECT
#/sbin/modprobe ipt_MASQUERADE
/sbin/modprobe ip_conntrack_ftp
#/sbin/modprobe ip_conntrack_irc
#/sbin/modprobe ip_nat_ftp
#/sbin/modprobe ip_nat_irc

###########################################################################
#
# 3. /proc set up.
#

#
# 3.1 Required proc configuration
#

echo "1" > /proc/sys/net/ipv4/ip_forward
# Разрешаем компьютеру выступать в роли маршрутизатора.

#
# 3.2 Non-Required proc configuration
#

echo "1" > /proc/sys/net/ipv4/conf/all/rp_filter
# Смысл этого параметра достаточно прост -- все, что поступает к нам, проходит проверку на соответствие исходящего адреса с нашей таблицей маршрутизации и такая проверка считается успешной, если принятый пакет предполагает передачу ответа через тот же самый интерфейс.

#echo "1" > /proc/sys/net/ipv4/conf/all/proxy_arp
#echo "1" > /proc/sys/net/ipv4/ip_dynaddr

echo "1" > /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts
# Игнорируются широковещательные пинги.

#echo "128" > /proc/sys/net/ipv4/ip_default_ttl
# Здесь можно изменить TTL по умоглчанию

# Второй и третий разделы посвящены тонкой настройке и загружаемым модулям, их описание несколько выходит за рамки тематики этой статьи, хотя при необходимости будут ссылки и на эти разделы.




###########################################################################
#
# 4. Установка правил.
#

######
# 4.1 Таблица filter
#

#
# 4.1.1 Установка политик
#

$IPTABLES -P INPUT DROP
$IPTABLES -P OUTPUT DROP
$IPTABLES -P FORWARD ACCEPT

# Этим мы зададим политики «по умолчанию» для цепочек в таблице filter, выполняющиеся если пакет данных не подойдёт ни под одно из правил в цепочке. Если цепочка и таблица не указаны специально то используется таблица filter и цепочка input.

#
# 4.1.2 Создание пользовательских цепочек
#

# Никто не говорил, что нельзя создать свои цепочки для правил и рулить пакеты  для проверки в них.

#
# Создание цепочки для некорректных TCP пакетов
#

$IPTABLES -N bad_tcp_packets

#
# Создание раздельных цепочек для ICMP, TCP и UDP to traverse
#

$IPTABLES -N allowed
$IPTABLES -N tcp_packets
$IPTABLES -N udp_packets
$IPTABLES -N icmp_packets

#
# 4.1.3 Заполнение пользовательских цепочек
#

#
# bad_tcp_packets цепочка
#

$IPTABLES -A bad_tcp_packets -p tcp --tcp-flags SYN,ACK SYN,ACK -m state --state NEW -j REJECT --reject-with tcp-reset
$IPTABLES -A bad_tcp_packets -p tcp ! --syn -m state --state NEW -j LOG --log-prefix "New not syn:"
$IPTABLES -A bad_tcp_packets -p tcp ! --syn -m state --state NEW -j DROP

# Этими правилами отсекаются некорректные tcp пакеты. В неё они попадут в первую очередь.

#
# Допускающая цепочка
#

$IPTABLES -A allowed -p TCP --syn -j ACCEPT
$IPTABLES -A allowed -p TCP -m state --state ESTABLISHED,RELATED -j ACCEPT
$IPTABLES -A allowed -p TCP -j DROP

# Эта цепочка пропустит далее только те пакеты которые корректно пытаются открыть новое соединение или относятся к уже открытому, прочие сбрасываются. На эту цепочку будут ссылаться все правила для TCP.

#
# TCP правила
#

$IPTABLES -A tcp_packets -p TCP --dport $FTP_PORT -j allowed
$IPTABLES -A tcp_packets -p TCP --dport $HTTP_PORT -j allowed

# Добавте сюда аналогичные правила для разрешения соединения с вашими сетевыми приложениями по протоколу TCP.

#
# UDP порты
#

$IPTABLES -A udp_packets -p UDP --destination-port 123 -j ACCEPT

# Это правило позволяет получать информацию от служб точного времени. Добавте сюда аналогичные правила для разрешения соединения с вашими сетевыми приложениями по протоколу UDP.

#
# In Microsoft Networks you will be swamped by broadcasts. These lines
# will prevent them from showing up in the logs.
#

$IPTABLES -A udp_packets -p UDP -i $INET_IFACE -d 255.255.255.255 --dport 135:139 -j DROP
$IPTABLES -A udp_packets -p UDP -i $LAN_IFACE -d 255.255.255.255 --dport 135:139 -j DROP

# Это защита от мусора рассылаемого компами со службой мелкомягких сетей.

#
# If we get DHCP requests from the Outside of our network, our logs will
# be swamped as well. This rule will block them from getting logged.
#

$IPTABLES -A udp_packets -p UDP -i $INET_IFACE -d 255.255.255.255 --destination-port 67:68 -j DROP
$IPTABLES -A udp_packets -p UDP -i $LAN_IFACE -d 255.255.255.255 --destination-port 67:68 -j DROP

# Эти правила отсекают широковешательные запросы к DHCP серверу, если у вас функционирует служба DHCP закомментируйте эти правила.

#
# ICMP правила
#

$IPTABLES -A icmp_packets -p ICMP --icmp-type 8 -j ACCEPT
$IPTABLES -A icmp_packets -p ICMP --icmp-type 11 -j ACCEPT

# Здесь указываем какие типы ICMP пакетов пропустит сетевой экран.

#
# 4.1.4 INPUT цепочка
#

#
# Некорректные и недопустимые пакеты не ждут
#

$IPTABLES -A INPUT -p tcp -j bad_tcp_packets

# Это правило заруливает все пакеты на проверку корректности в цепочку bad_tcp_packets, созданную ранее, затем они попадут на проверку соответсвия портов назначения (tcp_packets) и если на запрашиваемый порт соединение разрешено происходит заключительная проверка корректности (allowed).

#
# Правила для безопасных маршрутов
#

$IPTABLES -A INPUT -p ALL -i $DMZ_IFACE -s $DMZ_IP_RANGE -j ACCEPT
$IPTABLES -A INPUT -p ALL -i $LO_IFACE -s $LO_IP_RANGE -j ACCEPT
$IPTABLES -A INPUT -p ALL -i $LO_IFACE -s $LAN_IP -j ACCEPT
$IPTABLES -A INPUT -p ALL -i $LO_IFACE -s $INET_IP -j ACCEPT
$IPTABLES -A INPUT -p ALL -i $LO_IFACE -s $DMZ_IP -j ACCEPT

# Здесь укажем направления по которому движется безопасный траффик.

#
# Правила для входящих пакетив из локальной сети.
#

$IPTABLES -A INPUT -p ALL -d $LAN_IP -m state --state ESTABLISHED,RELATED -j ACCEPT
$IPTABLES -A INPUT -p TCP -i $LAN_IFACE -j tcp_packets
$IPTABLES -A INPUT -p UDP -i $LAN_IFACE -j udp_packets
$IPTABLES -A INPUT -p ICMP -i $LAN_IFACE -j icmp_packets

# Этими правилами разруливаем пакеты по цепочкам в зависимости от протокола для траффика из сети LOCAL и пропустим траффик относящийся к уже открытым соединениям (первое правило)

#
# Правила для входящих пакетив из интернета.
#

$IPTABLES -A INPUT -p ALL -d $INET_IP -m state --state ESTABLISHED,RELATED -j ACCEPT
$IPTABLES -A INPUT -p TCP -i $INET_IFACE -j tcp_packets
$IPTABLES -A INPUT -p UDP -i $INET_IFACE -j udp_packets
$IPTABLES -A INPUT -p ICMP -i $INET_IFACE -j icmp_packets

# Этими правилами разруливаем пакеты по цепочкам в зависимости от протокола для траффика из сети INET и пропустим траффик относящийся к уже открытым соединениям (первое правило)


#
# Журналируются сброшенные пакеты для отладки.
#

$IPTABLES -A INPUT -m limit --limit 3/minute --limit-burst 3 -j LOG --log-level DEBUG --log-prefix "IPT INPUT packet died: "

#
# 4.1.5 FORWARD цепочка
#

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


#
# Некорректные TCP пакеты не ждут
#

$IPTABLES -A FORWARD -p tcp -j bad_tcp_packets

# Это правило заруливает все пакеты на проверку корректности в цепочку bad_tcp_packets, созданную ранее, затем они попадут на проверку соответсвия портов назначения (tcp_packets) и если на запрашиваемый порт соединение разрешено происходит заключительная проверка корректности (allowed).

#
# Пропускаются актуальные пакеты.
#

$IPTABLES -A FORWARD -s ! $DMZ_IP -d $DMZ_MYSQL_IP -p tcp --sport $MYSQL_PORT -j REJECT --reject-with tcp-reset
$IPTABLES -A FORWARD -s ! $DMZ_IP -d $DMZ_FTP_IP -p tcp --sport $FTP_PORT -j REJECT --reject-with tcp-reset

# Из правил видно, что если к MySQL серверу и FTP серверу обращаются с ip отличного от $DMZ_IP то соединение запрещается.

#
# Журналируются сброшенные пакеты для отладки.
#

$IPTABLES -A FORWARD -m limit --limit 3/minute --limit-burst 3 -j LOG --log-level DEBUG --log-prefix "IPT FORWARD packet died: "

#
# 4.1.6 OUTPUT цепочка
#

#
# Некорректные TCP пакеты не ждут.
#

$IPTABLES -A OUTPUT -p tcp -j bad_tcp_packets

# Это правило заруливает все пакеты на проверку корректности в цепочку bad_tcp_packets, созданную ранее, затем они попадут на проверку соответсвия портов назначения (tcp_packets) и если на запрашиваемый порт соединение разрешено происходит заключительная проверка корректности (allowed)

#
# Специальные OUTPUT правила разрешающие который IP's разрешены.
#

$IPTABLES -A OUTPUT -p ALL -s $LO_IP_RANGE -j ACCEPT
$IPTABLES -A OUTPUT -p ALL -s $LAN_IP -j ACCEPT
$IPTABLES -A OUTPUT -p ALL -s $INET_IP -j ACCEPT
$IPTABLES -A OUTPUT -p ALL -s $DMZ_IP -j ACCEPT

# Разрешаем уходить с нашего сетевого экрана только траффику с указанными ip адресами или их диапазоном.

#
# Журналируются сброшенные пакеты для отладки.
#

$IPTABLES -A OUTPUT -m limit --limit 3/minute --limit-burst 3 -j LOG --log-level DEBUG --log-prefix "IPT OUTPUT packet died: "

######
# 4.2 nat table
#

#
# 4.2.1 Установка политик
#

#
# 4.2.2 Создание пользовательских цепочек
#

#
# 4.2.3 Заполнение пользовательских цепочек
#

#
# 4.2.4 PREROUTING chain
#

$IPTABLES -t nat -A PREROUTING -d $LAN_IP -p tcp -m tcp --dport $HTTP_PORT -j DNAT --to-destination $DMZ_HTTP_IP
#$IPTABLES -t nat -A PREROUTING -d $LAN_IP -p tcp -m tcp --dport $FTP_PORT -j DNAT --to-destination $DMZ_FTP_IP

# Это правило заменит адрес получателя в запросе к HTTP сервру с адреса $LAN_IP на адрес $DMZ_HTTP_IP, перебросив этим соединение в вашу домашнюю сеть, обратная подстановка будет осуществляться автоматически. Раскомментируйте второе правило если у вас есть в домашней сети ftp сервер, к которому вы хотите разрешить доступ из сети LOCAL, добавляйте свои правила при необходимости. Аналогично будут выглядеть правила для переброса траффика из интернета (INET), только переменная $LAN_IP меняется на $INET_IP.

#
# 4.2.5 POSTROUTING chain
#

$IPTABLES -t nat -A POSTROUTING -s $DMZ_IP_RANGE -o $LAN_IFACE -j SNAT --to-source $LAN_IP
$IPTABLES -t nat -A POSTROUTING -s $DMZ_IP_RANGE -o $INET_IFACE -j SNAT --to-source $INET_IP
#$IPTABLES -t nat -A POSTROUTING -s $DMZ_IP_RANGE -o $INET_IFACE -j MASQUERADE

# Эти правила нужны для того что бы на машинах в вашей домашней сети (DMZ) были доступны сеть LOCAL и INET. Если у вас в сети LOCAL есть друзья и ваш компьютер работает круглосуточно вы можете существенно сэкономить на оплате интернета грамотно использовав эту цепочку ;)

# Если у Вас нет "белого" ip адреса раскомментируйте третие правило, удалите или закомментируйте второе и раскомментируйте строку [echo "1" > /proc/sys/net/ipv4/ip_dynaddr] в третьем разделе.

#
# 4.2.6 OUTPUT chain
#

$IPTABLES -t nat -A OUTPUT -d $LAN_IP -p tcp -m tcp --dport 80 -j DNAT --to-destination $DMZ_HTTP_IP
$IPTABLES -t nat -A OUTPUT -d $INET_IP -p tcp -m tcp --dport 80 -j DNAT --to-destination $DMZ_HTTP_IP

# Эти правила нужны для корректной связи с вашим HTTPсервером в сети DMZ при соединениях исходящих с брандмауэра

######
# 4.3 mangle table
#

#
# 4.3.1 Установка политик
#

#
# 4.3.2 Создание пользовательских цепочек
#

#
# 4.3.3 Заполнение пользовательских цепочек
#

#
# 4.3.4 PREROUTING chain
#

#
# 4.3.5 INPUT chain
#

#
# 4.3.6 FORWARD chain
#

#
# 4.3.7 OUTPUT chain
#

#
# 4.3.8 POSTROUTING chain
#

Оффлайн Burner

  • Новичок
  • *
  • Сообщений: 3
    • Просмотр профиля
    • http://burn.nov.ru/
Re: HOWTO: Iptables для новичков
« Ответ #21 : 03 Марта 2008, 15:58:53 »
Народ помогайте )

ввожу iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
и пинг интернета сразу подскакивает до 100 .. выключаю этот параметр и пинг 10

в чём дело может быть ?

Оффлайн Gundos

  • Новичок
  • *
  • Сообщений: 33
    • Просмотр профиля
Re: HOWTO: Iptables для новичков
« Ответ #22 : 03 Марта 2008, 18:20:24 »
6.5.6. Действие MASQUERADE

Маскарадинг (MASQUERADE) в основе своей представляет то же самое, что и SNAT только не имеет ключа --to-source. Причиной тому то, что маскарадинг может работать, например, с dialup подключением или DHCP, т.е. в тех случаях, когда IP адрес присваивается устройству динамически. Если у вас имеется динамическое подключение, то нужно использовать маскарадинг, если же у вас статическое IP подключение, то бесспорно лучшим выходом будет использование действия SNAT.

Маскарадинг подразумевает получение IP адреса от заданного сетевого интерфейса, вместо прямого его указания, как это делается с помощью ключа --to-source в действии SNAT. Действие MASQUERADE имеет хорошее свойство - "забывать" соединения при остановке сетевого интерфейса. В случае же SNAT, в этой ситуации, в таблице трассировщика остаются данные о потерянных соединениях, и эти данные могут сохраняться до суток, поглощая ценную память. Эффект "забывчивости" связан с тем, что при остановке сетевого интерфейса с динамическим IP адресом, есть вероятность на следующем запуске получить другой IP адрес, но в этом случае любые соединения все равно будут потеряны, и было бы глупо хранить трассировочную информацию.

Как вы уже поняли, действие MASQUERADE может быть использовано вместо SNAT, даже если вы имеете постоянный IP адрес, однако, невзирая на положительные черты, маскарадинг не следует считать предпочтительным в этом случае, поскольку он дает большую нагрузку на систему.
« Последнее редактирование: 03 Марта 2008, 18:28:31 от Gundos »

Оффлайн Burner

  • Новичок
  • *
  • Сообщений: 3
    • Просмотр профиля
    • http://burn.nov.ru/
Re: HOWTO: Iptables для новичков
« Ответ #23 : 04 Марта 2008, 08:41:58 »
Спасибо и за эту инфу. но я не ту строчку вписал ))

Вот из-за этого пинг поднимается: sysctl -w net.ipv4.ip_forward="1"

а ставишь параметр 0 пинг нормальный :)


Оффлайн Gundos

  • Новичок
  • *
  • Сообщений: 33
    • Просмотр профиля
Re: HOWTO: Iptables для новичков
« Ответ #24 : 04 Марта 2008, 10:53:09 »
Хмм, загадочно, эта опция включает возможность пересылки пакеов (работу в качестве маршрутизатора) и у меня лично, как я думаю и у большинства пользователей, подобной проблемы не возникает.

Без неё не имеет смысла использование DNAT, SNAT и MASQUERADE. Быть может отключение форвардинга исключает маскарадинг, что в свою очередь ведёт к уменьшению пинга.

При использовании маршрутизации траффика с динамическими ip, следует включать опцию net.ipv4.ip_dynaddr, проверьте её состояние у вас.

К сведению:

/proc/sys/net/ipv4/ip_dynaddr

    Параметр используется для разрешения некоторых проблем, связанных с динамической адресацией. Позволяет демону diald одновременно устанавливать соединение и изменять исходящий адрес в пакетах (и сокетах для локальных процессов). Эта возможность была реализованв для поддержки TCP по коммутируемым соединениям и соединениям с маскарадингом (masqueradig). Эта опция позволяет "маскарадить" исходящий адрес пакета при изменении динамического IP-адреса.

В переменную можно записать одно из 3-х значений: 0, 1 или 2.

0 -- опция выключена, это значение по-умолчанию.

1 -- опция включена.

Любое другое значение, отличающееся от 0 и 1 подразумевает включение этой опции в "многословном" (verbose) режиме, что приводит к записи в системный журнал отладочных сообщений.

Что происходит, если изменяется адрес исходящего интерфейса при включенной опции ip_dynaddr:
Исходящий адрес пакета и сокета изменяется ПРИ ПОВТОРНОЙ ПЕРЕДАЧЕ, когда он находится в состоянии SYN_SENT. Это касается локальных процессов.

          Для транзитных пакетов -- исходящий адрес пакета изменяется на выходе, когда внутренний хост выполняет ПОВТОРНУЮ ПЕРЕДАЧУ, пока не будет принят внешний пакет.

    Эта опция особенно полезна для случаев автодозвона, когда в момент установления связи исходящий адрес еще не известен. Любой запрос на соединение заставляет diald "поднять" исходящий интерфейс, после чего пакеты отправляются через него. Это означает, что нет необходимости сначала выдавать запрос который "поднимет" исходящий интерфейс, а затем выдавать "реальный" запрос на соединение, вместо этого мы просто устанавливаем соединение.

/proc/sys/net/ipv4/ip_forward


    Включает/отключает функцию форвардинга (передачу транзитных пакетов между сетевыми интерфейсами), которая позволяет компьютеру выступать в роли брандмауэра или маршрутизатора. Эта переменная очень важна для Network Address Translation (Трансляция Сетевых Адресов), брандмауэров, маршрутизаторов и всего того, что должно передавать пакеты между сетями.

    Это булева переменная. Или, другими словами, она может принимать два значения -- 0 или 1. Значение по-умолчанию -- 0, "запрещено". То есть 0 означает запрет форвардинга, а 1 -- разрешает его.

Оффлайн xalk

  • Новичок
  • *
  • Сообщений: 1
    • Просмотр профиля
Re: HOWTO: Iptables для новичков
« Ответ #25 : 12 Марта 2008, 14:04:27 »
Народ помогите плиз!
В линуксе не так давно по-этому не ругайте сильно  :)
Ситуация такая:
1 ADSL модем в режиме мост
2 eth0 прдключено к модему с адресом 192.168.1.3 моска 255.255.255.0 шлюз 192.168.1.1 (адрес модема)
3 eth1 смотрящая в сеть на windows машины 192.168.0.1 маска 255.255.255.0 шлюз 192.168.1.3 (адрес eth0)
Проблема:
Не могу настроить инет на windows машинах.Точнее могу но с исспользование dnsmsq & ipmasq но мне это не подходит так как ipmasq прописывает в iptables свои настройки что не допустимо.
Что делал:
По-разному пробовал настраивать iptables но так толком и не смог разобраться через какой интерфейс указывать доступ в нет :-[ Если pppoe то куда девать eth0? если eth0 -то не пашет ваще :(
Пробовал настроить FORWARDING но опять же - какой бы интерфейс в качестве исходящего не уквзывал ничего не выходит.
Если у кого есть идеи плиз помогите! Если надо вывложу конфиги iptables.
P.S Кстати подключение у меня ukrtelecom так что если кто то уже с таким сталкивался помогите!
P.s p.s Извиняюсь если где то наглупил но с линуксом знаком где то месяц и спросить больше не у кого :'(

Оффлайн tierpunk

  • Новичок
  • *
  • Сообщений: 17
    • Просмотр профиля
Re: HOWTO: Iptables для новичков
« Ответ #26 : 20 Марта 2008, 15:53:01 »
Размещаю свой переработанный под шаблон скрипт настройки сетевого экрана.

Решиль использовать ваш скрипт, очень благодарен за ваши старания и добрату,  и у меня появилось 2 вопроса

1 Есть ли возможность все записи (# Журналируются сброшенные пакеты для отладки.) выводить в файл, а то они мне на экран сыпяться?

2 Я до конца не понял, у вас открыты только некоторые порты или все?

Если все то как мне сделать открытыми только некоторые порты?

И если не тяжело не могли бы вы помочь мне в решение проблемы в другой теме
https://forum.ubuntu.ru/index.php?topic=23604.0
« Последнее редактирование: 20 Марта 2008, 17:23:56 от tierpunk »

Оффлайн Gundos

  • Новичок
  • *
  • Сообщений: 33
    • Просмотр профиля
Re: HOWTO: Iptables для новичков
« Ответ #27 : 22 Марта 2008, 14:11:00 »
По-идее журналироваться  всё должно в syslog   :o

Свободно разрешено проходить только транзитному траффику

$IPTABLES -P INPUT DROP
$IPTABLES -P OUTPUT DROP
$IPTABLES -P FORWARD ACCEPT

По умолчанию все порты закрыты. А разрешены например вот эти:
#
# TCP правила
#

$IPTABLES -A tcp_packets -p TCP --dport $FTP_PORT -j allowed
$IPTABLES -A tcp_packets -p TCP --dport $HTTP_PORT -j allowed

Оффлайн alex6999

  • Новичок
  • *
  • Сообщений: 14
    • Просмотр профиля
Re: HOWTO: Iptables для новичков
« Ответ #28 : 23 Марта 2008, 12:25:12 »
а где файлик этих таблиц найти?
или каждый раз батники запускать?

Оффлайн Lion-Simba

  • Старожил
  • *
  • Сообщений: 1126
    • Просмотр профиля
Re: HOWTO: Iptables для новичков
« Ответ #29 : 24 Марта 2008, 08:36:28 »
а где файлик этих таблиц найти?
или каждый раз батники запускать?

каждый.

поместить скрипт с ними в /etc/rc.local
Оказываю индивидуальную платную техподдержку широкого профиля. Обращаться в ЛС или Jabber.

 

Страница сгенерирована за 0.065 секунд. Запросов: 25.