Doctor: Настройка IpTables

16 сообщений / 0 new
Последнее сообщение
Гость
Doctor: Настройка IpTables

Есть такая проблема, на одной машине стоит 2 сетевые карты.

eth0 - смотрит в локальную сеть 10.28.4.0
eth1 - смотрит в интернет.
----------------
Необходимо настроить шлюз, дабы все пользователи локальной сети моглли юзать интернет.
Помогите пожалуйста.

З.Ы. Очень прошу не отсылать меня по ссылкам на различные мануалы. Я прошу реальной помощи. Заранее благодарен всем вам.

Nick
Не в сети
Зарегистрирован: 20/09/2010

Указать мануал -- это и есть реальная помощь. А дать готовый результат -- это означает сделать твою работу вместо тебя. А за что тебе платят деньги?

Doctor (не проверено)

[quote=Nick]Указать мануал -- это и есть реальная помощь. А дать готовый результат -- это означает сделать твою работу вместо тебя. А за что тебе платят деньги?
[/quote]
Я все понимаю, да конечно ты прав, но я думаю, что такие вот форумы созданы для того, чтобы такие вот как я, начинающие, могли попросить о помощи.
Я перерыл множество документации, но нигде не нашел решения своей проблемы, поэтому и обращаюсь к вам.

Dumus
Аватар пользователя Dumus
Не в сети
Зарегистрирован: 17/09/2010

Решений море, плохо искал; например, можно поднять проксю, в частности [link=http://squid.opennet.ru/]Squid[/link].

Мой микроблог: http://juick.com/Dumus/

Doctor (не проверено)

Спасибо. Буду пробовать

Vitls
Аватар пользователя Vitls
Не в сети
Зарегистрирован: 21/09/2010

[quote=Doctor]Есть такая проблема, на одной машине стоит 2 сетевые карты.

eth0 - смотрит в локальную сеть 10.28.4.0
eth1 - смотрит в интернет.
----------------
Необходимо настроить шлюз, дабы все пользователи локальной сети моглли юзать интернет.
Помогите пожалуйста.
[/quote]

Делается одной командой.
Читайте iptables-tutorial, в жизни пригодится.

Дело не в том как болезнь вылечить.
Дело в том как других заразить.

Morph (не проверено)

Вот я так тоже спрашивал...пришлось самому до всего доходить :)))

совет - подними SQUID и кеширующий DNS

прочитай след доку для общего развития:
http://linux.yaroslavl.ru/docs/gazette/lg/archive/iptables-tutorial-1.1....

SQUID сделай прозрачным.

И :))

[color=green]
#!/bin/sh

INET_IP="0/0" #Ваш внешний IP - если динамический - то 0/0
INET_IFACE="eth0" #Ваш интерфейс в интернет (ppp,ippp,eth)

#
# Конфигурация LAN-интерфейса
#

LAN_IP=" 10.28.4.1"
LAN_IP_RANGE="10.28.4.0/8"
LAN_IFACE="eth1"

#
# Конфигурация 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

#
# Цепочка 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

$IPTABLES -t nat -A PREROUTING -i $LAN_IFACE -d ! $LAN_IP_RANGE -p tcp --dport 80 -j REDIRECT --to-port 3128 #это нужно для #того случая, когда вы хотите сделать transparent-прокси
[/color]
#В конфиге squid надо добавить для этого:
httpd_accel_host virtual
httpd_accel_port 80
httpd_accel_with_proxy on
httpd_accel_uses_host_header on

Короче скрипт запустишь. В конфиг сквида добавишь.

Скрипт закрывает все порты извне - если надо что-то открыть - СЕКЦИЯ ПОРТЫ TCP - там раскомментируешь строку и подставишь нужный порт.

Если инет разруливать будешь через iptables(а не через правила SQUID) - обязательно закрой для внутренней сети порт 3128.

Будут вопросы, задавай в форуме, стучи в асю...

А...вот еще....

Чтобы правила сами загружались - после выполнения скрипта дай команду

/etc/init.d/iptables save

и сделай так, чтобы сервис iptables загружался при старте машины.

Плюс! Добавь в /etc/sysconfig/network
FORWARD_IPV4=yes

Чтобы при загрузке включался форвардинг пакетов.

УДАЧИ!

[ Редактирование Wed Feb 09 2005, 09:52AM ]
[ Редактирование Wed Feb 09 2005, 09:53AM ]
[ Редактирование Wed Feb 09 2005, 09:54AM ]
[ Редактирование Wed Feb 09 2005, 09:55AM ]

Nick
Не в сети
Зарегистрирован: 20/09/2010

[quote]
Плюс! Добавь в /etc/sysconfig/network
FORWARD_IPV4=yes [/quote]

Он, кстати, не сказал про дистрибутив. Такого файла может и не быть. К тому же, зачем тогда делать echo "1" > /proc/sys/net/ipv4/ip_forward, для надежности? А без modprobe модули не грузятся?

А вот таких админов:
$IPTABLES -A FORWARD -i $LAN_IFACE -j ACCEPT
я убиваю из рогатки. За распространение червей и другие заслуги перед сообществом.

В общем, что-то ты не то советуешь.

Morph (не проверено)

ну он же не сказал что ему надо 2 машины вывести, а остальные нет :) он сказал локалку в инет :) Причем не сказал что ему надо только http\ftp
Ему видимо надо нормально почту проверять, не через задницу и в IRC посидеть, и е-ослом попользоваться...

Ну насчет /etc/sysconfig/network погорячился(на 90% уверен что у него какой-нить шапкоподобный зверь)

Про echo - смысл в том, что скрипт ты один раз запустишь и все...
а потом правила сохранишь командой /etc/init.d/iptables save
ну или iptables-save..... И форвардинг потом не включится при загрузке().

А вот если скрипт в автозагрузку добавить - то ничего сохранять не надо и дописывать не надо...

А как ты собрался модули ядра подгружать???
insmod?

[ Редактирование Thu Feb 10 2005, 09:49AM ]

Nick
Не в сети
Зарегистрирован: 20/09/2010

Iptables сама нужные модули грузит. Если, конечно, автозагрузка модулей не отключена.

Morph (не проверено)

Если , кабы... Да понятно, что основные модули загружаются сами. НО!
Без модулей
ip_conntrack_ftp
ip_conntrack_irc
ip_nat_ftp
ip_nat_irc

не приятно жить, а их надо подгрузить :)

Кстати, скрипт сделан из стандартного, который есть туториале(указанном выше) :))
Все претензии к автору: Oskar Andreasson, blueflux@koffein.net, Copyright (C) 2001-2003

Комментарии к скрипту переведены мной :)
[ Редактирование Thu Feb 10 2005, 09:47AM ]

245 (не проверено)

кстати в некоторых дистрибутивах (например в ASP) файл /etc/sysconfig/network есть но FORWARD_IPV4="yes " не обрабатывается в скрипте
для этого есть /etc/sysctl.conf

mijgun (не проверено)

Читаю последний пост и вспоминаю сколько же я намучался со своей шапкой пока научил её форвардингу... Долго не мог понять что именно ей надо. :) Флейм. Сорри.

frug (не проверено)

Есть задача перенаправлять соединения с локального интерфейса роутера
на удалённый почтовый сервер.
То есть клиент подключается на адрес 192.168.1.1:8110 а соединение перенаправляется на pop.mail.ru:110, при этом трафик не маршрутизируется и клиенту вообще не указан default route.
Быть может есть более подходящие инструменты для реализации этой задачи ?

Vitls
Аватар пользователя Vitls
Не в сети
Зарегистрирован: 21/09/2010

[quote=frug]Есть задача перенаправлять соединения с локального интерфейса роутера
на удалённый почтовый сервер.
То есть клиент подключается на адрес 192.168.1.1:8110 а соединение перенаправляется на pop.mail.ru:110, при этом трафик не маршрутизируется и клиенту вообще не указан default route.
Быть может есть более подходящие инструменты для реализации этой задачи ?[/quote]
gated какой-нить.

Дело не в том как болезнь вылечить.
Дело в том как других заразить.

Nick
Не в сети
Зарегистрирован: 20/09/2010

[quote=Vitls][quote=frug]Есть задача перенаправлять соединения с локального интерфейса роутера
на удалённый почтовый сервер.
То есть клиент подключается на адрес 192.168.1.1:8110 а соединение перенаправляется на pop.mail.ru:110, при этом трафик не маршрутизируется и клиенту вообще не указан default route.
Быть может есть более подходящие инструменты для реализации этой задачи ?[/quote]
gated какой-нить.[/quote]

Нафига gated? ICMP redirect отправлять? БОльшая часть файрволов его режет. iptables -j DNAT и все будет хорошо.

RSS-материал