Ведь для web надо 2 порта) 80 (tcp) и 53 (udp) 443 (tcp)
а торрент может работать на любом порте. искать сидов можно по DHT. на практике не получается конечно, но в ED2K всё работает. smile
Ведь для web надо 2 порта) 80 (tcp) и 53 (udp) 443 (tcp)
а торрент может работать на любом порте. искать сидов можно по DHT. на практике не получается конечно, но в ED2K всё работает. smile
А вот мой стандартыный скрипт знаю что надо перевести на переменные но пока лень smile
#!/bin/bash
echo "1" > /proc/sys/net/ipv4/ip_forward
echo 1 > /proc/sys/net/ipv4/ip_dynaddr
modprobe iptable_nat
modprobe ip_conntrack_ftp
modprobe ip_nat_ftp
iptables -F
iptables -F -t nat
iptables -F -t mangle
iptables -P INPUT DROP
iptables -P OUTPUT DROP
iptables -P FORWARD DROP
#Маскардинг в инет и локалку
iptables --table nat --append POSTROUTING --out-interface ppp0 -j MASQUERADE
iptables --table nat --append POSTROUTING --out-interface eth1 -j MASQUERADE
iptables -I FORWARD -p tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu
#Разрешаем порты для l2tp
iptables -A INPUT -i eth1 -p udp --dport 1701 --sport 1701 -j ACCEPT
iptables -A OUTPUT -o eth1 -p udp --sport 1701 --dport 1701 -j ACCEPT
iptables -A INPUT -i eth1 -p udp --dport 500 --sport 500 -j ACCEPT
iptables -A OUTPUT -o eth1 -p udp --sport 500 --dport 500 -j ACCEPT
iptables -A INPUT -i eth1 -p udp --dport 47 --sport 47 -j ACCEPT
iptables -A OUTPUT -o eth1 -p udp --sport 47 --dport 17 -j ACCEPT
# разрешаем локальный траффик для loopback и внутренней сети
iptables -A INPUT -i lo -j ACCEPT
iptables -A OUTPUT -o lo -j ACCEPT
iptables -A INPUT -i eth0 -j ACCEPT
iptables -A OUTPUT -o eth0 -j ACCEPT
# ICMP разрешаем пинг с локальной сети провайдера до сервера
iptables -A INPUT -i eth1 -p icmp -j ACCEPT
iptables -A OUTPUT -o eth1 -p icmp -j ACCEPT
iptables -A INPUT -i ppp0 -p icmp -j ACCEPT
iptables -A OUTPUT -o ppp0 -p icmp -j ACCEPT
# Отбрасывать все пакеты, которые не могут быть идентифицированы и поэтому не могут иметь определенного статуса.
iptables -A INPUT -m state --state INVALID -j DROP
iptables -A FORWARD -m state --state INVALID -j DROP
# Принимать все пакеты, которые инициированы из уже установленного соединения, и имеющим признак ESTABLISHED.
# Состояние ESTABLISHED говорит о том, что это не первый пакет в соединении.
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
# Приводит к связыванию системных ресурсов, так что реальных обмен данными становится не возможным.
iptables -A INPUT -p tcp ! --syn -m state --state NEW -j DROP
iptables -A OUTPUT -p tcp ! --syn -m state --state NEW -j DROP
# Разрешаем ssh серверу
iptables -A INPUT -i eth1 -p tcp --dport 22 -j ACCEPT
iptables -A OUTPUT -o eth1 -p tcp --sport 22 -j ACCEPT
# Разрешаем dns серверу
iptables -A INPUT -i eth1 -p udp --sport 53 -j ACCEPT
iptables -A OUTPUT -o eth1 -p udp --dport 53 -j ACCEPT
#Разрешаем пинговать узлы интернета
iptables -A INPUT -i ppp0 -p icmp -j ACCEPT
iptables -A OUTPUT -o ppp0 -p icmp -j ACCEPT
#Разрешаем серверу http и dydns
iptables -A INPUT -i ppp0 -p tcp --sport 80 -j ACCEPT
iptables -A OUTPUT -o ppp0 -p tcp --dport 80 -j ACCEPT
#Разрешаем серверу https и webmin
iptables -A INPUT -i eth1 -p tcp --dport 443 -j ACCEPT
iptables -A OUTPUT -o eth1 -p tcp --sport 443 -j ACCEPT
iptables -A INPUT -i eth1 -p tcp --dport 10000 -j ACCEPT
iptables -A OUTPUT -o eth1 -p tcp --sport 10000 -j ACCEPT
#Netbios серверу нафиг не надо)
#Разрешаем серверу ftp
iptables -A INPUT -i ppp0 -p tcp --sport 21 --dport 21 -j ACCEPT
iptables -A OUTPUT -o ppp0 -p tcp --sport 21 --dport 21 -j ACCEPT
#Ну а тут разрешаем пользователям внутренней сети доступ в инет и в локалку
iptables -A FORWARD -i eth0 -o ppp0 -p tcp -m multiport --dport 80,443,110,25,143,5190 -j ACCEPT
iptables -A FORWARD -i eth0 -o eth1 -p udp --dport 53 -j ACCEPT
iptables -A FORWARD -i ppp0 -o eth0 -p tcp -m multiport --sport 80,110,443,25,143,5190 -j ACCEPT
iptables -A FORWARD -i eth1 -o eth0 -p udp --sport 53 -j ACCEPT
iptables -A FORWARD -i eth0 -o eth1 -p tcp -m multiport --dport 80,443,110,25,143,5190 -j ACCEPT
iptables -A FORWARD -i eth1 -o eth0 -p tcp -m multiport --sport 80,110,443,25,143,5190 -j ACCEPT
#Разрешаем пинговать узлы интернета
iptables -A FORWARD -i eth0 -o ppp0 -p icmp -j ACCEPT
iptables -A FORWARD -i ppp0 -o eth0 -p icmp -j ACCEPT
#Разрешаем RDP
iptables -A FORWARD -i eth0 -o eth1 -p tcp --dport 3389 -j ACCEPT
iptables -A FORWARD -i eth1 -o eth0 -p tcp --sport 3389 -j ACCEPT
#Бхгалтерия
iptables -A FORWARD -i eth0 -o ppp0 -p tcp --dport 1024 -j ACCEPT
iptables -A FORWARD -i ppp0 -o eth0 -p tcp --sport 1024 -j ACCEPT
iptables -A FORWARD -i eth0 -o ppp0 -p udp --dport 55777 -j ACCEPT
iptables -A FORWARD -i ppp0 -o eth0 -p udp --sport 55777 -j ACCEPT
#Разрешаем NETBIOS
iptables -A FORWARD -i eth0 -o eth1 -p udp -m multiport --ports 135,136,137,138,139,445 -j ACCEPT
iptables -A FORWARD -i eth0 -o eth1 -p tcp -m multiport --ports 135,136,137,138,139,445 -j ACCEPT
iptables -A FORWARD -i eth1 -o eth0 -p udp -m multiport --ports 135,136,137,138,139,445 -j ACCEPT
iptables -A FORWARD -i eth1 -o eth0 -p tcp -m multiport --ports 135,136,137,138,139,445 -j ACCEPT
#Разрешаем пинговать узлы локальной сети
iptables -A FORWARD -i eth0 -o eth1 -p icmp -j ACCEPT
iptables -A FORWARD -i eth1 -o eth0 -p icmp -j ACCEPT
#Порт маппинг radmin
iptables -t nat -A PREROUTING -p tcp -i ppp0 --dport порт -j DNAT --to-destination ип:порт
iptables -A FORWARD -p tcp -s ип --sport порт -j ACCEPT
iptables -A FORWARD -p tcp -d ип --dport порт -j ACCEP
И юзеры получают всё что им надо и не каких торрентов и всякой гадости.
Если надо собирать логи как пример
iptables -t nat -A PREROUTING -p tcp -i vlan5 --dport 80 -m limit --limit 1/min -j LOG --log-prefix "Incominglocal80: "
iptables -t nat -A PREROUTING -p tcp -i vlan5 --dport 80 -j DNAT --to-destination 172.16.0.100:80
Ну собственно настраиваем syslog-ng
source s_all {
# message generated by Syslog-NG
internal();
# standard Linux log source (this is the default place for the syslog()
# function to send logs to)
unix-stream("/dev/log");
# messages from the kernel
file("/proc/kmsg" log_prefix("kernel: "));
# use the following line if you want to receive remote UDP logging messages
# (this is equivalent to the "-r" syslogd flag)
# udp();
};
# destinations
#firewall
destination httplocal { file("/var/log/firewall/httplocal.log"); };
#firewall
filter httplocal80 { match (Incominglocal80:); };
#firewall
log {
source(s_all);
filter(httplocal80);
destination(httplocal);
};
в смысле - торренты не работают, а веб работает?
торренты должны работать, но только когда канал свободен.
Итого: манипуляции с портами вам НЕ помогут.
Ну, а если не закрывать, а только ограничивать скорость? Насколько я понимаю большинство торрент программ очень хитрожопные, и они лезут через что можно) Качалки будут думать что все круто, и канал загружаться не будет.
Kettler, ну я маленько по другому помечаю
а разделение приоритета хочу сделать по портам через tc.
[quote=drBatty]в смысле - торренты не работают, а веб работает?
торренты должны работать, но только когда канал свободен.
Итого: манипуляции с портами вам НЕ помогут.
Ну, а если не закрывать, а только ограничивать скорость? Насколько я понимаю большинство торрент программ очень хитрожопные, и они лезут через что можно) Качалки будут думать что все круто, и канал загружаться не будет.
Kettler, ну я маленько по другому помечаю
а разделение приоритета хочу сделать по портам через tc.[/quote]
PS: кстати эти же правила и дома пригодятся, чтоб вручную не следить за торрентами. Чтоб более нужные вещи не тормозили, ну там ssh, онлайн-видео, онлайн игры
PSS: какой-то глюк. Как сообщение удалить?
Ну меть порты и после по фильтрам. Извращается каждый как ему удобно.
Насколько я понимаю большинство торрент программ очень хитрожопные, и они лезут через что можно)
там весь фокус в том, что закачка происходит от клиента к клиенту. при этом исходящие порты определяет удалённый сид (в настройках своего торрента), а входящий порт случайный, как и при связи с вебом. Фокус в том, что для поднятия своего рейтинга некоторые сиды ставят 80й порт, и вот такие "заблокированные" качают только с этих сидов, поднимая им рейтинг. Приоритет тоже ничего не даст. Единственная проблема - не найти треккер (торрентсру ЕМНИП не работает на 80ом порту, а может теперь и работает). Но это решаемая проблема, если использовать DHT или Kademlia.
Торренту надо не только скорость, но и количество одновремено открытых соединений резать.
Приоритет тоже ничего не даст
почему? я ставил приоритет для прокидываемого трафика 0, для всего остального 10. И соответсвенно я даже обновить пакеты на серваке вечером не смог-timeout =) Утром же когда студенты на парах/спят все нормально прошло.
elve, кстати да.
Подскажите пожалуйста почему клиент из сети 192.168.3.0/24 не имеет выход в инет? Вроде все разрешено.
Вот выкладываю сам скрипт фаирвола.
Мне нужно что бы 192.168.3.254 выходил в инет и был доступ к DNS серверу (192.168.1.77)
[root@ldap script]# cat /root/script/firewall
#!/bin/bash
inet="ppp0"
echo "1" > /proc/sys/net/ipv4/ip_forward
echo 1 > /proc/sys/net/ipv4/ip_dynaddr
modprobe iptable_nat
modprobe ip_conntrack_ftp
modprobe ip_nat_ftp
iptables -F
iptables -F -t nat
iptables -F -t mangle
iptables -P INPUT DROP
iptables -P OUTPUT DROP
iptables -P FORWARD DROP
#Маскардинг в инет и локалку
iptables --table nat --append POSTROUTING --out-interface vlan3 -j MASQUERADE
#iptables --table nat --append POSTROUTING --out-interface eth1 -j MASQUERADE
iptables --table nat --append POSTROUTING --out-interface vlan4 -j MASQUERADE
iptables --table nat --append POSTROUTING --out-interface ppp0 -j MASQUERADE
#iptables --table nat --append POSTROUTING --out-interface vlan5 -j MASQUERADE
iptables -I FORWARD -p tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu
#iptables -A FORWARD -i vlan3 -s 192.168.3.250 -o ppp0 -j DROP
#iptables -A FORWARD -i vlan3 -s 192.168.3.249 -o ppp0 -j DROP
#Разрешаем гулять всем подсетям
iptables -A FORWARD -i vlan4 -o vlan3 -j ACCEPT
iptables -A FORWARD -i vlan3 -o vlan4 -j ACCEPT
# разрешаем локальный траффик для локальной сети
iptables -A INPUT -i lo -j ACCEPT
iptables -A OUTPUT -o lo -j ACCEPT
iptables -A INPUT -i vlan3 -j ACCEPT
iptables -A OUTPUT -o vlan3 -j ACCEPT
iptables -A INPUT -i vlan4 -j ACCEPT
iptables -A OUTPUT -o vlan4 -j ACCEPT
# ICMP разрешаем пинг с локальной сети провайдера до сервера
iptables -A INPUT -i $inet -p icmp -j ACCEPT
iptables -A OUTPUT -o $inet -p icmp -j ACCEPT
# Отбрасывать все пакеты, которые не могут быть идентифицированы и поэтому не могут иметь определенного статуса.
iptables -A INPUT -m state --state INVALID -j DROP
iptables -A FORWARD -m state --state INVALID -j DROP
# Принимать все пакеты, которые инициированы из уже установленного соединения, и имеющим признак ESTABLISHED.
# Состояние ESTABLISHED говорит о том, что это не первый пакет в соединении.
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
# Приводит к связыванию системных ресурсов, так что реальных обмен данными становится не возможным.
iptables -A INPUT -p tcp ! --syn -m state --state NEW -j DROP
iptables -A OUTPUT -p tcp ! --syn -m state --state NEW -j DROP
# Разрешаем dns серверу
iptables -A INPUT -i $inet -p udp --sport 53 -j ACCEPT
iptables -A OUTPUT -o $inet -p udp --dport 53 -j ACCEPT
#Разрешаем серверу http и dydns
iptables -A INPUT -i $inet -p tcp --sport 80 -j ACCEPT
iptables -A OUTPUT -o $inet -p tcp --dport 80 -j ACCEPT
NUMBERS_I="192.168.1.127 192.168.1.173 192.168.1.174 192.168.1.177 192.168.1.178 192.168.1.179 192.168.1.180"
for number_i in `echo $NUMBERS_I`
do
#Ну а тут разрешаем пользователям внутренней сети доступ в инет и в локалку
iptables -A FORWARD -s $number_i -o $inet -p tcp -m multiport --dport 80,443,110,25,143,5190,20,21,50225 -j ACCEPT
iptables -A FORWARD -i $inet -d $number_i -p tcp -m multiport --sport 80,443,110,25,143,5190,20,21,50225 -j ACCEPT
done
NUMBERS_I2="192.168.3.249 192.168.3.250 192.168.3.254"
for number_i2 in `echo $NUMBERS_I2`
do
##Ну а тут разрешаем пользователям внутренней сети доступ в инет и в локалку
iptables -A FORWARD -s $number_i2 -o $inet -p tcp -j ACCEPT
iptables -A FORWARD -i $inet -d $number_i2 -p tcp -j ACCEPT
done
#inet="ppp0"
#Режем входящую
NUMBERS_VLAN="vlan3 vlan4"
for number_vl in `echo $NUMBERS_VLAN`
do
echo $number_vl
#Даём всем инет но min
iptables -t mangle -A FORWARD -i $number_vl -o $inet -j MARK --set-mark 90
iptables -t mangle -A FORWARD -i $inet -o $number_vl -j MARK --set-mark 90
tc qdisc del dev $number_vl root
tc qdisc add dev $number_vl root handle 1: htb
tc class add dev $number_vl parent 1: classid 1:1 htb rate 100Mbit
tc class add dev $number_vl parent 1:1 classid 1:100 htb rate 100Mbit ceil 100Mbit prio 20
tc class add dev $number_vl parent 1:1 classid 1:90 htb rate 300Kbit ceil 400Kbit prio 90
tc class add dev $number_vl parent 1:1 classid 1:80 htb rate 1Mbit ceil 2Mbit prio 80
tc class add dev $number_vl parent 1:1 classid 1:70 htb rate 150Kbit ceil 200Kbit prio 1
tc class add dev $number_vl parent 1:1 classid 1:10 htb rate 1Mbit ceil 3Mbit prio 10
tc qdisc add dev $number_vl parent 1:100 handle 100: sfq perturb 10
tc qdisc add dev $number_vl parent 1:90 handle 90: sfq perturb 10
tc qdisc add dev $number_vl parent 1:80 handle 80: sfq perturb 10
tc qdisc add dev $number_vl parent 1:70 handle 70: sfq perturb 10
tc qdisc add dev $number_vl parent 1:10 handle 10: sfq perturb 10
tc filter add dev $number_vl parent 1:0 protocol ip prio 1 handle 100 fw classid 1:100
tc filter add dev $number_vl parent 1:0 protocol ip prio 1 handle 90 fw classid 1:90
tc filter add dev $number_vl parent 1:0 protocol ip prio 1 handle 80 fw classid 1:80
tc filter add dev $number_vl parent 1:0 protocol ip prio 1 handle 70 fw classid 1:70
tc filter add dev $number_vl parent 1:0 protocol ip prio 1 handle 10 fw classid 1:10
done
#Даём начальнику по max
iptables -t mangle -A FORWARD -s 192.168.1.173 -j MARK --set-mark 10
iptables -t mangle -A FORWARD -d 192.168.1.173 -j MARK --set-mark 10
#Между подсетями на 100
iptables -t mangle -A FORWARD -i vlan3 -o vlan4 -j MARK --set-mark 100
iptables -t mangle -A FORWARD -i vlan4 -o vlan3 -j MARK --set-mark 100
#Кому необходим интернет на средней скорости + приоритет на портах
NUMBERS_N="192.168.1.174"
for number_n in `echo $NUMBERS_N`
do
iptables -t mangle -A FORWARD -s $number_n -p tcp -m multiport --dport 80,443,110,25,143,5190,20,21,50225 -j MARK --set-mark 80
iptables -t mangle -A FORWARD -d $number_n -p tcp -m multiport --sport 80,443,110,25,143,5190,20,21,50225 -j MARK --set-mark 80
iptables -t mangle -A FORWARD -s $number_n -p udp -m multiport --dport 80,443,110,25,143,5190,20,21,50225 -j MARK --set-mark 80
iptables -t mangle -A FORWARD -d $number_n -p udp -m multiport --sport 80,443,110,25,143,5190,20,21,50225 -j MARK --set-mark 80
done
#Даём 20Kbit
NUMBERS_MAX="192.168.1.127 192.168.1.177 192.168.1.178 192.168.1.179 192.168.1.180"
for number_mx in `echo $NUMBERS_MAX`
do
iptables -t mangle -A FORWARD -s $number_mx -j MARK --set-mark 70
iptables -t mangle -A FORWARD -d $number_mx -j MARK --set-mark 70
done
NUMBERS_MAX1="192.168.3.250 192.168.3.249 192.168.3.254"
for number_mx1 in `echo $NUMBERS_MAX1`
do
iptables -t mangle -A FORWARD -s $number_mx1 -j MARK --set-mark 90
iptables -t mangle -A FORWARD -d $number_mx1 -j MARK --set-mark 90
done
#Режем исходящую
tc qdisc del dev $inet root
tc qdisc add dev $inet root handle 1: htb
tc class add dev $inet parent 1: classid 1:1 htb rate 100Mbit
tc class add dev $inet parent 1:1 classid 1:90 htb rate 300Kbit ceil 400Kbit prio 90
tc class add dev $inet parent 1:1 classid 1:80 htb rate 1Mbit ceil 2Mbit prio 80
tc class add dev $inet parent 1:1 classid 1:70 htb rate 150Kbit ceil 200Kbit prio 1
tc class add dev $inet parent 1:1 classid 1:10 htb rate 1Mbit ceil 3Mbit prio 10
tc qdisc add dev $inet parent 1:90 handle 90: sfq perturb 10
tc qdisc add dev $inet parent 1:80 handle 80: sfq perturb 10
tc qdisc add dev $inet parent 1:70 handle 70: sfq perturb 10
tc qdisc add dev $inet parent 1:10 handle 10: sfq perturb 10
tc filter add dev $inet parent 1:0 protocol ip prio 1 handle 90 fw classid 1:90
tc filter add dev $inet parent 1:0 protocol ip prio 1 handle 80 fw classid 1:80
tc filter add dev $inet parent 1:0 protocol ip prio 1 handle 70 fw classid 1:70
tc filter add dev $inet parent 1:0 protocol ip prio 1 handle 10 fw classid 1:10
iptables -A FORWARD -s $number_i2 -o $inet -p tcp -j ACCEPT
iptables -A FORWARD -i $inet -d $number_i2 -p tcp -j ACCEPT
-p tcp
просто вываливает ошибку