Форум русскоязычного сообщества Ubuntu


Считаете, что Ubuntu недостаточно дружелюбна к новичкам?
Помогите создать новое Руководство для новичков!

Автор Тема: Вопрос по маршрутизации и биллингу.  (Прочитано 14562 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн G-Dogg

  • Любитель
  • *
  • Сообщений: 73
  • Йа нубат
    • Просмотр профиля
Re: Вопрос по маршрутизации и биллингу.
« Ответ #60 : 10 Марта 2009, 17:50:59 »
Можно и так и так. Я делаю это через iptables.
Т.е. например создаю цепочку https_users в которой
$IPTABLES -A https_users -s $USER1_IP -p tcp --dport $https -j RETURN
$IPTABLES -A https_users -s 0/0 -p tcp --dport $https -j DROP
А в таблице INPUT я бросаю все пакеты из локалки, идущие на 443-й порт в цепочку https_users и все =).
долго мне не до шлюзов было. )) Т.е. это правило разрешает ТОЛЬКО USER1_IP ходить по 443 порту, остальных в топку?

Оффлайн MadKox

  • Автор темы
  • Активист
  • *
  • Сообщений: 441
  • =)
    • Просмотр профиля
    • Моя страница на Launchpad
Re: Вопрос по маршрутизации и биллингу.
« Ответ #61 : 10 Марта 2009, 17:56:56 »
Ну да... только бросать в эту цепочку пакеты нужно в правильный момент, т.е. до того, как им какое-нибудь другое правило сделало ACCEPT.
Homo homini admini est...

Оффлайн G-Dogg

  • Любитель
  • *
  • Сообщений: 73
  • Йа нубат
    • Просмотр профиля
Re: Вопрос по маршрутизации и биллингу.
« Ответ #62 : 10 Марта 2009, 18:00:29 »
а ты не мог бы в контексте показать?

Оффлайн MadKox

  • Автор темы
  • Активист
  • *
  • Сообщений: 441
  • =)
    • Просмотр профиля
    • Моя страница на Launchpad
Re: Вопрос по маршрутизации и биллингу.
« Ответ #63 : 10 Марта 2009, 18:50:53 »
Вот кусок из реально использующегося конфига:
(Нажмите, чтобы показать/скрыть)
« Последнее редактирование: 10 Марта 2009, 18:55:58 от MadKox »
Homo homini admini est...

Оффлайн G-Dogg

  • Любитель
  • *
  • Сообщений: 73
  • Йа нубат
    • Просмотр профиля
Re: Вопрос по маршрутизации и биллингу.
« Ответ #64 : 10 Марта 2009, 21:42:44 »
###################
# Цепочка secured #
###################

# Цепочка для распределения HTTPS трафика.

$IPT -A secured -s $User1_IP -p tcp --dport $https -j RETURN
...
$IPT -A secured -s $User10_IP -p tcp --dport $https -j RETURN

$IPT -A secured -p tcp --dport $https -j DROP
вот этим я могу по каждому IP "выдать" доступные порты?

Оффлайн MadKox

  • Автор темы
  • Активист
  • *
  • Сообщений: 441
  • =)
    • Просмотр профиля
    • Моя страница на Launchpad
Re: Вопрос по маршрутизации и биллингу.
« Ответ #65 : 11 Марта 2009, 21:42:34 »
Нет, этим можно ограничить доступ пользователей User11...UserN к 443 порту  :)
При этом пользователям User1..User10 доступ к 443 порту разрешен.

Т.е. я бы делал так:
1. Создал бы по цепочке на каждый нужный порт (ну или на несколько).
2. В цепочке всем, кому разрешено делал бы -j RETURN
3. А всем остальным -j DROP
4. Бросал бы пакет в цепочке FORWARD по очереди во все созданные цепочки.
Homo homini admini est...

Оффлайн G-Dogg

  • Любитель
  • *
  • Сообщений: 73
  • Йа нубат
    • Просмотр профиля
Re: Вопрос по маршрутизации и биллингу.
« Ответ #66 : 12 Марта 2009, 14:24:42 »
блин! я понять никак не могу, уже голова болит :( хочу сделать таким образом - у меня порты 80, 443 и 5190 - разрешены основной массе, кому-то нужно дать вообще полный доступ,  а порт mailagent и ftp - только избранным. как написать - что-то не допру

Оффлайн MadKox

  • Автор темы
  • Активист
  • *
  • Сообщений: 441
  • =)
    • Просмотр профиля
    • Моя страница на Launchpad
Re: Вопрос по маршрутизации и биллингу.
« Ответ #67 : 12 Марта 2009, 19:35:53 »
Ну вот, делаешь, например  цепочку icq_packets по аналогии с secured, в нее добавляешь по одному правилу на тех, кому можно юзать аську:
$IPT -A icq_packets -s $User_IP -p tcp --dport $icq -j RETURN
А последним правилом рубишь всех остальных:
$IPT -A icq_packets -p tcp --dport $icq -j DROP

После этого в цепочке FORWARD бросаешь все пакеты с этого порта в свою цепочку:
$IPT -A FORWARD -p tcp --dport $icq -i $Lan_Iface -j icq_packets

Затем (последним правилом в цепочке FORWARD, таблицы filter) принимаешь все пакеты (т.е. те, что до сих пор не сбросились предыдущими правилами):
$IPT -A FORWARD -p ALL -i $Lan_Iface -j ACCEPT
И перехватываешь у squid'а трафик через асечный порт в цепочке PREROUTING таблицы nat:
$IPT -t nat -A PREROUTING -i $Lan_Iface -p tcp --dport $icq -j ACCEPT

И так для каждого порта.

Если тебе не нужно разделять доступ, например всем кому можно аську, можно еще и https - то можно это обрулить одной цепочкой и критерием multiport:
$IPT -A icq_packets -s $User_IP -p tcp  -m multiport --destination-port $icq,$https -j RETURN
Если доступ нужно более запрещать, чем разрешать, например из 100 пользователей аськой нельзя пользоваться 3-м, то разумнее построить цепочку icq_packets наоборот:
$IPT -A icq_packets -s $User1_IP -p tcp --dport $icq -j DROP
$IPT -A icq_packets -s $User2_IP -p tcp --dport $icq -j DROP
$IPT -A icq_packets -s $User3_IP -p tcp --dport $icq -j DROP
$IPT -A icq_packets -p tcp --dport $icq -j ACCEPT

Насчет тех, кому доступ нужен вообще до всего и мимо сквида... Это реально нужно?
Просто схема тут изложенная работает следующим образом:
1. http заворачивается на сквид и считается/рулится средствами сквида/сквидгарда/самса.
Это логично, т.к. у меня, к примеру, http трафик составляет 90% всего траффика.
2. Для нескольких специальных адресов (внешних, включая почту) - весь трафик пробрасывается мимо сквида.
3. https фильтруется и тоже пробрасывается мимо сквида.

Если все таки нужно часть пользователей пускать в обход сквида их нужно по одному "перепускать" в таблице nat аналогично внешним адресам:
######################
# Цепочка PREROUTING #
######################

# Принимаем те пакеты, которые всегда разрешены и идут
# мимо сквида до того, как они уйдут в сквид.

# Пропускаем почту.
$IPT -t nat -A PREROUTING -i $Lan_Iface -d $mail_ip -j ACCEPT

# Пропускаем на FTP
$IPT -t nat -A PREROUTING -i $Lan_Iface -d $ftp_ip -j ACCEPT

# Пропускаем на шлюз.
$IPT -t nat -A PREROUTING -i $Lan_Iface -d $Lan_IP -j ACCEPT

# Пропускаем Банк-клиенты.
$IPT -t nat -A PREROUTING -i $Lan_Iface -d $Bank_1 -j ACCEPT
$IPT -t nat -A PREROUTING -i $Lan_Iface -d $Bank_2 -j ACCEPT

# Пропускаем https.
$IPT -t nat -A PREROUTING -i $Lan_Iface -p tcp --dport $https -j ACCEPT

# Пропускаем пользователей
$IPT -t nat -A PREROUTING -i $Lan_Iface -s $User1_IP -j ACCEPT
...
$IPT -t nat -A PREROUTING -i $Lan_Iface -s $UserN_IP -j ACCEPT

# Перенаправляем пакеты на сквид.
$IPT -t nat -A PREROUTING -i $Lan_Iface -p tcp -j REDIRECT --to-ports $squid
Homo homini admini est...

Оффлайн G-Dogg

  • Любитель
  • *
  • Сообщений: 73
  • Йа нубат
    • Просмотр профиля
Re: Вопрос по маршрутизации и биллингу.
« Ответ #68 : 12 Марта 2009, 20:07:19 »
Спасибо огромное! Прояснилась ситуация теперь, буду пробовать! Позже выложу, что у меня получилось

Оффлайн G-Dogg

  • Любитель
  • *
  • Сообщений: 73
  • Йа нубат
    • Просмотр профиля
Re: Вопрос по маршрутизации и биллингу.
« Ответ #69 : 13 Марта 2009, 06:31:26 »
Посмотри, что получилось для 3х клиентов. Сквид я пока не хочу ставить - окочнательбно не разобрался в нем. И мне интересно где там рулится трафик по 80 порту - http, и можно ли всем выдать одним правилом порты 80, 443 и 5190, а избранным - еще 21 и мэйлагентовский (заб его, лень в сервреную идти смотреть :) )??
я зеленым выделил проблемные моменты, может еще где кто ошибки увидит
(Нажмите, чтобы показать/скрыть)
« Последнее редактирование: 13 Марта 2009, 06:33:39 от G-Dogg »

Оффлайн MadKox

  • Автор темы
  • Активист
  • *
  • Сообщений: 441
  • =)
    • Просмотр профиля
    • Моя страница на Launchpad
Re: Вопрос по маршрутизации и биллингу.
« Ответ #70 : 15 Марта 2009, 00:36:06 »
сразу нашел косяк:
$IPTABLES -A tcp_packets -j allowed
Это разрешает доступ ОТОВСЮДУ через tcp протокол. ИМХО - дыра. Надо так:
# Например "извне" к нам может подключаться по ssh определенный IP, назовем его SSH_allowed="x.x.x.x"
$IPTABLES -A tcp_packets -s $SSH_allowed --dport $ssh -j allowed
# А кроме него - никому подключаться низзя:
$IPTABLES -A tcp_packets -j DROP
Второе:
#$IPTABLES -A verify -p ALL -s $LAN_IP_RANGE -j DROP
Пока это не раскомментишь - на шлюз можно всем.

$IPT -A FORWARD -p ALL -i $Lan_Iface -j secured
$IPT -A FORWARD -p ALL -i $Lan_Iface -j icq_chain
$IPT -A FORWARD -p ALL -i $Lan_Iface -j magent

$IPT -A FORWARD -p ALL -i $Lan_Iface -j ACCEPT #вот это зачем надо??
Вот представь, пришел пакет. Сначала он чекается в цепочке secured и если он удовлетворяет ее критериям и тому, кто этот пакет послал можно юзать 443 порт - пакет возвращается обратно, далее он попадает в icq_chain, но так как он не удовлетворяет условиям - он возвращается оттуда обратно, аналогично я цепочкой magent. А что дальше? Дальше его нужно принять, чтобы он все таки прошел и вернулся ответом пользователю. Так вот для того и стоит последнее правило. Т.е. то, что нельзя пропускать - нужно резать до этого правила. Можно сделать и наоборот. В пользовательских цепочках вместо RETURN делать ACCEPT. Ну я в предыдущем посте про это писал.

Про то, как одним правилом выделить несколько портов - я писал там же...
Homo homini admini est...

Оффлайн G-Dogg

  • Любитель
  • *
  • Сообщений: 73
  • Йа нубат
    • Просмотр профиля
Re: Вопрос по маршрутизации и биллингу.
« Ответ #71 : 15 Марта 2009, 19:52:30 »
сразу нашел косяк:
$IPTABLES -A tcp_packets -j allowed
Это разрешает доступ ОТОВСЮДУ через tcp протокол. ИМХО - дыра. Надо так:
# Например "извне" к нам может подключаться по ssh определенный IP, назовем его SSH_allowed="x.x.x.x"
$IPTABLES -A tcp_packets -s $SSH_allowed --dport $ssh -j allowed
# А кроме него - никому подключаться низзя:
$IPTABLES -A tcp_packets -j DROP
Т.е. это косячное правило можно стереть,если мне не нужен доступ из вне?

Оффлайн MadKox

  • Автор темы
  • Активист
  • *
  • Сообщений: 441
  • =)
    • Просмотр профиля
    • Моя страница на Launchpad
Re: Вопрос по маршрутизации и биллингу.
« Ответ #72 : 16 Марта 2009, 00:08:45 »
Ну либо стереть, либо изменить в нем слово allowed на слово DROP  :)
Homo homini admini est...

Оффлайн makstor

  • Новичок
  • *
  • Сообщений: 13
    • Просмотр профиля
Re: Вопрос по маршрутизации и биллингу.
« Ответ #73 : 17 Марта 2009, 12:58:23 »
Помогите пожалуйста окончательно запутавшемуся... имеется шлюз (ubuntu server 8.10, squid, биллинг-traffpro-free), eth0-inet, eth1-lan. какие правила iptables должны быть, чтобы был заворот трафика на сквид и передача его пользовательскому процессу сквида (QUEUE). сквид слушает стандартный порт в локалке (192.168.0.1:3128). если есть у кого подобный конфиг - поделитесь пожалуйста... очень надо...  :'(

Оффлайн MadKox

  • Автор темы
  • Активист
  • *
  • Сообщений: 441
  • =)
    • Просмотр профиля
    • Моя страница на Launchpad
Re: Вопрос по маршрутизации и биллингу.
« Ответ #74 : 17 Марта 2009, 13:27:05 »
IPTABLES="/sbin/iptables"
SQV_HTTP="80"
LAN_IFACE="тот_интерфейс_что_смотрит_в_локалку"
SQUID="3128"
$IPTABLES -t nat -A PREROUTING -i $LAN_IFACE -p tcp --dport $SQV_HTTP -j REDIRECT --to-ports $SQUID
Перенаправление на сквид 80-го порта.

Про передачу его пользовательскому процессу - это наверное уже сквидом надо рулить... Я таким не заморачивался никогда... Про traffpro-free тоже, только слышал... сам не ковырял.
Homo homini admini est...

 

Страница сгенерирована за 0.059 секунд. Запросов: 23.