Страница 1 из 1
PPPoE mpd (возможно ли)
Добавлено: 2009-11-23 13:29:49
mediamag
Есть задача - раздать инет 15 юзерам в сети..разбить их на 2 группы - 1 группа давать скорость 2 мбита+открыть все порты, 2 группа давать скорость 512к+давать только 80 и 5190, при этом обойтись без биллинга и прокси...что я сделал...шлюз на фре 7,1+мпд (pppoe) скорость не проблема порезать в ipfw..вот правила (пишу не все)
Код: Выделить всё
ipfw add divert natd ip from "table(1)" to any out via ${extif}
ipfw add divert natd ip from any to ${extip} in via ${extif}
ipfw add ip
extif -внешняя сетевая
extip - внешний айпи
table 1 список айпишников который выдает мпд, в котором все юзеры привязаны по логину и паролю
а теперь для каждого
ng интерфейса создаю правило типа
Код: Выделить всё
ipfw add allow tcp from "table (1)" to any in via ng0
ipfw add allow tcp from "table (1)" to any in via ng1
ipfw add allow tcp from "table (1)" to any in via ng2
инет то бегает, но не решена главная задача - резать порты....ведь например, вася имеющий строгий айпи по мпд
10,0,0,1 может быть и на
ng0 и на
ng1, а если разрешать не по таблицам а по айпи, то где гарантия что 10,0,0,1 всегда будет на ng0, ведь интерфейсы раздаются случайно - если занят ng0, то выдается ng1 и так далее....или как то все таки можно связать их? Прошу помощи...!!!
Re: PPPoE mpd (возможно ли)
Добавлено: 2009-11-23 14:02:11
Гость
мануал по mpd почитайте
up/down скрипты еще есть и работают
Re: PPPoE mpd (возможно ли)
Добавлено: 2009-11-23 14:50:30
mediamag
собрал мпд 5,3 с портов..никаких скриптов в папке с мпд нет
Re: PPPoE mpd (возможно ли)
Добавлено: 2009-11-23 14:52:16
Гость
мануальчик почитайте
их по умолчанию и нет
Re: PPPoE mpd (возможно ли)
Добавлено: 2009-11-23 15:08:56
QuAzI
Можно Васе и конкретный ng* задать. А если это "мпд, в котором все юзеры привязаны по логину и паролю" сделано через mpd.secret или Radius, то там же можно и ip жёстко привязать и жёстко задать для конкретных ip политики в ipfw и будет легче и надёжнее.
Re: PPPoE mpd (возможно ли)
Добавлено: 2009-11-23 15:30:42
mediamag
вот вот уже теплее))) скажите плиз как задать конкретный ng конкретному айпи или юзеру
Re: PPPoE mpd (возможно ли)
Добавлено: 2009-11-23 15:53:44
QuAzI
Насчёт ng* в вашем случае я пожалуй погорячился.
А почему вы так упорно не хотите использовать ip пользователя ? Разделить их на два диапазона ip-адресов и дальше уже статически настроенные политики ipfw, без лишних скриптов.
Или если уж очень хочется
Код: Выделить всё
set iface up-script /usr/local/etc/mpd5/up_guest.sh
set iface down-script /usr/local/etc/mpd5/down_guest.sh
А уже сами скрипты получают параметры так
script interface proto local-ip remote-ip authname [ dns1 server-ip ] [ dns2 server-ip ] для up
script interface proto local-ip remote-ip authname [ dns1 server-ip ] [ dns2 server-ip ] для down
Подробнее тут
http://mpd.sourceforge.net/doc5/mpd.html
Re: PPPoE mpd (возможно ли)
Добавлено: 2009-11-23 15:56:37
GRooVE
не привязывайтесь к интерфейсу вообще
Re: PPPoE mpd (возможно ли)
Добавлено: 2009-11-23 16:01:05
QuAzI
А то привыкните к нему, а он помрёт и даже похоронить по человечески не получится.
Re: PPPoE mpd (возможно ли)
Добавлено: 2009-11-23 16:03:10
mediamag
Погоди...немного не въехал....у меня и так щас в mpd.secret лог и пасс привязан к айпи....вот авторизовался юзер..выдался ему айпи...в ipfw у меня допусти table 1 и table 2 с этими айпи...каким образом разделять???? ведь чтобы пустить юзера в нет я должен указать айпи либо таблицу+ интерфейс (в данном случае ng*)???? не могу пока въехать

Re: PPPoE mpd (возможно ли)
Добавлено: 2009-11-23 16:07:04
GRooVE
Код: Выделить всё
# ipfw add queue 10 all from any to "table (1)"
# ipfw add pipe 10 config bw 256KBytes
# ipfw add queue 20 all from any to "table (2)"
# ipfw add pipe 20 config bw 64KBytes
так нельзя?
Re: PPPoE mpd (возможно ли)
Добавлено: 2009-11-23 16:09:09
mediamag
я же писал выше, что проблем с резаньем скорости нет..как одной группе разрешить все а другой только, например 80 и 5190???
Re: PPPoE mpd (возможно ли)
Добавлено: 2009-11-23 16:13:43
GRooVE
Код: Выделить всё
# ipfw add allow tcp from "table (1)" to any 80,5190 in keep-state
# ipfw add deny all from "table (1)" to any
а можно вообще пойти от обратного и исключить все локальные интерфейсы? например так:
Код: Выделить всё
# ipfw add allow tcp from "table (1)" to any 80,5190 in not via rl0, rl1 keep-state
# ipfw add deny all from "table (1)" to any
Re: PPPoE mpd (возможно ли)
Добавлено: 2009-11-23 16:20:03
mediamag
а что в данном случае делает параметр keep-state ? и зачем нужно вторым правилом блочить таблицу?
Re: PPPoE mpd (возможно ли)
Добавлено: 2009-11-23 16:23:53
GRooVE
keep-state создает цепочку динамических правил
т.е. все пакеты данной сессии не буду блокироваться при возврате (подробнее советую мануал почитать)
а что в данном случае делает параметр keep-state ? и зачем нужно вторым правилом блочить таблицу?
ну как зачем? я же не знаю какие у вас там еще правила, под которые может попасть "table (1)"
а этим правилом мы явно запрещаем все... вам же только 80 и 5190 нужны, не так ли?
в любом случае, все зависит от контекста
Re: PPPoE mpd (возможно ли)
Добавлено: 2009-11-23 16:49:46
mediamag
вот мои правила ipfw
Код: Выделить всё
#!/bin/sh
extif="rl0"
extnet="10.1.1.0/30"
extip="10.1.1.2"
intif="vr0"
intnet="10.2.2.0/24"
intip="10.2.2.200"
userports="80,5190"
fwcmd="/sbin/ipfw "
${fwcmd} -f flush
${fwcmd} -f pipe flush
${fwcmd} -f queue flush
${fwcmd} -f table 1 flush
#----Table 1 MPD5--------------
${fwcmd} table 1 add 10.2.2.10
${fwcmd} table 1 add 10.2.2.11
${fwcmd} table 1 add 10.2.2.12
${fwcmd} table 1 add 10.2.2.13
${fwcmd} table 1 add 10.2.2.14
${fwcmd} table 1 add 10.2.2.15
${fwcmd} table 1 add 10.2.2.16
${fwcmd} table 1 add 10.2.2.17
${fwcmd} table 1 add 10.2.2.18
${fwcmd} table 1 add 10.2.2.19
#----DUMMYNET-------------------------------------------------
#${fwcmd} add 1 pipe 1 ip from not ${intnet} to "table(1)" out
#${fwcmd} pipe 1 config bw 256Kbit/s mask dst-ip 0xffffffff
#${fwcmd} add 2 pipe 2 ip from "table(1)" to not me in
#${fwcmd} pipe 2 config bw 256Kbit/s mask src-ip 0xffffffff
#----dinamyc rule------------
${fwcmd} add 100 check-state
#----kill fragments (ip & icmp)---------------
${fwcmd} add 200 deny ip from any to any frag
${fwcmd} add 300 deny icmp from any to any frag
#----block undesirable icmp requests-------------------------------------
${fwcmd} add 400 deny icmp from any to any in icmptype 5,9,13,14,15,16,17
#----block ident---------------------------------------------
${fwcmd} add 500 deny tcp from any to any 113 in via ${extif}
#----block net-bios-------------------------------------------
${fwcmd} add 600 deny tcp from any to any 135-139 via ${extif}
${fwcmd} add 700 deny tcp from any to any 135-139 via ${intif}
#----block circle(127.0.0.1) lo0-----------------
${fwcmd} add 800 deny ip from any to 127.0.0.0/8
${fwcmd} add 900 deny ip from 127.0.0.0/8 to any
#----loopback------------------------------------
${fwcmd} add 1000 allow ip from any to any via lo0
#----antispoofing 1-----------------------------------
${fwcmd} add 1100 reject log ip from any to any not verrevpath in
#----antiscaner ports------------------------------------------------------------------
${fwcmd} add 1200 reject tcp from any to any tcpflags fin, syn, rst, psh, ack, urg
${fwcmd} add 1300 reject tcp from any to any tcpflags !fin, !syn, !rst, !psh, !ack, !urg
${fwcmd} add 1400 reject tcp from any to any not established tcpflags fin
#----antispoofing 2--------------------------------------------
${fwcmd} add 1500 deny all from ${intnet} to any in via ${extif}
${fwcmd} add 1600 deny all from ${extnet} to any in via ${intif}
#---block microsoft share on extif---------------------------------
${fwcmd} add 1650 deny tcp from any to ${extip} 445 via ${extif}
#----block inside LAN which can`t be in internet--------------------
${fwcmd} add 1700 deny ip from any to 192.168.0.0/16 in via ${extif}
${fwcmd} add 1800 deny ip from any to 172.16.0.0/12 in via ${extif}
${fwcmd} add 1900 deny ip from any to 0.0.0.0/8 in via ${extif}
${fwcmd} add 2000 deny ip from any to 169.254.0.0/16 in via ${extif}
#----block multicast delivers------------------------------------
${fwcmd} add 2100 deny ip from any to 224.0.0.0/4 in via ${extif}
${fwcmd} add 2200 deny ip from any to 240.0.0.0/4 in via ${extif}
#----block broadcast through icmp------------------------------------------
${fwcmd} add 2300 deny log icmp from any to 255.255.255.255 in via ${extif}
${fwcmd} add 2400 deny log icmp from any to 255.255.255.255 out via ${extif}
#----allow ssh from intnet----------------------------------------------
${fwcmd} add 2500 allow tcp from any to 10.2.2.200 35665 in via ${intif}
#----allow GRE traffic for mpd5-------------
${fwcmd} add 2530 allow gre from any to any
#----allow port 1723 (for mpd5 clients)---------------------------------------
${fwcmd} add 2550 allow tcp from "table(2)" to 10.2.2.200 1723 in via ${intif}
#----NAT--------------------------------------------------------------
${fwcmd} add 2600 divert natd ip from "table(1)" to any out via ${extif}
${fwcmd} add 2700 divert natd ip from any to ${extip} in via ${extif}
#----block inside LAN for NAT-------------------------------------
${fwcmd} add 2800 deny ip from 192.168.0.0/16 to any out via ${extif}
${fwcmd} add 2900 deny ip from 172.16.0.0/12 to any out via ${extif}
${fwcmd} add 3000 deny ip from 0.0.0.0/8 to any out via ${extif}
${fwcmd} add 3100 deny ip from 169.254.0.0/16 to any out via ${extif}
#----block multicast for NAT--------------------------------------
${fwcmd} add 3200 deny ip from 224.0.0.0/4 to any out via ${extif}
${fwcmd} add 3300 deny ip from 240.0.0.0/4 to any out via ${extif}
#----allow all established tcp connections-------------
${fwcmd} add 3500 allow tcp from any to any established
#----allow some icmp (ping, tracert)-----------------------
${fwcmd} add 3600 allow icmp from any to any icmptype 0,8,11
#----LAN traffic-------------------------------------------------
${fwcmd} add 3700 allow ip from any to ${intnet} in via ${intif}
${fwcmd} add 3800 allow ip from ${intnet} to any out via ${intif}
#----allow DNS requests on tcp 53 from inet to firewall (TCP DNS)--
${fwcmd} add 4300 allow tcp from any to ${extip} 53 in via ${extif}
#----allow udp ports in LAN (DNS server in LAN)---------------------
${fwcmd} add 6900 allow udp from any 53 to ${intnet} in via ${extif}
${fwcmd} add 7000 allow udp from any 53 to ${intnet} out via ${intif}
${fwcmd} add 7100 allow udp from ${intnet} to any 53 in via ${intif}
#----allow DNS requests on extiface (53 port)-----------------------
${fwcmd} add 7110 allow udp from any to ${extip} 53 in via ${extif}
${fwcmd} add 7120 allow udp from ${extip} 53 to any out via ${extif}
${fwcmd} add 7130 allow udp from any 53 to ${extip} in via ${extif}
${fwcmd} add 7140 allow udp from ${extip} to any 53 out via ${extif}
#----block other established tcp connections-------------------------
${fwcmd} add 7200 deny tcp from any to ${extip} in via ${extif} setup
#----allow established tcp connections from ext IP to ext interface----
${fwcmd} add 7300 allow tcp from ${extip} to any out via ${extif} setup
${fwcmd} add 7400 allow tcp from any to ${extip} in via ${intif} setup
################### USER INET ##########################################
${fwcmd} add 7500 allow tcp from "table(1)" to not ${intnet} ${userports} in via ng0 setup
${fwcmd} add 7500 allow tcp from "table(1)" to not ${intnet} ${userports} in via ng1 setup
${fwcmd} add 7500 allow tcp from "table(1)" to not ${intnet} ${userports} in via ng2 setup
${fwcmd} add 7500 allow tcp from "table(1)" to not ${intnet} ${userports} in via ng3 setup
${fwcmd} add 7500 allow tcp from "table(1)" to not ${intnet} ${userports} in via ng4 setup
${fwcmd} add 7500 allow tcp from "table(1)" to not ${intnet} ${userports} in via ng5 setup
${fwcmd} add 7500 allow tcp from "table(1)" to not ${intnet} ${userports} in via ng6 setup
${fwcmd} add 7500 allow tcp from "table(1)" to not ${intnet} ${userports} in via ng7 setup
${fwcmd} add 7500 allow tcp from "table(1)" to not ${intnet} ${userports} in via ng8 setup
${fwcmd} add 7500 allow tcp from "table(1)" to not ${intnet} ${userports} in via ng9 setup
${fwcmd} add 7500 allow tcp from "table(1)" to not ${intnet} ${userports} in via ng10 setup
${fwcmd} add 7500 allow tcp from "table(1)" to not ${intnet} ${userports} in via ng11 setup
Re: PPPoE mpd (возможно ли)
Добавлено: 2009-11-23 17:04:19
mediamag
кстати идя с исключение всех локальных интерфейсом хорошая - не знал что так можно - спасибо попробую вечером, отпишусь
Re: PPPoE mpd (возможно ли)
Добавлено: 2009-11-23 17:05:14
GRooVE
ну, во первых, тут у вас одинаковые номера правил:
Код: Выделить всё
################### USER INET ##########################################
${fwcmd} add 7500 allow tcp from "table(1)" to not ${intnet} ${userports} in via ng0 setup
${fwcmd} add 7500 allow tcp from "table(1)" to not ${intnet} ${userports} in via ng1 setup
${fwcmd} add 7500 allow tcp from "table(1)" to not ${intnet} ${userports} in via ng2 setup
${fwcmd} add 7500 allow tcp from "table(1)" to not ${intnet} ${userports} in via ng3 setup
${fwcmd} add 7500 allow tcp from "table(1)" to not ${intnet} ${userports} in via ng4 setup
${fwcmd} add 7500 allow tcp from "table(1)" to not ${intnet} ${userports} in via ng5 setup
${fwcmd} add 7500 allow tcp from "table(1)" to not ${intnet} ${userports} in via ng6 setup
${fwcmd} add 7500 allow tcp from "table(1)" to not ${intnet} ${userports} in via ng7 setup
${fwcmd} add 7500 allow tcp from "table(1)" to not ${intnet} ${userports} in via ng8 setup
${fwcmd} add 7500 allow tcp from "table(1)" to not ${intnet} ${userports} in via ng9 setup
${fwcmd} add 7500 allow tcp from "table(1)" to not ${intnet} ${userports} in via ng10 setup
${fwcmd} add 7500 allow tcp from "table(1)" to not ${intnet} ${userports} in via ng11 setup
во вторых, разбейте юзверей по двум таблицам
и рулите себе обеими
Re: PPPoE mpd (возможно ли)
Добавлено: 2009-11-23 17:22:57
terminus
Код: Выделить всё
${fwcmd} add 7500 allow tcp from "table(1)" to not ${intnet} ${userports} in via { ng0 or ng1 or ng2 or ng3 or ng4 or ng6 } setup
или еще короче
Код: Выделить всё
${fwcmd} add 7500 allow tcp from "table(1)" to not ${intnet} ${userports} in via ng* setup

Re: PPPoE mpd (возможно ли)
Добавлено: 2009-11-23 17:36:06
GRooVE
я вот помню, что можно шаблон указывать, но не мог вспомнить как
оказывается, я правильно вспомнил... только провтыкал с экранированием звездочки

Re: PPPoE mpd (возможно ли)
Добавлено: 2009-11-23 18:28:40
mediamag
афигеть!!!! спасибо мужики..не знал я такого)))))