Перейти до

Поделитесь правилами


Гость Admin

Рекомендованные сообщения

Она работает и на tcp и на udp.

ИМХО она работает всё-же по UDP, а по TCP она _может_ работать, если её попросить специально :tongue:

 

и по теме: вот моё творчество в плане правил (это переходный вариант к роутингу на несколько инет каналов, поэтому там кое-что лишнее. Не смущайтесь... всё равно я пока не понял, как это настраивать :loop:

---------------------------------------------

#!/bin/bash

# Script to control packet filtering.

# (adapting for 2-3 inet routers)

 

# subnets

tamnet="10.100.0.0/16"

goldnet="10.2.0.0/16"

ornet="10.1.0.0/16"

modem0net="10.0.0.0/29"

modem1net="10.0.51.0/29"

modem2net=""

 

# hosts/routers

modem0_ip="10.0.0.1" #

modem0_gw="10.0.0.2" # my modem

modem0_bk="10.0.0.7" #

modem1_ip="10.0.51.2" #

modem1_gw="10.0.51.1" # Danek modem

modem1_bk="10.0.51.7" #

main_gw="10.100.100.115"

prideland_gw="10.100.151.21" # router to other network

 

# interfaces

LAN="eth0"

WAN0="eth1"

#WAN1="eth0"

WAN1="eth0:1"

 

IPT=/usr/local/sbin/iptables

IP=/sbin/ip

action=$1

 

#Turn on source address verification in kernel

function kernel_setup () {

if [ -e /proc/sys/net/ipv4/conf/all/rp_filter ]; then

for f in /proc/sys/net/ipv4/conf/*/rp_filter; do

echo 1 > $f

done

fi

}

 

function clear () {

echo "Clear iptables chains..."

echo 0 > /proc/sys/net/ipv4/ip_forward

$IPT -F; $IPT -X; $IPT -Z

$IPT -t nat -F; $IPT -t nat -X; $IPT -t nat -Z

$IPT -t mangle -F; $IPT -t mangle -X; $IPT -t mangle -Z

$IPT -P INPUT ACCEPT

$IPT -P FORWARD ACCEPT

$IPT -P OUTPUT ACCEPT

echo "Clear route table..."

route del -net $ornet gw $prideland_gw

route del -net $goldnet gw $prideland_gw

route del -host $prideland_gw gw $main_gw

route del -net $modem0net dev $WAN0

route del -net $modem1net dev $WAN1

route del gw $modem0_ip

$IP route flush all

# srazu vosstalovit' loopback

route add -net 127.0.0.0 netmask 255.0.0.0 lo

# esli nado, podnyat' alias

if [ -z `ifconfig|grep eth0:1` ]; then

ifconfig $WAN1 $modem1_ip netmask 255.255.255.248 broadcast $modem1_bk

fi

echo "---------- Done ----------"

echo

}

 

function start () {

clear

kernel_setup

 

#######################

#Creating custom chains.

 

# Logging chains

$IPT -N LDROP

$IPT -A LDROP -p tcp -j LOG --log-level info --log-prefix "DROP "

$IPT -A LDROP -p udp -j LOG --log-level info --log-prefix "DROP "

$IPT -A LDROP -p icmp -j LOG --log-level info --log-prefix "DROP "

$IPT -A LDROP -f -j LOG --log-level warning --log-prefix "DROP "

$IPT -A LDROP -j DROP

$IPT -N LREJECT

$IPT -A LREJECT -p tcp -j LOG --log-level info --log-prefix "REJECT "

$IPT -A LREJECT -p udp -j LOG --log-level info --log-prefix "REJECT "

$IPT -A LREJECT -p icmp -j LOG --log-level info --log-prefix "REJECT "

$IPT -A LREJECT -f -j LOG --log-level warning --log-prefix "REJECT "

$IPT -A LREJECT -j REJECT

$IPT -N LACCEPT

$IPT -A LACCEPT -p tcp -j LOG --log-level info --log-prefix "ACCEPT "

$IPT -A LACCEPT -p udp -j LOG --log-level info --log-prefix "ACCEPT "

$IPT -A LACCEPT -p icmp -j LOG --log-level info --log-prefix "ACCEPT "

$IPT -A LACCEPT -f -j LOG --log-level warning --log-prefix "ACCEPT "

$IPT -A LACCEPT -j ACCEPT

# Reject and close tcp connect

$IPT -N TREJECT

$IPT -A TREJECT -p tcp -j REJECT --reject-with tcp-reset

$IPT -A TREJECT -p ! tcp -j REJECT --reject-with icmp-port-unreachable

$IPT -A TREJECT -j REJECT

 

# OTHER NET

# Дропать пакеты, предназначенные для форварда в GOLDNET/ORNET

# Пропускать только тех, кто заплатил за доступ к серверу

$IPT -N OTHERNET

$IPT -A OTHERNET -j DROP

 

# billing chain

# через эту цепочку проходят все пакеты из/в интернет

$IPT -N BILL

$IPT -A BILL -j DROP

 

# Examples for billing accept/deny rules

# Пример того, что работает в скриптах вкл/выкл инет

# $IPT -I BILL -d $ip -j RETURN # turn on internet

# $IPT -I BILL -s $ip -j RETURN # turn on internet

# $IPT -D BILL -d $ip -j RETURN # turn off internet

# $IPT -D BILL -s $ip -j RETURN # turn off internet

 

# limit icmp chain

$IPT -N ICMP

$IPT -A ICMP -p icmp -m limit --limit 3/s -j ACCEPT

$IPT -A ICMP -j DROP

 

#######################################################

# Main chains

#######################################################

# PREROUTING ################

echo "Createing tables: PREROUTING..."

# подготовка к извратной маршрутизации

iptables -t mangle -I PREROUTING -p tcp -s 10.100.0.0/16 --dport 20:21 -j MARK --set-mark 0x10

iptables -t mangle -I PREROUTING -p tcp -s 10.100.0.0/16 --dport 22 -j MARK --set-mark 0x10

iptables -t mangle -I PREROUTING -p tcp -s 10.100.0.0/16 --dport 25 -j MARK --set-mark 0x10

iptables -t mangle -I PREROUTING -p tcp -s 10.100.0.0/16 --dport 110 -j MARK --set-mark 0x10

 

# INPUT #####################

echo " INPUT..."

$IPT -A INPUT -i lo -j ACCEPT

 

#Block nonroutable IPs

$IPT -A INPUT -s 10.0.0.0/8 -i $WAN0 -j DROP

$IPT -A INPUT -s 127.0.0.0/8 -i $WAN0 -j DROP

$IPT -A INPUT -s 172.16.0.0/12 -i $WAN0 -j DROP

$IPT -A INPUT -s 192.168.0.0/16 -i $WAN0 -j DROP

#Block Back Orifice

$IPT -A INPUT -p tcp -i $WAN0 --dport 31337 -j LDROP

$IPT -A INPUT -p udp -i $WAN0 --dport 31337 -j LDROP

#Block NetBus

$IPT -A INPUT -p tcp -i $WAN0 --dport 12345:12346 -j LDROP

$IPT -A INPUT -p udp -i $WAN0 --dport 12345:12346 -j LDROP

#Block Trin00

$IPT -A INPUT -p tcp -i $WAN0 --dport 1524 -j LDROP

$IPT -A INPUT -p tcp -i $WAN0 --dport 27665 -j LDROP

$IPT -A INPUT -p udp -i $WAN0 --dport 27444 -j LDROP

$IPT -A INPUT -p udp -i $WAN0 --dport 31335 -j LDROP

 

#Block Multicast

#$IPT -A INPUT -s 224.0.0.0/8 -d 0/0 -j DROP

#$IPT -A INPUT -s 0/0 -d 224.0.0.0/8 -j DROP

 

#Rejecting (not denying) ident requests.

$IPT -A INPUT -p tcp -i $WAN0 --dport 113 -j TREJECT

$IPT -A INPUT -p udp -i $WAN0 --dport 113 -j TREJECT

 

$IPT -A INPUT -p tcp --dport 3128 -i $LAN -j BILL

$IPT -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

$IPT -A INPUT -p icmp -j ICMP

$IPT -A INPUT -p tcp --dport 22 -i $WAN0 -j DROP # Wapr Old - SSH blocked

$IPT -A INPUT -p tcp --dport 80 -i $WAN0 -j DROP # Wapr Old - HTTP blocked

$IPT -A INPUT -p udp --dport 111 -i $WAN0 -j DROP # Wapr Old - sunrpc

$IPT -A INPUT -p tcp --dport 111 -i $WAN0 -j DROP # Wapr Old - sunrpc

$IPT -A INPUT -p udp --dport 135:138 -i $WAN0 -j DROP # Wapr Old - NetBIOS blocked

$IPT -A INPUT -p udp --dport 445 -i $WAN0 -j DROP # Wapr Old - NetBIOS blocked

$IPT -A INPUT -p tcp --dport 135 -i $WAN0 -j DROP # Wapr Old - NetBIOS blocked

$IPT -A INPUT -p tcp --dport 139 -i $WAN0 -j DROP # Wapr Old - NetBIOS blocked

$IPT -A INPUT -p tcp --dport 143 -i $WAN0 -j DROP # Wapr Old - IMAP blocked

$IPT -A INPUT -p tcp --dport 445 -i $WAN0 -j DROP # Wapr Old - NetBIOS blocked

$IPT -A INPUT -p tcp --dport 593 -i $WAN0 -j DROP # Wapr Old - NetBIOS blocked

$IPT -A INPUT -p tcp --dport 5555:5556 -i $WAN0 -j DROP # Wapr Old - Stargazer blocked

$IPT -A INPUT -p udp --dport 5554:5556 -i $WAN0 -j DROP # Wapr Old - Stargazer blocked

$IPT -A INPUT -p tcp -s ! $tamnet --dport 1114 -j DROP # close all nonlocal query to MiniSQL

$IPT -A INPUT -p tcp -s ! $tamnet --dport 3306 -j DROP # close all nonlocal query to MySQL

$IPT -A INPUT -i $LAN -s $tamnet -j ACCEPT # open local net

 

# FORWARD

echo " FORWARD..."

$IPT -A FORWARD -i lo -j ACCEPT

$IPT -A FORWARD -i $WAN1 -o $LAN # -l BILL # free inet

$IPT -A FORWARD -i $LAN -o $WAN1 # -l BILL # free inet

$IPT -A FORWARD -i $WAN0 -o $LAN -j BILL

$IPT -A FORWARD -i $LAN -o $WAN0 -j BILL

$IPT -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT

$IPT -A FORWARD -p icmp -j ICMP

 

# OUTPUT

echo " OUTPUT..."

$IPT -A OUTPUT -p tcp --sport 3128 -o $LAN -j BILL # query trough squid

 

# POSTROUTING

echo " POSTROUTING..."

$IPT -t nat -A POSTROUTING -d $goldnet -j SNAT --to-source $main_gw

$IPT -t nat -A POSTROUTING -d $ornet -j SNAT --to-source $main_gw

$IPT -t nat -A POSTROUTING -o $WAN0 -j SNAT --to-source $modem0_ip

# for test two link

#$IPT -t nat -A POSTROUTING -o $WAN1 -j SNAT --to-source $modem1_ip

$IPT -t nat -A POSTROUTING -s $tamnet -d $modem1net -j SNAT --to-source $modem1_ip

echo "Done"

 

# ROUTING TABLE

echo "Creating routing: to networks"

route add -net $tamnet dev $LAN

route add -net $modem0net dev $WAN0

route add -net $modem1net dev $WAN1

route add -net $goldnet gw $prideland_gw

route add -net $ornet gw $prideland_gw

echo " to hosts"

#route add -host $prideland_gw gw $main_gw

echo " default gw"

route add default gw $modem0_ip dev $WAN0 #сам не понял, но без этого не работает :(

route add default gw $modem0_gw dev $WAN0

route del default gw $modem0_ip dev $WAN0

# for test two link

route add default gw $modem1_ip dev $WAN1

 

echo "Done"

 

echo 1 > /proc/sys/net/ipv4/ip_forward

 

}

 

function stop () {

clear

}

 

case $action in

start)

start;;

stop)

stop;;

restart)

stop; start;;

*)

echo "Please, use this script with start/stop/restart option."

esac

-----------------------------

Тут видимо надо добавить схему соединений...

          |                                                |
     +---------+                                      +---------+
     | Router1 |                                      | Router0 |
     +---------+                                      +---------+
          |10.0.51.1       10.0.51.2/29                    |  10.0.0.2
          |                  eth0:1 +-------------+        |
====================================| Server MAIN |--------+
 |     |      |                eth0 +-------------+ eth1
 |     |      |            10.100.100.115/16        10.0.0.1/24
User  User    User

Кстати, если кто мне покажет, как сбалансировать трафик при этой схеме, моя благодарность не будет иметь границ... но в разумных пределах :(

Ссылка на сообщение
Поделиться на других сайтах
  • 3 weeks later...

Что-то я перепробовал все варианты скриптов, а основную проблемму не решил. подскажите плиз, как убивать открытые соединения.

 

Я закрываю FORWARD и выключаю маскарад для клиента, но если качал что-то то оно и продолжает качать. :)

 

RH9.0, iptables......

Ссылка на сообщение
Поделиться на других сайтах
Что-то я перепробовал все варианты скриптов, а основную проблемму не решил. подскажите плиз, как убивать открытые соединения.

 

Я закрываю FORWARD и выключаю маскарад для клиента, но если качал что-то то оно и продолжает качать. :)

 

RH9.0, iptables......

По умолчанию какая у тя политика на форвард?

Какая цепочка используется? FILTER?

Как ни крути, стандарт подойдет только в идентичной ситуации.

Всегда приходится что-то по месту править. Проверять. Править....

Ссылка на сообщение
Поделиться на других сайтах
По умолчанию какая у тя политика на форвард?

DROP

Какая цепочка используется? FILTER?

да

Я опытным путем шел, пока закрыл эту дыру.

Все-таки системы разные, версии, настройки разные, вот и разный результат.

На другом сервере я настраивал людям, так что-то добавлял еще, не так как у себя.

Это все-таки не мастдайка, тут несколько вариантов решения может быть.

Есть тулзы для просмотра проходящего трафика, надо смотреть, вносить изменения, пробовать.

Нет панацеи.

Ссылка на сообщение
Поделиться на других сайтах

Создайте аккаунт или войдите в него для комментирования

Вы должны быть пользователем, чтобы оставить комментарий

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!

Зарегистрировать аккаунт

Вхід

Уже зарегистрированы? Войдите здесь.

Войти сейчас
  • Зараз на сторінці   0 користувачів

    Немає користувачів, що переглядають цю сторінку.

×
×
  • Створити нове...