d
IPTABLES
КОМАНДЫ :
chkconfig --level 235 ip6tables off #отключит сервис айпитейблс 6 на уровнях.
iptables-save > /etc/sysconfig/iptables # команда iptables-save сохранит конфигурацию в файл, но чтобы окончательно прописать конфигурацию необходимо выполнить
service iptables save
Трассировка соединений : cat /proc/net/ip_conntrack
Итак, iptables -L -t filter
Изменение конфига IPTABLES в реальном времени без стирания цепочек и таблиц.
Это делается с ключем -R, т.е. к примеру так:
-R INPUT 34 -i eth1 -p tcp --dport 21 -j ACCEPT
где 34 это порядковый номер правила в цепочке INPUT в таблице filter

CONFIG_IP_NF_TARGET_REJECT - Добавляется действие REJECT, которое производит передачу ICMP-сообщения об ошибке в ответ на входящий пакет, который отвергается заданным правилом. Запомните, что TCP соединения, в отличие от UDP и ICMP, всегда завершаются или отвергаются пакетом TCP RST.
Маскировка (MASQUERADE) применяется в тех же целях, что и SNAT, но в отличие от последней, MASQUERADE дает более сильную нагрузку на систему. Происходит это потому, что каждый раз, когда требуется выполнение этого действия - производится запрос IP адреса для указанного в действии сетевого интерфейса, в то время как для SNAT IP адрес указывается непосредственно. Однако, благодаря такому отличию, MASQUERADE может работать в случаях с динамическим IP адресом, т.е. когда вы подключаетесь к Интернет, скажем через PPP, SLIP или DHCP.

sdfsdfsdf dddddsfsdf



IT MY WORK

Первое, что нужно сделать - убедиться, что в файле конфигурации /etc/sysconfig/iptables-config параметр IPTABLES_SAVE_ON_STOP="yes". Это заставит сервис iptables сохранять свою конфигурацию в файл при каждом завершении работы, чтобы не пришлось конфигурировать все повторно. Начнем с того, что создадим начальный файл конфигурации

iptables-save > /etc/sysconfig/iptables



iptables -A INPUT -j REJECT --reject-with icmp-host-prohibited

Данная команда означает буквально следующее - отклонять все пакеты, которые не подходят ни под одно описанное выше правило, со статусом "узел запрещен".

4. Сохраните все ваши правила и убедитесь, что служба iptables будет автоматически запущена при рестарте системы. iptables-save > /etc/sysconfig/iptables
chkconfig iptables on

После рестарта системы, iptables должен прочитать все правила из файла /etc/sysconfig/iptables и автоматически применить их. Проверить все дейвствующие правила можно командой iptables -L

Если вы перезагрузились, а правил нет - проверьте, откуда их читает сервис. Посмотреть это можно в файле /etc/init.d/iptables, в параметре IPTABLES_DATA.

Но я бы не советовал включать автоматическое сохранение. Так как всегда можно будет откатится простым передергиванием питания.

Так-же советую включить опции
IPTABLES_STATUS_LINENUMBERS="yes"
IPTABLES_STATUS_VERBOSE="yes"
и смотреть правила командой
/etc/init.d/iptables status

Добавлять и удалять можно командами iptables -I и iptables -D соответственно.
Сохранять правила - /etc/init.d/iptables save

Проверяем, что режим форвардинга включён
Он нужен для трансляции пакетов между сетевыми интерфейсами. В частности, для работы NAT. В файле /etc/sysctl.conf должна присутствовать строчка:
net.ipv4.ip_forward=1

иначе режим форвардинга НЕ БУДЕТ включаться при загрузке системы.

Для того, чтобы включить его временно (например, в целях тестирования), набираем в консоли:

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

То есть, записываем единичку в файл /proc/sys/net/ipv4/ip_forward, определяющий текущие настройки форвардинга.



it from posix/network/iptables

#!/bin/sh

# Задаем некоторые переменные:

# Переменная, задающая путь к файлу запуска iptables. IPT="/sbin/iptables"

# Ваш сетевой интерфейс. Это нужно, чтобы не писать в правилах одно и тоже.
INET_IFACE="ppp0"

# Номера непривилегированных портов
UNPRIPORTS="1024:65535"

start_fw()
{
# Включить перенаправление пакетов через ядро.
echo 1 > /proc/sys/net/ipv4/ip_forward

# Сбросить правила и удалить цепочки.
$IPT -F
$IPT -X


# Политики по умолчанию.
$IPT -P INPUT DROP
$IPT -P FORWARD ACCEPT
$IPT -P OUTPUT DROP


# Разрешаем прохождение любого трафика по интерфейсу обратной петли.
$IPT -A INPUT -i lo -j ACCEPT
$IPT -A OUTPUT -o lo -j ACCEPT


# Запрещаем любые новые подключения с любых интерфейсов, кроме lo к компьютеру.
$IPT -A INPUT -m state ! -i lo --state NEW -j DROP


# Если интерфейс не lo, то запрещаем входить в список его адресов.
$IPT -A INPUT -s 127.0.0.1/255.0.0.0 ! -i lo -j DROP


# Отбрасывать все пакеты, которые не могут быть идентифицированы и поэтому не могут иметь определенного статуса.
$IPT -A INPUT -m state --state INVALID -j DROP
$IPT -A FORWARD -m state --state INVALID -j DROP


# Принимать все пакеты, которые инициированы из уже установленного соединения, и имеющим признак ESTABLISHED.
# Состояние ESTABLISHED говорит о том, что это не первый пакет в соединении.
$IPT -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
$IPT -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT


# Предупреждаю вас о туповатых провайдерах, которые назначают IP адреса, отведенные IANA для локальных сетей.
# Например адреса 10.X.X.X. Для этого надо установить правило, пропускающие трафик с этих серверов, ранее цепочки INPUT.
$IPT -t nat -I PREROUTING -i $INET_IFACE -s 10.0.0.1/32 -j ACCEPT


# Эти правила предохраняют от некоторых типов атак:


# SYN наводнение.
# Приводит к связыванию системных ресурсов, так что реальных обмен данными становится не возможным.
$IPT -A INPUT -p tcp ! --syn -m state --state NEW -j DROP
$IPT -A OUTPUT -p tcp ! --syn -m state --state NEW -j DROP


# UDP наводнение
# Службы использующие UDP, очень часто становятся мишенью для атак с целью вывода системы из строя.
$IPT -A INPUT -p UDP -s 0/0 --destination-port 138 -j DROP
$IPT -A INPUT -p UDP -s 0/0 --destination-port 113 -j REJECT
$IPT -A INPUT -p UDP -s 0/0 --source-port 67 --destination-port 68 -j ACCEPT
$IPT -A INPUT -p UDP -j RETURN
$IPT -A OUTPUT -p UDP -s 0/0 -j ACCEPT


# ICMP - перенаправление
# ICMP - сообщение указывает системе изменить содержимое таблиц маршрутизации с тем, что бы направлять
# пакеты по более короткому маршруту. Может быть использовано взломщиком для перенаправления вашего трафика через свою машину.
$IPT -A INPUT --fragment -p ICMP -j DROP
$IPT -A OUTPUT --fragment -p ICMP -j DROP


# Разрешаем ICMP соединение. Значительная часть ICMP используется для передачи сообщений о
# том, что происходит с тем или иным UDP или TCP соединением.
$IPT -A INPUT -p icmp -m icmp -i $INET_IFACE --icmp-type source-quench -j ACCEPT
$IPT -A OUTPUT -p icmp -m icmp -o $INET_IFACE --icmp-type source-quench -j ACCEPT


# Разрешаем себе ping наружу - нас же не попингуешь - пакеты отбрасываются.
$IPT -A INPUT -p icmp -m icmp -i $INET_IFACE --icmp-type echo-reply -j ACCEPT
$IPT -A OUTPUT -p icmp -m icmp -o $INET_IFACE --icmp-type echo-request -j ACCEPT


# Разрешаем передачу пакета - некорректный параметр - используется, если в заголовке пакета содержится недопустимая запись,
# или если контрольная сумма заголовка не соответствует контрольной сумме, указанной передающим узлом.
$IPT -A INPUT -p icmp -m icmp -i $INET_IFACE --icmp-type parameter-problem -j ACCEPT
$IPT -A OUTPUT -p icmp -m icmp -o $INET_IFACE --icmp-type parameter-problem -j ACCEPT


# Запрещаем подключение к X серверу через сетевые интерфейсы.
$IPT -A INPUT -p tcp -m tcp -i $INET_IFACE --dport 6000:6063 -j DROP --syn


# Прописываем порты, которые открыты в системе, но которые не должны быть открыты на сетевых интерфейсах:
# $IPT -A INPUT -p tcp -m tcp -m multiport -i $INET_IFACE -j DROP --dports #порта
$IPT -A INPUT -p tcp -m tcp -m multiport -i $INET_IFACE -j DROP --dports 783
$IPT -A INPUT -p tcp -m tcp -m multiport -i $INET_IFACE -j DROP --dports 3310
$IPT -A INPUT -p tcp -m tcp -m multiport -i $INET_IFACE -j DROP --dports 10000


# DNS сервер имен разрешаем.
$IPT -A OUTPUT -p udp -m udp -o $INET_IFACE --dport 53 --sport $UNPRIPORTS -j ACCEPT
$IPT -A OUTPUT -p tcp -m tcp -o $INET_IFACE --dport 53 --sport $UNPRIPORTS -j ACCEPT
$IPT -A INPUT -p udp -m udp -i $INET_IFACE --dport $UNPRIPORTS --sport 53 -j ACCEPT
$IPT -A INPUT -p tcp -m tcp -i $INET_IFACE --dport 1024:65353 --sport 53 -j ACCEPT


# Разрешаем AUTH-запросы на удаленные сервера, на свой же компьютер - запрещаем.
$IPT -A OUTPUT -p tcp -m tcp -o $INET_IFACE --dport 113 --sport $UNPRIPORTS -j ACCEPT
$IPT -A INPUT -p tcp -m tcp -i $INET_IFACE --dport $UNPRIPORTS --sport 113 -j ACCEPT ! --syn
$IPT -A INPUT -p tcp -m tcp -i $INET_IFACE --dport 113 -j DROP


# Открываем некоторые порты:


# SMTP клиент (25)
$IPT -A OUTPUT -p tcp -m tcp -o $INET_IFACE --dport 25 --sport $UNPRIPORTS -j ACCEPT
$IPT -A INPUT -p tcp -m tcp -i $INET_IFACE --dport $UNPRIPORTS --sport 25 -j ACCEPT ! --syn


# POP3 клиент (110)
$IPT -A OUTPUT -p tcp -m tcp -o $INET_IFACE --dport 110 --sport $UNPRIPORTS -j ACCEPT
$IPT -A INPUT -p tcp -m tcp -i $INET_IFACE --dport $UNPRIPORTS --sport 110 -j ACCEPT ! --syn


# IMAP4 клиент (143)
$IPT -A OUTPUT -p tcp -m tcp -o $INET_IFACE --dport 143 --sport $UNPRIPORTS -j ACCEPT
$IPT -A INPUT -p tcp -m tcp -i $INET_IFACE --dport $UNPRIPORTS --sport 143 -j ACCEPT ! --syn


# SSH клиент (22)
$IPT -A OUTPUT -p tcp -m tcp -o $INET_IFACE --dport 22 --sport $UNPRIPORTS -j ACCEPT
$IPT -A INPUT -p tcp -m tcp -i $INET_IFACE --dport $UNPRIPORTS --sport 22 -j ACCEPT ! --syn
$IPT -A OUTPUT -p tcp -m tcp -o $INET_IFACE --dport 22 --sport 1020:1023 -j ACCEPT
$IPT -A INPUT -p tcp -m tcp -i $INET_IFACE --dport 1020:1023 --sport 22 -j ACCEPT ! --syn


# FPT клиент (21)
$IPT -A OUTPUT -p tcp -m tcp -o $INET_IFACE --dport 21 --sport $UNPRIPORTS -j ACCEPT
$IPT -A INPUT -p tcp -m tcp -i $INET_IFACE --dport $UNPRIPORTS --sport 21 -j ACCEPT ! --syn


# HTTP/HTTPS клиент (80, 443)
$IPT -A OUTPUT -p tcp -m tcp -m multiport -o $INET_IFACE --sport $UNPRIPORTS -j ACCEPT --dports 80,443
$IPT -A INPUT -p tcp -m tcp -m multiport -i $INET_IFACE --dport $UNPRIPORTS -j ACCEPT --sports 80,443 ! --syn


# Разрешаем finger, whois, gorper, wais. Traceroute - разрешаем себе, к нам не проломятся - запрещено. Telnet
# запретил, чтобы соблазна не было передавать пароли прямым текстом.
$IPT -A INPUT -p tcp -m tcp -i $INET_IFACE --dport $UNPRIPORTS --sport 20 -j ACCEPT
$IPT -A OUTPUT -p tcp -m tcp -o $INET_IFACE --dport 20 --sport $UNPRIPORTS -j ACCEPT ! --syn
$IPT -A OUTPUT -p tcp -m tcp -o $INET_IFACE --dport $UNPRIPORTS --sport $UNPRIPORTS -j ACCEPT
$IPT -A INPUT -p tcp -m tcp -i $INET_IFACE --dport $UNPRIPORTS --sport $UNPRIPORTS -j ACCEPT ! --syn
$IPT -A OUTPUT -p tcp -m tcp -o $INET_IFACE --dport 23 --sport $UNPRIPORTS -j ACCEPT
$IPT -A INPUT -p tcp -m tcp -i $INET_IFACE --dport $UNPRIPORTS --sport 23 -j ACCEPT ! --syn
$IPT -A OUTPUT -p tcp -m tcp -o $INET_IFACE --dport 79 --sport $UNPRIPORTS -j ACCEPT
$IPT -A INPUT -p tcp -m tcp -i $INET_IFACE --dport $UNPRIPORTS --sport 79 -j ACCEPT ! --syn
$IPT -A OUTPUT -p tcp -m tcp -o $INET_IFACE --dport 43 --sport $UNPRIPORTS -j ACCEPT
$IPT -A INPUT -p tcp -m tcp -i $INET_IFACE --dport $UNPRIPORTS --sport 43 -j ACCEPT ! --syn
$IPT -A OUTPUT -p tcp -m tcp -o $INET_IFACE --dport 70 --sport $UNPRIPORTS -j ACCEPT
$IPT -A INPUT -p tcp -m tcp -i $INET_IFACE --dport $UNPRIPORTS --sport 70 -j ACCEPT ! --syn
$IPT -A OUTPUT -p tcp -m tcp -o $INET_IFACE --dport 210 --sport $UNPRIPORTS -j ACCEPT
$IPT -A INPUT -p tcp -m tcp -i $INET_IFACE --dport $UNPRIPORTS --sport 210 -j ACCEPT ! --syn
$IPT -A OUTPUT -p udp -m udp -o $INET_IFACE --dport 33434:33523 --sport 32769:65535 -j ACCEPT


# Разрешаем прохождение DHCP запросов через iptables. Нужно, если IP адрес динамический.
$IPT -A OUTPUT -p udp -m udp -o $INET_IFACE --dport 67 --sport 68 -j ACCEPT
$IPT -A INPUT -p udp -m udp -i $INET_IFACE --dport 68 --sport 67 -j ACCEPT


}


case "$1" in
start) echo -n "Starting firewall: iptables"
start_fw
echo "."
;;
stop) echo -n "Stopping firewall: iptables"
iptables -F
iptables -X
echo "."
;;
save) echo -n "Saving firewall: iptables"
iptables-save > /etc/rules-save
echo "."
;;
restart) echo -n "Restarting firewall: iptables"
iptables -F
iptables -X
cat /etc/rules-save | iptables-restore
echo "."
;;
reload|force-reload) echo -n "Reloading configuration files for firewall: iptables"
echo "."
;;
*) echo "Usage: /etc/init.d/rc.iptables start|stop|restart|reload|force-reload"
exit 1
;;
esac
exit 0


Ну вот и все. Выше рассмотрена настройка Iptables для домашней машины. Сохраните этот скрипт, сделайте его выполняемым и поместите в /etc/init.d/; если там уже есть файл rc.firewall, удалите его, выполнив команду из этого каталога:

$ update-rc.d -f rc.firewall remove


Дальше сделайте, чтобы новый скрипт инициализации запускался во время загрузки:

$ update-rc.d new.rc.iptables start 40 S . stop 89 0 6 .

Теперь правила Iptables вступают в силу во время загрузки. Если вы хотите остановить Iptables:

$ /etc/init.d/rc.iptables stop

Для сохранения правил в /etc/rules-save

$ /etc/init.d/rc.iptables save

Для нового запуска Iptables:

$ /etc/init.d/rc.iptables start

сохраним текущую конфигурацию
iptables-save > /puth/iptables-conf
теперь можно все уберать, так как потом можно востановить из созданного файла
iptables-restore /puth/iptables-conf
очищаем все правила в таблицах
iptables -t filter -F
iptables -t nat -F
iptables -t mangle -F
очищаем все пользовательские цепочки в таблицах
iptables -t filter -X
iptables -t nat -X
iptables -t mange -X
задаем политики по умолчанию для таблицы филтер
iptables -t filter -P INPUT DROP
iptables -t filter -P FORWARD DROP
iptables -t filter -P OUTPUT DROP

Итак все правила в таблицах удалены, все цепочки в таблицах удалены также, по умолчанию для таблицы филтер для всех 3х основных цепочек установлено правило ДРОП.
Так как я строю файрвол на вэбсервер который в локалке и для локалки (ТОЛЬКО пока), значит надо открыть доступ к нему , как? открыть 80 порт
-A INPUT -p tcp --dport 80 -s 192.168.0.0/24 -j ACCEPT
входящие открыты, но надо дать возможность ответить серверу и только в сторону локалки. Значит:
-A OUTPUT -d 192.168.0.0/24 -m state --state RELATED,ESTABLISHED -j ACCEPT
входящий пакет который был пропущен первым правилом помечается как NEW, и поэтому исходящие будут пропускаться помеченные.

Так не забываем удалить правило :
iptables -D INPUT -p tcp --dport 80 -s 192.168.0.0/24 -j ACCEPT
или же узнать номер строки правила и удалить правило по этому номеру
iptables -L INPUT --line-number
iptables -D INPUT 1orNUMBER
Если возникли проблемы и режется то что не должно резаться включаем логирование
# iptables -A INPUT -m limit --limit 3/minute --limit-burst 3 -j LOG --log-level DEBUG --log-prefix "INPUT packet: "
Как вы видите я выставил лимит в 3 минуты, дабы логи не забили все пространство на жестком диске
Теперь пропишем следующую строчку kern.=debug -/var/log/messages в syslog.conf
Смотрим ссыпающиеся логи /var/log/messages
Потом не забываем смотреть трассировщика
/proc/net/ip_conntrack


INFO
не забываем что отслеживать возможно через cat /proc/net/ip_conntrak
tcp 6 117 SYN_SENT src=192.168.1.6 dst=192.168.1.9 sport=32775 \
dport=22 [UNREPLIED] src=192.168.1.9 dst=192.168.1.6 sport=22 \
dport=32775 use=2
В этом примере содержится вся информация, которая известна трассировщику, по конкретному соединению. Первое, что можно увидеть - это название протокола, в данном случае - tcp. Далее следует некоторое число в обычном десятичном представлении. После него следует число, определяющее "время жизни" записи в таблице (т.е. количество секунд, через которое информация о соединении будет удалена из таблицы). Для нашего случая, запись в таблице будет храниться еще 117 секунд, если конечно через это соединение более не проследует ни одного пакета. При прохождении каждого последующего пакета через данное соединение, это значение будет устанавливаться в значение по-умолчанию для заданного состояния. Это число уменьшается на 1 каждую секунду. Далее следует фактическое состояние соединения. Для нашего примера состояние имеет значение SYN_SENT. Внутреннее представление состояния несколько отличается от внешнего. Значение SYN_SENT говорит о том, что через данное соединение проследовал единственный пакет TCP SYN. Далее расположены адреса отправителя и получателя, порт отправителя и получателя. Здесь же видно ключевое слово [UNREPLIED], которое сообщает о том, что ответного трафика через это соединение еще не было. И наконец приводится дополнительная информация по ожидаемому пакету, это IP адреса отправителя/получателя (те же самые, только поменявшиеся местами, поскольку ожидается ответный пакет), то же касается и портов.

tcp 6 57 SYN_RECV src=192.168.1.5 dst=192.168.1.35 sport=1031 \
dport=23 src=192.168.1.35 dst=192.168.1.5 sport=23 dport=1031 \
use=1
Теперь запись сообщает о том, что обратно прошел пакет SYN/ACK. На этот раз соединение переводится в состояние SYN_RECV. Это состояние говорит о том, что пакет SYN был благополучно доставлен получателю и в ответ на него пришел пакет-подтверждение (SYN/ACK). Кроме того, механизм определения состояния "увидев" пакеты, следующие в обеих направлениях, снимает флаг [UNREPLIED]. И наконец после передачи заключительного ACK-пакета, в процедуре установления соединения
tcp 6 431999 ESTABLISHED src=192.168.1.5 dst=192.168.1.35 \
sport=1031 dport=23 src=192.168.1.35 dst=192.168.1.5 \
sport=23 dport=1031 use=1
соединение переходит в состояние ESTABLISHED (установленное). После приема нескольких пакетов через это соединение, к нему добавится флаг [ASSURED] (уверенное).
INFO from NEXT

Настройка политики по умолчанию
iptables -P INPUT DROP | блокирование входящих пакетов
iptables -P OUTPUT ACCEPT | разрешить исходящие пакеты
iptables -P FORWARD DROP | обработка пакетов, которые попали на сервер с другой машины и ожидают дальнейшего переброса. В примере блокируется. В таком случае вам придётся дописать правила для доверенных машин. Поскольку входящие пакеты INPUT блокированы, пропишем правило:
iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
Это разрешит принимать пакеты от ранее установленного соединения и принимать новые пакеты,порождённые этим соединением. Либо с указанием типа протокола:
iptables -A INPUT -p TCP -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -p UDP -m state --state ESTABLISHED,RELATED -j ACCEPT
Теперь локальный интерфейс:
iptables -A INPUT -i lo -j ACCEP
NEW - данные, начинающие новое соединение.
ESTABLISHED - пакет, приходящий от уже установленного соединения.
RELATED - новый пакет данных, но порожденный старым установленным соединением
INVALID - итак понятно
Сохранить настройки (можете прописывать настройки iptables непосредственно в созданный файл):
iptables-save > /etc/iptables.up.rules
Включить эти правила:
iptables-restore < /etc/iptables.up.rules
И увидеть разницу:
iptables-L
Запуск iptables при старте системы:
В каталоге /etc/init.d создаем файл с именем iptables
touch /etc/init.d/iptables
Прописываем в нём следующее:
#!/bin/sh
/sbin/iptables-restore < /etc/iptables.up.rules
Делаем файл iptables исполняемым:
chmod +x /etc/init.d/iptables
Добавляем его в автозапуск
update-rc.d -n iptables defaults
Запуск iptables при подключении к сети:
echo "#! /sbin/iptables-restore" > /etc/network/if-up.d/iptables.up.rules
iptables-save >> /etc/network/if-up.d/iptables.up.rules
chmod +x /etc/network/if-up.d/iptables.up.rules

NEW INFO NEXT
INFO from NEXT

Итак, переходим к самому главному. Настройке iptables. Весь трафик будет направляться с помощью него. Так же мы реализуем защиту от некоторых типов атак. Для того, чтобы не мудрить ничего со скриптами я пишу все вручную сразу же в файл правил iptables /etc/sysconfig/iptables. [root@router ~]# cat /etc/sysconfig/iptables
# Generated by iptables-save v1.3.5 on Sat Feb 12 22:33:45 2011
*mangle
:PREROUTING ACCEPT [16227109:13393411926]
:INPUT ACCEPT [2831999:1288367909]
:FORWARD ACCEPT [13381890:12101945321]
:OUTPUT ACCEPT [4421349:5811697252]
:POSTROUTING ACCEPT [17809930:17913843359]
-A PREROUTING -d 224.0.0.0/240.0.0.0 -p udp -j TTL --ttl-inc 1
COMMIT
# Completed on Sat Feb 12 22:33:45 2011
# Generated by iptables-save v1.3.5 on Sat Feb 12 22:33:45 2011
*filter
:INPUT ACCEPT [2675290:1156848403]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [4421234:5811684759]
:RH-Firewall-1-INPUT - [0:0]
-A INPUT -i eth1 -p gre -m state --state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -d 172.20.21.43 -p tcp -m tcp --dport 21 -j ACCEPT
-A INPUT -d 172.20.21.43 -p tcp -m tcp --dport 22 -j ACCEPT
-A INPUT -d 172.20.21.43 -p tcp -m tcp --dport 80 -j ACCEPT
-A INPUT -d 172.20.21.43 -p tcp -m tcp --dport 3306 -j ACCEPT
-A INPUT -d 172.20.21.43 -p gre -j ACCEPT
-A INPUT -d 224.0.0.0/240.0.0.0 -i eth1 -j ACCEPT
-A INPUT -s 224.0.0.0/240.0.0.0 -i eth1 -j ACCEPT
-A INPUT -i eth1 -p gre -j ACCEPT
-A INPUT -i eth1 -p tcp -m tcp --dport 1723 -j ACCEPT
-A FORWARD -p tcp -m tcp --tcp-flags FIN,SYN,RST,ACK SYN -m limit --limit 1/sec -j ACCEPT
-A FORWARD -p tcp -m tcp --tcp-flags FIN,SYN,RST,ACK RST -m limit --limit 1/sec -j ACCEPT
-A FORWARD -p icmp -m icmp --icmp-type 8 -m limit --limit 1/sec -j ACCEPT
-A FORWARD -d 224.0.0.0/240.0.0.0 -j ACCEPT
-A FORWARD -s 224.0.0.0/240.0.0.0 -j ACCEPT
-A FORWARD -j ACCEPT
-A OUTPUT -o eth0 -p gre -j ACCEPT
-A OUTPUT -o eth0 -p tcp -m tcp --dport 1723 -j ACCEPT
COMMIT
# Completed on Sat Feb 12 22:33:45 2011
# Generated by iptables-save v1.3.5 on Sat Feb 12 22:33:45 2011
*nat
:PREROUTING ACCEPT [102290:13380449]
:POSTROUTING ACCEPT [0:0]
:OUTPUT ACCEPT [4360:349447]
-A PREROUTING -d 172.20.21.43 -p tcp -m tcp --dport 3389 -j DNAT --to-destination 192.168.0.100
-A PREROUTING -d 172.20.21.43 -p tcp -m tcp --dport 30001 -j DNAT --to-destination 192.168.0.100
-A PREROUTING -d 172.20.21.43 -p udp -m udp --dport 30002 -j DNAT --to-destination 192.168.0.100
-A PREROUTING -d 172.20.21.43 -p udp -m udp --dport 5070 -j DNAT --to-destination 192.168.0.100
-A PREROUTING -d 172.20.21.43 -p tcp -m tcp --dport 8000 -j DNAT --to-destination 192.168.0.100
-A PREROUTING -d 172.20.21.43 -p tcp -m tcp --dport 31337 -j DNAT --to-destination 192.168.0.100
-A PREROUTING -d 172.20.21.43 -p udp -m udp --dport 31337 -j DNAT --to-destination 192.168.0.100
-A PREROUTING -d 172.20.21.43 -p tcp -m tcp --dport 8333 -j DNAT --to-destination 192.168.0.100
-A POSTROUTING -j MASQUERADE
COMMIT
# Completed on Sat Feb 12 22:33:45 2011
[root@router ~]# cat /etc/sysconfig/iptables
# Generated by iptables-save v1.3.5 on Sat Feb 12 22:33:45 2011
*mangle
:PREROUTING ACCEPT [16227109:13393411926]
:INPUT ACCEPT [2831999:1288367909]
:FORWARD ACCEPT [13381890:12101945321]
:OUTPUT ACCEPT [4421349:5811697252]
:POSTROUTING ACCEPT [17809930:17913843359]
-A PREROUTING -d 224.0.0.0/240.0.0.0 -p udp -j TTL --ttl-inc 1
COMMIT
# Completed on Sat Feb 12 22:33:45 2011
# Generated by iptables-save v1.3.5 on Sat Feb 12 22:33:45 2011
*filter
:INPUT ACCEPT [2675290:1156848403]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [4421234:5811684759]
:RH-Firewall-1-INPUT - [0:0]
-A INPUT -i eth1 -p gre -m state --state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -d 172.20.21.43 -p tcp -m tcp --dport 21 -j ACCEPT
-A INPUT -d 172.20.21.43 -p tcp -m tcp --dport 22 -j ACCEPT
-A INPUT -d 172.20.21.43 -p tcp -m tcp --dport 80 -j ACCEPT
-A INPUT -d 172.20.21.43 -p tcp -m tcp --dport 3306 -j ACCEPT
-A INPUT -d 172.20.21.43 -p gre -j ACCEPT
-A INPUT -d 224.0.0.0/240.0.0.0 -i eth1 -j ACCEPT
-A INPUT -s 224.0.0.0/240.0.0.0 -i eth1 -j ACCEPT
-A INPUT -i eth1 -p gre -j ACCEPT
-A INPUT -i eth1 -p tcp -m tcp --dport 1723 -j ACCEPT
-A FORWARD -p tcp -m tcp --tcp-flags FIN,SYN,RST,ACK SYN -m limit --limit 1/sec -j ACCEPT
-A FORWARD -p tcp -m tcp --tcp-flags FIN,SYN,RST,ACK RST -m limit --limit 1/sec -j ACCEPT
-A FORWARD -p icmp -m icmp --icmp-type 8 -m limit --limit 1/sec -j ACCEPT
-A FORWARD -d 224.0.0.0/240.0.0.0 -j ACCEPT
-A FORWARD -s 224.0.0.0/240.0.0.0 -j ACCEPT
-A FORWARD -j ACCEPT
-A OUTPUT -o eth0 -p gre -j ACCEPT
-A OUTPUT -o eth0 -p tcp -m tcp --dport 1723 -j ACCEPT
COMMIT
# Completed on Sat Feb 12 22:33:45 2011
# Generated by iptables-save v1.3.5 on Sat Feb 12 22:33:45 2011
*nat
:PREROUTING ACCEPT [102290:13380449]
:POSTROUTING ACCEPT [0:0]
:OUTPUT ACCEPT [4360:349447]
-A PREROUTING -d 172.20.21.43 -p tcp -m tcp --dport 3389 -j DNAT --to-destination 192.168.0.100
-A PREROUTING -d 172.20.21.43 -p tcp -m tcp --dport 30001 -j DNAT --to-destination 192.168.0.100
-A PREROUTING -d 172.20.21.43 -p udp -m udp --dport 30002 -j DNAT --to-destination 192.168.0.100
-A PREROUTING -d 172.20.21.43 -p udp -m udp --dport 5070 -j DNAT --to-destination 192.168.0.100
-A PREROUTING -d 172.20.21.43 -p tcp -m tcp --dport 8000 -j DNAT --to-destination 192.168.0.100
-A PREROUTING -d 172.20.21.43 -p tcp -m tcp --dport 31337 -j DNAT --to-destination 192.168.0.100
-A PREROUTING -d 172.20.21.43 -p udp -m udp --dport 31337 -j DNAT --to-destination 192.168.0.100
-A PREROUTING -d 172.20.21.43 -p tcp -m tcp --dport 8333 -j DNAT --to-destination 192.168.0.100
-A POSTROUTING -j MASQUERADE
COMMIT
# Completed on Sat Feb 12 22:33:45 2011
В данной настройки с помощью PREROUTING я сделал «проброс портов» на свою рабочую станцию. Все порты, которые перечисленны мной используются для различных программ и прочего. Так же здесь реализован пропуск протокола GRE, который необходим, если с LAN машин вы собрались работать с VPN (бывает необходимость залезть в офисную сеть). Так же не забываем, в этом случае, открыть порт 1723, который используется так же для VPN. Так же я сделал для себя правило для multicast, который у нас используется для вещания IP-TV. Так же у меня на рабочей станции есть телефония, которая работает через SIP протокол. По умолчанию работать не хотело, но после подключения модулей nf_conntrack_sip и nf_nat_sip все заработало. Подключаются модули следующим образом: ? 1 2 modprobe nf_conntrack_sip modprobe nf_nat_sip Правило -A PREROUTING -d 224.0.0.0/240.0.0.0 -p udp -j TTL --ttl-inc 1 выставляет правильные TTL для пакетов мультикаста. По умолчанию IP-TV работать не хотело, даже когда я настроил igmpproxy. После установки этого правила все заработало. Итак, переходим к последнему пункту — настройки igmpproxy. Здесь все пошагово: Подключим необходимые репозитории: Для i386 архитектуры: 1. Устанавливаем epel репозиторий. ? 1
rpm -ihv http://download.fedora.redhat.com/pub/epel/5/i386/epel-release-5-4.noarch.rpm
2. Устанавливаем CentALT репозиторий. ? 1
rpm -ihv http://centos.alt.ru/repository/centos/5/i386/centalt-release-5-3.noarch.rpm
Для x86_64 архитектуры: 1. Устанавливаем epel репозиторий. ? 1
rpm -ihv http://download.fedora.redhat.com/pub/epel/5/x86_64/epel-release-5-4.noarch.rpm
2. Устанавливаем CentALT репозиторий. ? 1
rpm -ihv http://centos.alt.ru/repository/centos/5/x86_64/centalt-release-5-3.noarch.rpm
Установим igmpproxy: ? 1 yum install igmpproxy
Конфиг igmpproxy: ? 1 2 3 4 5 6 7 8 [root@router ~]# cat /etc/igmpproxy.conf
#quickleave
phyint eth0 downstream ratelimit 0 threshold 1
altnet 192.168.0.0/24
phyint eth1 upstream ratelimit 0 threshold 1
altnet 239.1.0.0/16
altnet 10.245.0.0/16
altnet 239.255.255.0/24
Запускаем imgpproxy и смотрим IP-TV.
Все, на данном настройка сервера закончена.
Кстати, данная конфигурация идеально работает с IP-TV Электронного Города в Новосибирске. По крайней мере на моей STB IP-TV показывает идеально + данная конфигурация отлично справляется с нагрузкой в 3 компьютера, которые смотрят IP-TV в HDTV качестве (поток порядка 15-20 Мбит на один канал). В локальной P2P скорость теперь такая, как будто бы я подключен к сети напрямую (10-12 мегабайт/сек) против 4-5 на Asus WL-520GU, который сегодня, к сожалению, погиб в неравной борьбе с чистящей жидкостью, которую на неё уронила кошка. Подключив гигабитный свитч, поставив гигабитную сетевку можно достигнуть, наконец, скоростей в домашней сети.

вот образец настройки на шлюзе
gateway_iptables



Сайт создан в системе uCoz