К списку форумов К списку вопросов
Вопрос о iptables
BELL
20.09.2004 - 13:58
Итак, скачан и установлен с помощью яста пакет иптаблез. Хотя оказалось,
что в моем дистибутиве он ЕСТЬ, и качать не надо было, но все же -)
Консоль на иптаблез отзывается, говорит учится надо через хелп.
Скачан скрипт настройки иптаблез. Вот он
#!/bin/sh
#
# Для сервера локальной сети с выходом в интернет
#
###########################################################################
#
# Конфигурация Интернет-интерфейса.
#
INET_IP="62.183.66.203" #Ваш внешний IP - если динамический - то 0/0
INET_IFACE="eth1" #Ваш интерфейс в интернет (ppp,ippp,eth)
#INET_BROADCAST="212.96.100.255" #Броадкаст(нужен, если есть статический
ip в интернет)
#
# Конфигурация LAN-интерфейса
#
LAN_IP="192.168.0.2"
LAN_IP_RANGE="192.168.0.0/24"
LAN_IFACE="eth0"
#
# Конфигурация localhost.
#
LO_IFACE="lo"
LO_IP="127.0.0.1"
#
# Конфигурация IPTables.
#
IPTABLES="iptables"
#Загрузка модулей
/sbin/depmod -a
#
# Необходимые модули
#
/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
#
# Дополнительные модули
#
#/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
#
# Включаем FORWARDинг
#
echo "1" > /proc/sys/net/ipv4/ip_forward
#
# Политика по умолчанию
#
$IPTABLES -P INPUT DROP
$IPTABLES -P OUTPUT DROP
$IPTABLES -P FORWARD DROP
#
# Создание собственных цепочек
#
$IPTABLES -N bad_tcp_packets
$IPTABLES -N allowed
$IPTABLES -N tcp_packets
$IPTABLES -N udp_packets
$IPTABLES -N icmp_packets
#
# Заполнение собственных цепочек
#
#
# Цепочка 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 DROP
BELL
1 - 20.09.2004 - 13:59
#
# Цепочка allowed
#
$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
#
$IPTABLES -A tcp_packets -p TCP -s 0/0 --dport 21 -j allowed
$IPTABLES -A tcp_packets -p TCP -s 0/0 --dport 22 -j allowed
$IPTABLES -A tcp_packets -p TCP -s 0/0 --dport 80 -j allowed
#
# Порты UDP
#
#$IPTABLES -A udp_packets -p UDP -s 0/0 --destination-port 53 -j ACCEPT
#
# Правила ICMP
#
$IPTABLES -A icmp_packets -p ICMP -s 0/0 --icmp-type 8 -j ACCEPT
$IPTABLES -A icmp_packets -p ICMP -s 0/0 --icmp-type 11 -j ACCEPT
#
# Цепочка INPUT
#
$IPTABLES -A INPUT -p tcp -j bad_tcp_packets
#
# Правила для LAN (разрешаем все)
#
$IPTABLES -A INPUT -p ALL -i $LAN_IFACE -s $LAN_IP_RANGE -j ACCEPT
$IPTABLES -A INPUT -p ALL -i $LO_IFACE -s $LO_IP -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 -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
#
# Цепочка FORWARD
#
$IPTABLES -A FORWARD -p tcp -j bad_tcp_packets
#
# FORWARDинг на всю локальную сеть.(Пользователи из локалки могут ходить
в интернет)
#
$IPTABLES -A FORWARD -i $LAN_IFACE -j ACCEPT
$IPTABLES -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
#
# Цепочка OUTPUT
#
$IPTABLES -A OUTPUT -p tcp -j bad_tcp_packets
#
# Правила цепочки
#
$IPTABLES -A OUTPUT -p ALL -s $LO_IP -j ACCEPT
$IPTABLES -A OUTPUT -p ALL -s $LAN_IP -j ACCEPT
$IPTABLES -A OUTPUT -p ALL -s $INET_IP -j ACCEPT
#
# Включаем IP Forwarding и трансляцию адресов(или маскарадинг)
#
#$IPTABLES -t nat -A POSTROUTING -o $INET_IFACE -j MASQUERADE #если ip
динамический
$IPTABLES -t nat -A POSTROUTING -o $INET_IFACE -j SNAT --to-source
$INET_IP #если ip статический
#$IPTABLES -t nat -A PREROUTING -i $LAN_IFACE -d ! $LAN_IP_RANGE -p tcp
--dport 80 -j REDIRECT --to-port 3128 #это нужно для #того случая, когда
вы хотите сделать transparent-прокси
#В конфиге squid надо добавить для этого:
#httpd_accel_host virtual
#httpd_accel_port 80
#httpd_accel_with_proxy on
#httpd_accel_uses_host_header on
Скрипт исполняется без проблем. Ну, при повторном запуске говорить, что
правила (чайнс??) уже есть.
Настраиваю удаленную машину - в ТСПИП указываю шлюз 192.168.0.2
Интернета нет.
Как проверить, запущен ли демон иптаблез? сервисе не пашет...
В общем, куда рыть?
Сыр
2 - 20.09.2004 - 20:52
Для начала результаты сего в студию:
iptables -L -t nat
iptables -L -t filter
можно еще и iptables -L -t mangle, но эт не обязательно...
И еще... iptables не обязаны быть демоном - это часть ядра, или в худшем случае его модуль...
Неплохо было бы так же показать табличку маршрутов...
... эт так к скрипту...
Теперь, немного общих так сказать советов попробуйте для начала из консоли слующую последовательность не прибигая к скриптам
echo "1" > /proc/sys/net/ipv4/ip_forward
iptables -t nat -F
iptables -t filter -F
iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -o eth1 -j MASQUERADE
инет должон пойти...
теперь еще по скрипту -судя по тому что вы описали, скорей всего где-то перемудрено с фильтрами, где именно щас не скажу нет времени более детально рытся в вашем скрипте.
Сыр
3 - 20.09.2004 - 21:03
Да еще вот что... Что бы это усе заработало внешний интерфейс (в моем примере eth1) должен обязательно иметь стату default geteway. В случае ppp-соеденения ессено тоже (это уже читайте настройки ppp).
Для постоянного соеденения в /etc/sysconfig/network должна присутсвовать строка GATEWAY=X.X.X.X, где Х.Х.Х.Х внешний адрес вашего компа.
gloomymen
4 - 20.09.2004 - 23:28
BELL, с самого шлюза inet доступен? Не все модули обязательно сразу грузить, особенно те, что вообще не используются
>при повторном запуске говорить, что правила (чайнс??) уже есть
Пользовательские цепочки, при старте нужно сбрасывать и удалять,
основные тоже не помешает сбрасывать (и обнулять, если считать надумаешь)
Думаю после "route -n" всё станет понятнее :)
----
Сыр #2, не заработает - Policy DROP аднака
#3, не "внешний вашего компа" зуб даю ;)
lithium
5 - 21.09.2004 - 09:37
to 0:
http://www.opennet.ru/docs/RUS/iptables/
http://www.opennet.ru/docs/HOWTO/IP-Masquerade-HOWTO/index.html
этого должно быть достаточно.
BELL
6 - 21.09.2004 - 11:36
Простите что долго не появлялся. Я начал читать iptables --help -)
1) При перезагрузке правила питаблез (-Ф) не сохраняются. Так и должно быть?
2) 192,168,0,0/16 /24
Что означают 16 24? Маску задают? Как ее расчитать?
2_4 Доступен, шлюз и днс сервера настроены.
2_5 читаем давно уже.. непонячтно много правда ))
Сыр
7 - 21.09.2004 - 12:12
2 gloomymen - заработает однако, первыми стороками у мя идет принудительный сброс цепочек в нате и фильтре, так что усе бут пахать. %о)
BELL
8 - 21.09.2004 - 12:23
tkgpdc:~ # iptables -L -t nat
Chain PREROUTING (policy ACCEPT)
target prot opt source destination
Chain POSTROUTING (policy ACCEPT)
target prot opt source destination
MASQUERADE all -- 192.168.0.0/24 anywhere
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
Вот.. как надо настраивать клиентскую машину под вин2к?
Просто указать шлюз?
BELL
9 - 21.09.2004 - 12:24
filter пустая.. ассерт..
Сыр
10 - 21.09.2004 - 12:38
угу... и ДНС прописать не забудь...
тока для начала сквида выруби...
BELL
11 - 21.09.2004 - 12:56
Кто такой сквид?
ДНС сервер на машине не установлен. ДНС сервера провайдера
прописывать?
Как настроить bind на переадресацию на днс прова, чтоб в настройках
кл. машины я вводил и шлюз и днс ИП сервера моего?
------------
инета нет (
BELL
12 - 21.09.2004 - 12:59
Так, инет есть -)
осталось настроить бинд -)
пишу с клиентской машины, поздравьте меня -)
Просьба - обьясните по пунктам значения этого
iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -o eth1 -j MASQUERADE
BELL
13 - 21.09.2004 - 13:02
Таак.. проблема.. самба недоступна - не найден сетевой путь.
Видимо, маршрутизирует все на eth1. Подскажите, че делать -)
Сыр
14 - 21.09.2004 - 13:24
там все просто - просто добавляем в таблице nat правило что все пакеты для из сети 192.168.0.0/255.255.255.0 направленные во внешние сети маскарадятся на интерфейс eth1...
проверяй конфиги самбы - маршрутизация и маскарад тут ни причем.
gloomymen
15 - 21.09.2004 - 17:48
Сыр, ну мы как всегда - каждый о своём... :)
BELL
16 - 22.09.2004 - 08:24
Все! Разобрался! Спасибо!
Тока инет отключили за неуплату, теперь с момеда воть выхожу -)
Нада директора теребить.....

К списку вопросов на форуме Операционные системы

>>