Страница 1 из 1

Помогите настроить IPTABLES

Добавлено: 04 июн 2008, 22:26
Dark_Sarmat
Народ, прочитал Вашу ствтью на Wiki, но IPTABLES ругается на то что там синтаксис не тот.
Система Linux Debifn RC3
Задача
2 сетевые платы: 1) LAN диапазон ip 192.168.125.1-254
2) WAN IP 172.17.222.X

Задача, нужно чтобы сервер работал в роли маршрутизатора. Из LAN в WAN и обратно бегали пакеты только ping, 1723 и GRE
Остальные порты на WAN можно закрыть.
На LAN сетевухе должно быть доступно все.
Помогите, выложите правила. атио у меня ничего не получается.

Добавлено: 05 июн 2008, 00:28
angor
Оракулов тут нет - даю гарантию. Ошибки в студию.

Добавлено: 05 июн 2008, 00:48
angor
А ваще.. я тут переделал свое.. (сорри, мог ошибиться, но отладить не проблема). Не ругайте, если что упустил.
#!/bin/sh
#(c) ugenk :) fixed by angor

IPTABLES=/sbin/iptables
LAN=192.168.125.0/24
##### set to real ip ######
WAN_IP=172.17.222.X

case "$1" in
start)

echo "Starting firewall"
echo 1 >/proc/sys/net/ipv4/ip_forward
modprobe ip_conntrack_ftp
modprobe ip_conntrack_irc


$IPTABLES -A INPUT -i lo -j ACCEPT

####### NAT #######
$IPTABLES -t nat -A POSTROUTING -p 47 -s $LAN -j SNAT --to-source $WAN_IP
$IPTABLES -t nat -A POSTROUTING -p tcp -s $LAN --dport 1723 -j SNAT --to-source $WAN_IP
$IPTABLES -t nat -A POSTROUTING -p icmp -s $LAN -j SNAT --to-source $WAN_IP


echo "Done..."
;;
stop)
echo "Flushing all firewall rules"
$IPTABLES -P INPUT ACCEPT
$IPTABLES -P FORWARD ACCEPT
$IPTABLES -F
$IPTABLES -F -t nat
;;
restart)
$0 stop
$0 start
;;
reload)
echo "Function not implemented. Use restart instead."
;;
*)
echo "Usage: $0 {start|stop|restart}"
;;
esac

exit 0
я такое обозвал iptables, положил в /etc/init.d/, и сделал нечто типа "update-rc.d iptables defaults". Затем привычно /etc/init.d/iptables start/stop

Добавлено: 05 июн 2008, 01:00
leave
Из LAN в WAN и обратно бегали пакеты только ping, 1723 и GRE
и тут же
modprobe ip_conntrack_ftp
modprobe ip_conntrack_irc
зачем?

Добавлено: 05 июн 2008, 08:36
Hermit

Код: Выделить всё

iptables -P FORWARD DROP
iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A FORWARD -i <LAN_IFACE> -p gre -j ACCEPT
iptables -A FORWARD -i <LAN_IFACE> -p tcp --dport 1723 -j ACCEPT
iptables -A FORWARD -i <LAN_IFACE> -p icmp -j ACCEPT
если нужен нат, то еще

Код: Выделить всё

iptables -t nat -A POSTROUTING -o <WAN_IFACE> -j SNAT --to <WAN_IP>
modprobe ip_nat_pptp

Добавлено: 05 июн 2008, 22:13
Llama
Dark_Sarmat, вы не просите помощи, вы просите чтобы все сдалели за вас.

я _не_вижу_ описания проблемы.
Если я его тут не увижу - тема отправится в помоку.

Добавлено: 06 июн 2008, 08:44
Dark_Sarmat
После отладки и анализа пришел к выводу, что наиболее оптимальным является следующий код:

Код: Выделить всё

#!/bin/sh
#firewall

IPTABLES=/sbin/iptables
LAN=192.168.125.0/24
##### set to real ip ######
WAN_IP=172.17.222.XXX

case "$1" in
start)

echo "Starting firewall"
echo 1 >/proc/sys/net/ipv4/ip_forward
modprobe ip_nat_pptp


$IPTABLES -A INPUT -i lo -j ACCEPT

####### NAT ####### 
$IPTABLES -t nat -A POSTROUTING -p 47 -s $LAN -j SNAT --to-source $WAN_IP 
$IPTABLES -t nat -A POSTROUTING -p tcp -s $LAN --dport 1723 -j SNAT --to-source $WAN_IP 
$IPTABLES -t nat -A POSTROUTING -p icmp -s $LAN -j SNAT --to-source $WAN_IP 


echo "Done..." 
;; 
stop) 
echo "Flushing all firewall rules" 
$IPTABLES -P INPUT ACCEPT 
$IPTABLES -P FORWARD ACCEPT 
$IPTABLES -F 
$IPTABLES -F -t nat 
;; 
restart) 
$0 stop 
$0 start 
;; 
reload)
echo "Function not implemented. Use restart instead." 
;; 
*) 
echo "Usage: $0 {start|stop|restart}"
;; 
esac 

exit 0
Огромное спасибо за помощ и советы товарищам angor и Hermit
Если хотите, могу угостить пивом. Пишите в личку

Добавлено: 06 июн 2008, 09:00
Hermit
Dark_Sarmat, при использовании такого скрипта фаервол не будет уничтожать никакие пакеты, просто для pptp и icmp будет выполнятся нат, для остальных пакетов - нет, НО ВСЕ пакеты покинут маршрутизатор.

Добавлено: 07 июн 2008, 18:46
Dark_Sarmat
а как сделать так, чтобы через маршрутизатор бегали только pptp и imcp пакеты чтобы от провайдера ко мне в сеть никакой лишней дряни не валило и от меня к провайдеру.

Добавлено: 07 июн 2008, 21:51
Hermit
Dark_Sarmat, см мой пост выше

Добавлено: 10 июн 2008, 13:43
assd
Dark_Sarmat писал(а):а как сделать так, чтобы через маршрутизатор бегали только pptp и imcp пакеты чтобы от провайдера ко мне в сеть никакой лишней дряни не валило и от меня к провайдеру.
Переключить политику цепочки FORWARD - в DROP, т.е. по-умолчанию все будет отбрасываться кроме пакетов подходящих под нижеописанные плавила. И составить список всего, что должно бегать.

т.е. цепочка FORWARD будет иметь следующий вид:

Код: Выделить всё

$IPTABLES -P FORWARD DROP
$IPTABLES -A FORWARD -m state --state related,established -j ACCEPT
$IPTABLES -A FORWARD -p 47 -s $LAN -j ACCEPT
$IPTABLES -A FORWARD -p tcp -s $LAN --dport 1723 -j ACCEPT
$IPTABLES -A FORWARD -p icmp -s $LAN -j ACCEPT
А вообще, изучите порядок прохождения пакетов http://www.opennet.ru/docs/RUS/iptables ... NGOFTABLES
И узрите узкие места где пакеты можно и нужно брать "за яйца" =)

Добавлено: 30 июн 2008, 12:38
Dark_Sarmat
Линухе почему-то не нравится строчка $IPTABLES -P DROP

Добавлено: 30 июн 2008, 13:17
br
Dark_Sarmat писал(а):Линухе почему-то не нравится строчка $IPTABLES -P DROP
Потому что пропущена цепочка, для которой задается полиси. Должно быть `iptables -P INPUT DROP', например.

Добавлено: 30 июн 2008, 17:23
Hermit
FORWARD а данном случае :)

Добавлено: 30 июн 2008, 23:10
Dark_Sarmat
Ок, утром попробую как работать будет, ато сейчас инет не стоит вырубать.