LINUX.ORG.RU
ФорумAdmin

iptables (forward)


0

0

роутер с двумя сеиев.картами

мой скрипт

в account.conf список ip-адресов

#!/bin/bash ipt="/sbin/iptables" HOSTS=`cat /etc/rc.d/account.conf`

INET_IF='eth1' INET_IP='192.168.14.99'

tcp_port="21,22,25,80,443" udp_port="53,67,68,137,138,139"

$ipt -F $ipt -t nat -F $ipt -X

$ipt -P INPUT DROP $ipt -P OUTPUT DROP $ipt -P FORWARD DROP

# rules for router $ipt -A INPUT -i $INET_IF -p tcp -m multiport --dports $tcp_port -j ACCEPT $ipt -A INPUT -i $INET_IF -p udp -m multiport --dports $udp_port -j ACCEPT $ipt -A INPUT -i $INET_IF -p icmp -j ACCEPT $ipt -A OUTPUT -o $INET_IF -p tcp -m multiport --dports $tcp_port -j ACCEPT $ipt -A OUTPUT -o $INET_IF -p udp -m multiport --dports $udp_port -j ACCEPT $ipt -A OUTPUT -o $INET_IF -p icmp -j ACCEPT

addrule(){ $ipt -N allw_$1 $ipt -N t_in_$1 $ipt -N t_out_$1 $ipt -F t_in_$1 $ipt -F t_out_$1 $ipt -A INPUT -p tcp -m multiport --dports $tcp_port -s $2 -j allw_$1 $ipt -A INPUT -p udp -m multiport --dports $udp_port -s $2 -j allw_$1 $ipt -A INPUT -p icmp -s $2 -j allw_$1 $ipt -A FORWARD -d $2 -i $INET_IF -j t_in_$1 $ipt -A FORWARD -s $2 -o $INET_IF -j t_out_$1 $ipt -A OUTPUT -p tcp -m multiport --dports $tcp_port -d $2 -j allw_$1 $ipt -A OUTPUT -p udp -m multiport --dports $udp_port -d $2 -j allw_$1 $ipt -A OUTPUT -p icmp -d $2 -j allw_$1 # $ipt -A allw -j LOG $ipt -A allw_$1 -j ACCEPT $ipt -A t_in_$1 -j ACCEPT $ipt -A t_out_$1 -j ACCEPT $ipt -t nat -A POSTROUTING -s $1 -o $INET_IF -j SNAT --to-source $INET_IP }

for HOST in $HOSTS do addrule $HOST $HOST done

вопросы: 1. качаю для примера с локальн.сети провайдера файл размером ~ 500 Кб, в цепочке t_in_ip приблизительно в два раза больше (~ 1000кБ), в чем может быть ошибка?

2. при включении форвардинга ( /proc/sys/net/ipv4/ip_forward=1) выдает сообщение Neighbor table overflow, при этом форвардинг работает. Наверное нужно увеличить какой-то параметр в /proc/sys/net, какой или дело в чем-то другом?

3. Как сделать, чтобы логи iptables выводились только в /var/log/message, а то у меня выводиться и в файл и на консоль (забыл где какой параметр исправить)?

Огромное спасибо

anonymous
Ответ на: комментарий от dRon

ИЗВИНЯЮСЬ

#!/bin/bash ipt="/sbin/iptables" HOSTS=`cat /etc/rc.d/account.conf`

INET_IF='eth1' INET_IP='192.168.14.99'

tcp_port="21,22,25,80,443" udp_port="53,67,68,137,138,139"

$ipt -F $ipt -t nat -F $ipt -X

$ipt -P INPUT DROP $ipt -P OUTPUT DROP $ipt -P FORWARD DROP

# rules for router $ipt -A INPUT -i $INET_IF -p tcp -m multiport --dports $tcp_port -j ACCEPT

$ipt -A INPUT -i $INET_IF -p udp -m multiport --dports $udp_port -j ACCEPT

$ipt -A INPUT -i $INET_IF -p icmp -j ACCEPT

$ipt -A OUTPUT -o $INET_IF -p tcp -m multiport --dports $tcp_port -j ACCEPT

$ipt -A OUTPUT -o $INET_IF -p udp -m multiport --dports $udp_port -j ACCEPT

$ipt -A OUTPUT -o $INET_IF -p icmp -j ACCEPT

addrule(){ $ipt -N allw_$1

$ipt -N t_in_$1

$ipt -N t_out_$1

$ipt -F t_in_$1

$ipt -F t_out_$1

$ipt -A INPUT -p tcp -m multiport --dports $tcp_port -s $2 -j allw_$1

$ipt -A INPUT -p udp -m multiport --dports $udp_port -s $2 -j allw_$1

$ipt -A INPUT -p icmp -s $2 -j allw_$1

$ipt -A FORWARD -d $2 -i $INET_IF -j t_in_$1

$ipt -A FORWARD -s $2 -o $INET_IF -j t_out_$1

$ipt -A OUTPUT -p tcp -m multiport --dports $tcp_port -d $2 -j allw_$1

$ipt -A OUTPUT -p udp -m multiport --dports $udp_port -d $2 -j allw_$1

$ipt -A OUTPUT -p icmp -d $2 -j allw_$1

$ipt -A allw_$1 -j ACCEPT

$ipt -A t_in_$1 -j ACCEPT

$ipt -A t_out_$1 -j ACCEPT

$ipt -t nat -A POSTROUTING -s $1 -o $INET_IF -j SNAT --to-source $INET_IP

}

for HOST in $HOSTS do addrule $HOST $HOST done

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.