freebsd+ipfw+pipe

Проблемы установки, настройки и работы Правильной Операционной Системы

Модератор: terminus

Правила форума
Убедительная просьба юзать теги [cоde] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
lv10
проходил мимо
Сообщения: 6
Зарегистрирован: 2008-05-23 18:14:39

freebsd+ipfw+pipe

Непрочитанное сообщение lv10 » 2008-05-23 18:47:12

FreeBSD gw.sl.lan 6.2-RELEASE FreeBSD 6.2-RELEASE #0: Sat Jan 1 22:00:25 EET 2000 lv10@gw.sl.lan:/usr/obj/usr/src/sys/MYKERN i386

//firewall_rules.sh

Код: Выделить всё

#!/bin/sh

cmd="ipfw -q add"
skip="skipto 65500"
pif=xl0
ks="keep-state"

ipfw -q -f flush

$cmd 002 allow all from any to any via rl0  # exclude LAN traffic
$cmd 003 allow all from any to any via lo0  # exclude loopback traffic

$cmd 004 allow tcp from any to 10.25.27.2 22 via rl0
$cmd 005 allow tcp from 10.25.27.2 to any via rl0
$cmd 006 allow tcp from any to 195.*.*.140 22 via xl0

$cmd 010 allow tcp from any to 10.25.27.2 5555 via rl0
$cmd 015 allow udp from any to 10.25.27.2 5555 via rl0
$cmd 020 allow udp from 10.25.27.2 to any via rl0

$cmd 100 divert natd ip from any to any in via $pif
$cmd 101 check-state

# Deny all inbound traffic from non-routable reserved address spaces
$cmd 300 deny all from 192.168.0.0/16  to any in via $pif  #RFC 1918 private IP
$cmd 301 deny all from 172.16.0.0/12   to any in via $pif  #RFC 1918 private IP
$cmd 302 deny all from 10.0.0.0/8      to any in via $pif  #RFC 1918 private IP
$cmd 303 deny all from 127.0.0.0/8     to any in via $pif  #loopback
$cmd 304 deny all from 0.0.0.0/8       to any in via $pif  #loopback
$cmd 305 deny all from 169.254.0.0/16  to any in via $pif  #DHCP auto-config
$cmd 306 deny all from 192.0.2.0/24    to any in via $pif  #reserved for docs
$cmd 307 deny all from 204.152.64.0/23 to any in via $pif  #Sun cluster
$cmd 308 deny all from 224.0.0.0/3     to any in via $pif  #Class D & E multicas                                             t


# Authorized packets
$cmd 20000 $skip all from 10.25.25.10 to any via $pif $ks
$cmd 20001 allow all from any to 10.25.25.10

$cmd 65450 deny log ip from any to any

# This is skipto location for outbound stateful rules
$cmd 65500 divert natd ip from any to any out via $pif
$cmd 65510 allow ip from any to any
//ipfw show

Код: Выделить всё

00002       82      20871 allow ip from any to any via rl0
00003        0          0 allow ip from any to any via lo0
00004        0          0 allow tcp from any to 10.25.27.2 dst-port 22 via rl0
00005        0          0 allow tcp from 10.25.27.2 to any via rl0
00006        0          0 allow tcp from any to 195.*.*.140 dst-port 22 via xl0
00010        0          0 allow tcp from any to 10.25.27.2 dst-port 5555 via rl0
00015        0          0 allow udp from any to 10.25.27.2 dst-port 5555 via rl0
00020        0          0 allow udp from 10.25.27.2 to any via rl0
00100        0          0 divert 8668 ip from any to any in via xl0
00101        0          0 check-state
00300        0          0 deny ip from 192.168.0.0/16 to any in via xl0
00301        0          0 deny ip from 172.16.0.0/12 to any in via xl0
00302        0          0 deny ip from 10.0.0.0/8 to any in via xl0
00303        0          0 deny ip from 127.0.0.0/8 to any in via xl0
00304        0          0 deny ip from 0.0.0.0/8 to any in via xl0
00305        0          0 deny ip from 169.254.0.0/16 to any in via xl0
00306        0          0 deny ip from 192.0.2.0/24 to any in via xl0
00307        0          0 deny ip from 204.152.64.0/23 to any in via xl0
00308        0          0 deny ip from 224.0.0.0/3 to any in via xl0
[b]30025[/b]        0          0 skipto 65500 ip from 10.25.25.10 to any via xl0 keep-state
[b]30026[/b]        0          0 allow ip from any to 10.25.25.10
65450        1         92 deny log ip from any to any
65500        0          0 divert 8668 ip from any to any out via xl0
65510        0          0 allow ip from any to any
65535 12009148 1365715044 allow ip from any to any

Все работает, для клиента 10.25.25.10 интернет работает через нат, трассировка работает. Все замечательно.
Встала другая задача, как ограничить скорость клиенту 10.25.25.10

Не могу понять куда правила вставлять...

Код: Выделить всё

cmd="/sbin/ipfw -q"
#skip="skipto 65500"

$cmd pipe 120 config bw 128Kbit/s
$cmd add [b]30015[/b] pipe 120 ip from $IP to any via $pif
$cmd add [b]30016[/b] pipe 120 ip from any to $IP via $pif
если правила с 30015-16 интернет перестает работать.
если правила поставить после 30025-26 то интернет работает, а пайп не работает.

Помогите, плз...Заранее благодарен.

Хостинговая компания Host-Food.ru
Хостинг HostFood.ru
 

Услуги хостинговой компании Host-Food.ru

Хостинг HostFood.ru

Тарифы на хостинг в России, от 12 рублей: https://www.host-food.ru/tariffs/hosting/
Тарифы на виртуальные сервера (VPS/VDS/KVM) в РФ, от 189 руб.: https://www.host-food.ru/tariffs/virtualny-server-vps/
Выделенные сервера, Россия, Москва, от 2000 рублей (HP Proliant G5, Intel Xeon E5430 (2.66GHz, Quad-Core, 12Mb), 8Gb RAM, 2x300Gb SAS HDD, P400i, 512Mb, BBU):
https://www.host-food.ru/tariffs/vydelennyi-server-ds/
Недорогие домены в популярных зонах: https://www.host-food.ru/domains/

luckydevil13
рядовой
Сообщения: 21
Зарегистрирован: 2008-02-21 20:45:09

Re: freebsd+ipfw+pipe

Непрочитанное сообщение luckydevil13 » 2008-05-23 20:37:17

Код: Выделить всё

net.inet.ip.fw.one_pass: 0

lv10
проходил мимо
Сообщения: 6
Зарегистрирован: 2008-05-23 18:14:39

Re: freebsd+ipfw+pipe

Непрочитанное сообщение lv10 » 2008-05-25 0:24:53

Пасибо, почитал - по описанию подходит, сделал, но...

Код: Выделить всё

bash-2.05b# sysctl -a | grep ip.fw
net.inet.ip.fw.enable: 1
net.inet.ip.fw.autoinc_step: 100
net.inet.ip.fw.one_pass: 1
net.inet.ip.fw.debug: 1
net.inet.ip.fw.verbose: 1
net.inet.ip.fw.verbose_limit: 0
пайп перед разрешающими правилами:
Интернет не работает, трассировка с клиентской машины не идет...

Код: Выделить всё

bash-2.05b# ipfw show
00002 2585 1457336 allow ip from any to any via rl0
00003    0       0 allow ip from any to any via lo0
00004    0       0 allow tcp from any to 10.25.27.2 dst-port 22 via rl0
00005    0       0 allow tcp from 10.25.27.2 to any via rl0
00006    0       0 allow tcp from any to 195.*.*.140 dst-port 22 via xl0
00010    0       0 allow tcp from any to 10.25.27.2 dst-port 5555 via rl0
00015    0       0 allow udp from any to 10.25.27.2 dst-port 5555 via rl0
00020    0       0 allow udp from 10.25.27.2 to any via rl0
00100 1019 1280405 divert 8668 ip from any to any in via xl0
00101    0       0 check-state
00300    0       0 deny ip from 192.168.0.0/16 to any in via xl0
00301    0       0 deny ip from 172.16.0.0/12 to any in via xl0
00302    6     336 deny ip from 10.0.0.0/8 to any in via xl0
00303    0       0 deny ip from 127.0.0.0/8 to any in via xl0
00304    0       0 deny ip from 0.0.0.0/8 to any in via xl0
00305    0       0 deny ip from 169.254.0.0/16 to any in via xl0
00306    0       0 deny ip from 192.0.2.0/24 to any in via xl0
00307    0       0 deny ip from 204.152.64.0/23 to any in via xl0
00308    0       0 deny ip from 224.0.0.0/3 to any in via xl0
30025   65    9164 pipe 111 ip from 10.25.25.10 to any via xl0
30026    0       0 pipe 111 ip from any to 10.25.25.10 via xl0
30035    0       0 skipto 65500 ip from 10.25.25.10 to any via xl0 keep-state
30036    0       0 allow ip from any to 10.25.25.10
65450   30    3870 deny log ip from any to any
65500  745   68083 divert 8668 ip from any to any out via xl0
65510 1668 1339905 allow ip from any to any
65535    1      78 allow ip from any to any
пайп после разрешающих правил:

Код: Выделить всё

....
30025 1270  344066 skipto 65500 ip from 10.25.25.10 to any via xl0 keep-state
30026   50    5364 allow ip from any to 10.25.25.10
30035    0       0 pipe 111 ip from 10.25.25.10 to any via xl0
30036    0       0 pipe 111 ip from any to 10.25.25.10 via xl0

65450  110   15922 deny log ip from any to any
65500 1604  242955 divert 8668 ip from any to any out via xl0
65510 2938 1683971 allow ip from any to any
65535    1      78 allow ip from any to any
Интернет работает, трассировка идет, пайп ушел в лес.
Последний раз редактировалось Alex Keda 2008-05-25 0:27:48, всего редактировалось 1 раз.
Причина: [code][/code] - для кого?

Covax
мл. сержант
Сообщения: 131
Зарегистрирован: 2008-04-27 23:54:31
Откуда: Витебск, Беларусь
Контактная информация:

Re: freebsd+ipfw+pipe

Непрочитанное сообщение Covax » 2008-05-25 1:25:55

Так у тебя стоит

Код: Выделить всё

net.inet.ip.fw.one_pass: 1
Ставь его в 0 и pipe перед разрешающим правилом.

В твоем конфиге правильно, что не работает.
Если

Код: Выделить всё

net.inet.ip.fw.one_pass: 1
, то пакет в pipe попадает и выходит из ipfw, а правило без keep state.
Если pipe после разрешающего правила с keep state, то пакет до него и не дойдет.
Последний раз редактировалось manefesto 2008-05-25 21:10:27, всего редактировалось 2 раза.
Причина: code and other

risk94
лейтенант
Сообщения: 831
Зарегистрирован: 2007-06-01 19:27:51

Re: freebsd+ipfw+pipe

Непрочитанное сообщение risk94 » 2008-05-25 9:58:10

а как порезать маку?

Код: Выделить всё

ipfw add 100 pipe 1 ip from me to any MAC 00:13:8f:45:0f:5c any
не режитцо

lv10
проходил мимо
Сообщения: 6
Зарегистрирован: 2008-05-23 18:14:39

Re: freebsd+ipfw+pipe

Непрочитанное сообщение lv10 » 2008-05-25 15:17:21

Covax писал(а):Так у тебя стоит net.inet.ip.fw.one_pass: 1
Ставь его в 0 и pipe перед разрешающим правилом.
net.inet.ip.fw.one_pass: 0

ipfw -q pipe 111 config bw 128Kbit/s

Код: Выделить всё

...
30025   127    31242 pipe 111 ip from 10.25.25.10 to any via xl0
30026     9     2089 pipe 111 ip from any to 10.25.25.10 via xl0
30035  1153   822840 skipto 65500 ip from 10.25.25.10 to any via xl0 keep-state
30036     9     2089 allow ip from any to 10.25.25.10
65450  2501   337819 deny log ip from any to any
65500 15688  7115392 divert 8668 ip from any to any out via xl0
65510 26521 16891305 allow ip from any to any
65535     4      366 allow ip from any to any
интернет работает, а скорость не режется...

есть еще варианты?

luckydevil13
рядовой
Сообщения: 21
Зарегистрирован: 2008-02-21 20:45:09

Re: freebsd+ipfw+pipe

Непрочитанное сообщение luckydevil13 » 2008-05-25 17:15:42

значит неправильно режешь

Код: Выделить всё

ipfw pipe show
Последний раз редактировалось Alex Keda 2008-05-25 17:21:36, всего редактировалось 1 раз.
Причина: [code][/code] - для кого?

lv10
проходил мимо
Сообщения: 6
Зарегистрирован: 2008-05-23 18:14:39

Re: freebsd+ipfw+pipe

Непрочитанное сообщение lv10 » 2008-05-25 18:02:37

Код: Выделить всё

bash-2.05b# ipfw pipe show
00111: 128.000 Kbit/s    0 ms   50 sl. 0 queues (1 buckets) droptail

Код: Выделить всё

bash-2.05b# cat /sys/i386/conf/MYKERN

options         IPFIREWALL
options         IPDIVERT
options         IPFIREWALL_DEFAULT_TO_ACCEPT
options         IPFIREWALL_VERBOSE
options         DUMMYNET

Covax
мл. сержант
Сообщения: 131
Зарегистрирован: 2008-04-27 23:54:31
Откуда: Витебск, Беларусь
Контактная информация:

Re: freebsd+ipfw+pipe

Непрочитанное сообщение Covax » 2008-05-25 19:27:56

Дай полный конфиг ipfw.

lv10
проходил мимо
Сообщения: 6
Зарегистрирован: 2008-05-23 18:14:39

Re: freebsd+ipfw+pipe

Непрочитанное сообщение lv10 » 2008-05-26 11:04:44

Covax писал(а):Дай полный конфиг ipfw.

Код: Выделить всё

su-2.05b# ipfw show
00002 245093 27154178 allow ip from any to any via rl0
00003    144    43434 allow ip from any to any via lo0
00004      0        0 allow tcp from any to 10.25.27.2 dst-port 22 via rl0
00005      0        0 allow tcp from 10.25.27.2 to any via rl0
00006      6      360 allow tcp from any to 195.95.151.140 dst-port 22 via xl0
00010      0        0 allow tcp from any to 10.25.27.2 dst-port 5555 via rl0
00015      0        0 allow udp from any to 10.25.27.2 dst-port 5555 via rl0
00020      0        0 allow udp from 10.25.27.2 to any via rl0
00100   1163   191480 divert 8668 ip from any to any in via xl0
00101      0        0 check-state
00300      0        0 deny ip from 192.168.0.0/16 to any in via xl0
00301      0        0 deny ip from 172.16.0.0/12 to any in via xl0
00302     18     1404 deny ip from 10.0.0.0/8 to any in via xl0
00303      0        0 deny ip from 127.0.0.0/8 to any in via xl0
00304      0        0 deny ip from 0.0.0.0/8 to any in via xl0
00305      0        0 deny ip from 169.254.0.0/16 to any in via xl0
00306      0        0 deny ip from 192.0.2.0/24 to any in via xl0
00307      0        0 deny ip from 204.152.64.0/23 to any in via xl0
00308      0        0 deny ip from 224.0.0.0/3 to any in via xl0
30025      0        0 pipe 111 ip from 10.25.25.10 to any via xl0
30026      0        0 pipe 111 ip from any to 10.25.25.10 via xl0
30035      0        0 skipto 65500 ip from 10.25.25.10 to any via xl0 keep-state
30036      0        0 allow ip from any to 10.25.25.10
65450   5299   570198 deny log ip from any to any
65500      0        0 divert 8668 ip from any to any out via xl0
65510      0        0 allow ip from any to any
65535      4      366 allow ip from any to any
su-2.05b#


luckydevil13
рядовой
Сообщения: 21
Зарегистрирован: 2008-02-21 20:45:09

Re: freebsd+ipfw+pipe

Непрочитанное сообщение luckydevil13 » 2008-05-26 12:29:31

трубы есть, а очередей нету

Covax
мл. сержант
Сообщения: 131
Зарегистрирован: 2008-04-27 23:54:31
Откуда: Витебск, Беларусь
Контактная информация:

Re: freebsd+ipfw+pipe

Непрочитанное сообщение Covax » 2008-05-26 14:29:19

Ставь pipe перед divert.
Про попадании пакета в divert nat сокет ему меняется адрес источника и пакет возвращается обратно на правило после divert, но уже с изменённым src-ip. Т.е. вместо 10.25.25.10 будет адрес шлюза. Поэтому и pipe пустой.

lv10
проходил мимо
Сообщения: 6
Зарегистрирован: 2008-05-23 18:14:39

Re: freebsd+ipfw+pipe

Непрочитанное сообщение lv10 » 2008-05-26 16:00:57

Covax писал(а):Ставь pipe перед divert.
Про попадании пакета в divert nat сокет ему меняется адрес источника и пакет возвращается обратно на правило после divert, но уже с изменённым src-ip. Т.е. вместо 10.25.25.10 будет адрес шлюза. Поэтому и pipe пустой.

Код: Выделить всё

bash-2.05b# ipfw show
00002 393577 65387964 allow ip from any to any via rl0
00003    144    43434 allow ip from any to any via lo0
00004      0        0 allow tcp from any to 10.25.27.2 dst-port 22 via rl0
00005      0        0 allow tcp from 10.25.27.2 to any via rl0
00006      8      472 allow tcp from any to 195.95.151.140 dst-port 22 via xl0
00010      0        0 allow tcp from any to 10.25.27.2 dst-port 5555 via rl0
00015      0        0 allow udp from any to 10.25.27.2 dst-port 5555 via rl0
00020      0        0 allow udp from 10.25.27.2 to any via rl0
00065    716   123113 pipe 111 ip from 10.25.25.10 to any via xl0
00066      0        0 pipe 111 ip from any to 10.25.25.10 via xl0
00100  19569 11642553 divert 8668 ip from any to any in via xl0
00101      0        0 check-state
00300      0        0 deny ip from 192.168.0.0/16 to any in via xl0
00301      0        0 deny ip from 172.16.0.0/12 to any in via xl0
00302     45     3048 deny ip from 10.0.0.0/8 to any in via xl0
00303      0        0 deny ip from 127.0.0.0/8 to any in via xl0
00304      0        0 deny ip from 0.0.0.0/8 to any in via xl0
00305      0        0 deny ip from 169.254.0.0/16 to any in via xl0
00306      0        0 deny ip from 192.0.2.0/24 to any in via xl0
00307      0        0 deny ip from 204.152.64.0/23 to any in via xl0
00308      0        0 deny ip from 224.0.0.0/3 to any in via xl0
30035   1660  1388383 skipto 65500 ip from 10.25.25.10 to any via xl0 keep-state
30036      2       98 allow ip from any to 10.25.25.10
65450   7923   842381 deny log ip from any to any
65500  20792  8673049 divert 8668 ip from any to any out via xl0
65510  37013 19925408 allow ip from any to any
65535      4      366 allow ip from any to any
bash-2.05b#
Итог - не режется.

Covax
мл. сержант
Сообщения: 131
Зарегистрирован: 2008-04-27 23:54:31
Откуда: Витебск, Беларусь
Контактная информация:

Re: freebsd+ipfw+pipe

Непрочитанное сообщение Covax » 2008-05-26 16:06:58

Исходящий pipe до divert, входящий после.

Covax
мл. сержант
Сообщения: 131
Зарегистрирован: 2008-04-27 23:54:31
Откуда: Витебск, Беларусь
Контактная информация:

Re: freebsd+ipfw+pipe

Непрочитанное сообщение Covax » 2008-05-26 16:16:26

Не удержусь.
Приходят работники пцицефермы к Брежневу и спрашивают:
- Леонид Ильич! Цыплята дохнут, что делать?
Он им и отвечает:
- Повесте над входом красный квадрат!
Ушли. Через неделю возвращаются:
- Не помогает, всё равно дохнут!
- Ну, повесте тогда желтый круг!
Ушли. Приходят через две недели:
- Всё, не помогло, все цыплята сдохли!
- Жаль! У меня ещё столько вариантов было!

А вообще почитай теорию по ipfw и пойми смысл работы. Много вопросов отпадёт.

risk94
лейтенант
Сообщения: 831
Зарегистрирован: 2007-06-01 19:27:51

Re: freebsd+ipfw+pipe

Непрочитанное сообщение risk94 » 2008-05-26 17:45:00

Почему не пашед?

Код: Выделить всё

ipfw add 100 pipe 1 ip from me to any MAC 00:13:8f:45:0f:5c any
должно ж?