nat + ipfw + mpd + pipe

Настройка сетевых служб, маршрутизации, фаерволлов. Проблемы с сетевым оборудованием.
Правила форума
Убедительная просьба юзать теги [code] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
banec
мл. сержант
Сообщения: 89
Зарегистрирован: 2006-12-05 11:08:23

nat + ipfw + mpd + pipe

Непрочитанное сообщение banec » 2007-01-18 20:53:12

:?
Все пришел спрашивать потому что уже клин!
есть сети
192.168.91.0
192.168.92.0
сервак
192.168.1.2 255.255.255.252 (воткнут в каталист 3560)
инет
82.ч.ч.ч

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


/home/banec/>ipfw show
00100  763  47369 pipe 1 ip from any to any tcpflags ack iplen 0-128
00200    4    580 allow ip from any to any via lo0
00300    0      0 deny ip from any to 127.0.0.0/8
00400    0      0 deny ip from 127.0.0.0/8 to any
00500    0      0 deny log logamount 50 ip from 192.168.1.0/30 to any in via bge0
00600    0      0 deny log logamount 50 ip from 82.ч.ч.0/30 to any in via bge1
00700    0      0 deny ip from any to 10.0.0.0/8 in via bge0
00800    0      0 deny ip from any to 172.16.0.0/12 in via bge0
00900    0      0 deny ip from any to 192.168.0.0/16 in via bge0
01000    0      0 deny ip from any to 0.0.0.0/8 in via bge0
01100    0      0 deny ip from any to 169.254.0.0/16 in via bge0
01200    0      0 deny ip from any to 192.0.2.0/24 in via bge0
01300    0      0 deny ip from any to 224.0.0.0/4 in via bge0
01400    0      0 deny ip from any to 240.0.0.0/4 in via bge0
01500    0      0 deny icmp from any to any frag
01600    0      0 deny icmp from any to 255.255.255.255 out via bge0
01700    0      0 deny icmp from any to 255.255.255.255 in via bge0
01800  792  45926 pipe 2 ip from any to any in via ng0
01900  741  73759 pipe 3 ip from any to any out via ng0
02000  838  47917 divert 8668 ip from any to any out xmit bge0
02100  859  80683 divert 8668 ip from any to 82.ч.ч.ч
02200    0      0 deny ip from 10.0.0.0/8 to any out via bge0
02300    0      0 deny ip from 172.16.0.0/12 to any out via bge0
02400    0      0 deny ip from 192.168.0.0/16 to any out via bge0
02500    0      0 deny ip from 0.0.0.0/8 to any out via bge0
02600    0      0 deny ip from 169.254.0.0/16 to any out via bge0
02700    0      0 deny ip from 192.0.2.0/24 to any out via bge0
02800    0      0 deny ip from 224.0.0.0/4 to any out via bge0
02900    0      0 deny ip from 240.0.0.0/4 to any out via bge0
03000 1080 104867 allow ip from any to any in via bge1
03100 1165 111513 allow ip from any to any out via bge1
03200  792  45926 allow ip from any to any in via ng0
03300  741  73759 allow ip from any to any out via ng0
03400  233  40708 allow tcp from any to any established
03500  690  41385 allow ip from 82.ч.ч.ч to any xmit bge0
03600    0      0 allow tcp from any to ч.ч.ч.ч dst-port 49152-65535 via bge0
03700    0      0 allow tcp from any to 82.ч.ч.ч dst-port 53 setup
03800   13   1973 allow udp from any 53 to any
03900    0      0 allow udp from any to any dst-port 53
04000  661  39628 allow icmp from any to any in via bge0 icmptypes 0,3,4,8,11
04100    0      0 allow tcp from any 80,443,20-21,989-990 to any
04200    0      0 allow tcp from any to any dst-port 80,443,20-21,989-990
04300    0      0 allow tcp from any 40000 to any via bge0
04400   62   3040 allow tcp from any to any dst-port 40000 via bge0
04500    0      0 allow tcp from any 30000 to any via bge0
04600   29   1392 allow tcp from any to any dst-port 30000 via bge0
04700    0      0 allow tcp from any to 82.ч.ч.ч dst-port 22 via bge0
04800    0      0 allow udp from 82.ч.ч.ч to any dst-port 53 keep-state
04900    0      0 allow udp from 82.ч.ч.ч to any dst-port 123 keep-state
05000    8    384 deny log logamount 50 tcp from any to any in via bge0 setup
05100    0      0 allow tcp from 82.ч.ч.ч to any out via bge0 setup
05200    0      0 allow tcp from any to 82.ч.ч.ч in via bge1 setup
05300    0      0 allow tcp from any to me dst-port 1723
05400    0      0 allow gre from any to any
05500    0      0 allow tcp from any to 192.168.1.2 dst-port 80 setup
05600    0      0 allow tcp from any to 192.168.1.2 dst-port 22 setup
05700    0      0 allow icmp from any to any icmptypes 0,8
05800    0      0 allow ip from any to any in via ng0 setup
05900    0      0 skipto 39999 ip from any to any tcpflags ack iplen 0-128
40000    0      0 check-state
40100    1     90 deny ip from any to any
65535   30   5951 deny ip from any to any
/home/banec/>

/home/banec/>netstat -rn
Routing tables

Internet:
Destination        Gateway            Flags    Refs      Use  Netif Expire
default            82.ч.ч.1       UGS         0    39142   bge0
82.ч.ч/30      link#1             UC          0        0   bge0
82.ч.ч.1       00:15:e9:ad:3a:ac  UHLW        2     7644   bge0   1152
127.0.0.1          127.0.0.1          UH          0       54    lo0
172.16.0.1         lo0                UHS         0        0    lo0
172.16.6.3         172.16.0.1         UH          0     1919    ng0
192.168.1/30       link#2             UC          0        0   bge1
192.168.1.1        00:18:19:57:a3:c4  UHLW        3        0   bge1    945
192.168.91         192.168.1.1        UGS         0     4265   bge1
192.168.92         192.168.1.1        UGS         0    27526   bge1
/home/banec/>ifconfig
bge0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500
        options=1b<RXCSUM,TXCSUM,VLAN_MTU,VLAN_HWTAGGING>
        inet 82.ч.ч.ч netmask 0xfffffffc broadcast 82.ч.ч.3
        ether 00:17:08:5c:1b:8b
        media: Ethernet autoselect (1000baseTX <full-duplex>)
        status: active
bge1: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500
        options=1b<RXCSUM,TXCSUM,VLAN_MTU,VLAN_HWTAGGING>
        inet 192.168.1.2 netmask 0xfffffffc broadcast 192.168.1.3
        ether 00:17:08:5c:1b:8a
        media: Ethernet autoselect (1000baseTX <full-duplex>)
        status: active
lo0: flags=8049<UP,LOOPBACK,RUNNING,MULTICAST> mtu 16384
        inet 127.0.0.1 netmask 0xff000000
ng0: flags=88d1<UP,POINTOPOINT,RUNNING,NOARP,SIMPLEX,MULTICAST> mtu 1398
        inet 172.16.0.1 --> 172.16.6.3 netmask 0xffffffff
ng1: flags=8890<POINTOPOINT,NOARP,SIMPLEX,MULTICAST> mtu 1500
ng2: flags=8890<POINTOPOINT,NOARP,SIMPLEX,MULTICAST> mtu 1500
/home/banec/>

в общем pipe не работают ! пинги есть телнет ок всё остальное в ноль!
куда их пихать и какие вставлять у меня крыша едет?
нужно резать на ngX канал 64/32
:twisted:

Хостинговая компания 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/

Аватара пользователя
Alex Keda
стреляли...
Сообщения: 35454
Зарегистрирован: 2004-10-18 14:25:19
Откуда: Made in USSR
Контактная информация:

Непрочитанное сообщение Alex Keda » 2007-01-18 21:01:35

ну а трубы-то покажи?
Убей их всех! Бог потом рассортирует...

banec
мл. сержант
Сообщения: 89
Зарегистрирован: 2006-12-05 11:08:23

Непрочитанное сообщение banec » 2007-01-18 21:15:23

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


/home/banec/>ipfw pipe show
00001: 100.000 Mbit/s    0 ms   50 sl. 1 queues (1 buckets) droptail
    mask: 0x00 0x00000000/0x0000 -> 0x00000000/0x0000
BKT Prot ___Source IP/port____ ____Dest. IP/port____ Tot_pkt/bytes Pkt/Byte Drp
  0 tcp     192.168.91.6/30000   87.235.234.63/45785  555    30745  0    0   0
00002:  64.000 Kbit/s    0 ms   50 sl. 1 queues (1 buckets) droptail
    mask: 0x00 0x00000000/0x0000 -> 0x00000000/0x0000
BKT Prot ___Source IP/port____ ____Dest. IP/port____ Tot_pkt/bytes Pkt/Byte Drp
  0 udp       172.16.6.3/137   255.255.255.255/137    353    22517  0    0   0
00003:  32.000 Kbit/s    0 ms   50 sl. 1 queues (1 buckets) droptail
    mask: 0x00 0x00000000/0x0000 -> 0x00000000/0x0000
BKT Prot ___Source IP/port____ ____Dest. IP/port____ Tot_pkt/bytes Pkt/Byte Drp
  0 icmp    82.xx.xx.1/0          172.16.6.3/0      347    73247  0    0   0
/home/banec/>

banec
мл. сержант
Сообщения: 89
Зарегистрирован: 2006-12-05 11:08:23

Непрочитанное сообщение banec » 2007-01-18 21:22:47

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

${fwcmd} pipe 2 config bw 64Kbit/s 
${fwcmd} pipe 3 config bw 32Kbit/s  


${fwcmd} add pipe 2 ip from any to any out via ng0
${fwcmd} add pipe 3 ip from any to any in via ng0
причем если ip указывать без интерфейса ИНОГДА срабатывает
правда не понял в чем фокус

banec
мл. сержант
Сообщения: 89
Зарегистрирован: 2006-12-05 11:08:23

Непрочитанное сообщение banec » 2007-01-18 21:44:17

net.inet.ip.fw.one_pass в 0
что еще может быть уже не знаю
но дело скорее всего в фаере он что-то рубит хотя не пойму где и что

Аватара пользователя
dikens3
подполковник
Сообщения: 4856
Зарегистрирован: 2006-09-06 16:24:08
Откуда: Нижний Новгород
Контактная информация:

Непрочитанное сообщение dikens3 » 2007-01-19 11:20:23

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

# Ускоряем Web-Site
        ${fwcmd} pipe 1 config bw 1Mbit/s
        ${fwcmd} queue 1 config pipe 1 weight 80 queue 20 mask src-ip 0xffffffff
        ${fwcmd} queue 2 config pipe 1 weight 20 queue 20 mask src-ip 0xffffffff
        ${fwcmd} add queue 1 ip from ${webmailserver} to any out via ${ifout}
        ${fwcmd} add queue 2 ip from not ${webmailserver} to any out via ${ifout}
Я сделал только на выход. ХЗ правильно или нет.
ipfw pipe l показывает всё путём. Особо не тестировал. Есть небольшое количество DROP пакетов.
Лучше установить FreeBSD, чем потратить 30 лет на Linux'ы и выяснить какой из них хуже.

banec
мл. сержант
Сообщения: 89
Зарегистрирован: 2006-12-05 11:08:23

Непрочитанное сообщение banec » 2007-01-19 11:38:15

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

#    set bundle enable compression # обязательно проверяем, чтобы это было выключено. иначе будем долго искать, почему пинги идут, но ничего не грузится
вот такую феньку нашел :shock:
проверить счас не могу. буду только вечером

banec
мл. сержант
Сообщения: 89
Зарегистрирован: 2006-12-05 11:08:23

Непрочитанное сообщение banec » 2007-01-19 19:40:09

мда mpd гад !!
:) :idea: :evil:
в общем оно! всё теперь всё бегает.
Я надеюсь :roll:

обалдеть неделю убил в поисках утраченного :shock:

RipMan
рядовой
Сообщения: 23
Зарегистрирован: 2007-01-19 14:42:06

Непрочитанное сообщение RipMan » 2007-01-22 14:20:41

Вижу, у Вас получилось все настроить, я сейчас с впн мучаюь, мне надо из дома доступ в сеть на работе получить, поможете?

banec
мл. сержант
Сообщения: 89
Зарегистрирован: 2006-12-05 11:08:23

Непрочитанное сообщение banec » 2007-01-22 15:41:08

не знаю смогу ли!
задавайте вопросы если будут проблемы постараюсь ответить!
просто тут фокус в NAT как он будет с наружи себя вести, я не сильно представляю что делать нужно!
тут
lissyara
может поможет!

Аватара пользователя
Alex Keda
стреляли...
Сообщения: 35454
Зарегистрирован: 2004-10-18 14:25:19
Откуда: Made in USSR
Контактная информация:

Непрочитанное сообщение Alex Keda » 2007-01-22 15:50:45

поможет.
когда 1с и самбой расковыряется...
Убей их всех! Бог потом рассортирует...

Аватара пользователя
OSBoy
сержант
Сообщения: 228
Зарегистрирован: 2007-04-09 12:17:50
Откуда: Из капусты

Непрочитанное сообщение OSBoy » 2007-05-03 22:14:12

Значит вот такая ситуация:
Успешно поднял mpd4, руководствуясь статьёй.
Имею сервер (freebsd 6.2):
rl0 - локалка;
rl1 - инет;
rl2 - мой рабочий комп;
ng0, ng1 - юзеры VPN из локалки.
Сам сижу через NAT. Есть канал в инет 128кбит/с.
А нужно мне: резать скорость юзерам таким образом, чтобы каждому давалось максимум 1/4 канала (32кбит/с) не зависимо от загрузки канала!, а мне - 1/2 (64кбит/с), 3/4 (96кбит/с) и весь канал соответственно когда канал жрут оба юзера, один юзер, или я сижу один! Как это реализовать pipe'ами?
Вот мой конфиг на данный момент, но здесь не совсем то, что мне нужно:

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

###Variables 
ipfw="/sbin/ipfw -q" 
iif="rl0"      #In interface 
oif="rl1"      #Out interface 
mif="rl2"      #Home network interface 
vif="ng*"      #VPN clients' network interfaces 
iip="192.168.1.5"   #In IP 
oip="10.0.0.3"      #Out IP 
mip="10.0.1.1"      #Home network IP 
vip="10.53.1.1"      #VPN server's IP 
ournet="192.168.0.0/16"   #Our local network 
mynet="10.0.1.0/24"   #My host network 
loopback="lo0"      #Local interface 
uprefix="192.168"   #User's (client's) prefix 
vprefix="10.53.1"   #VPN prefix 
###------------------------------------------------- 
###Clear rules 
${ipfw} -f flush 
${ipfw} -f pipe flush 
${ipfw} -f queue flush 
###------------------------------------------------- 
###Clients 
${ipfw} -f table 1 flush 
${ipfw} table 1 add ${vprefix}.2 
${ipfw} table 1 add ${vprefix}.3 
${ipfw} -f table 2 flush 
${ipfw} table 2 add ${uprefix}.1.1 
${ipfw} table 2 add ${uprefix}.2.2 
###------------------------------------------------- 
${ipfw} add 100 check-state 
###------------------------------------------------- 
###Antiscanner/antihacker 
#deny, reject, bla,bla,bla...... 
###------------------------------------------------- 
###Server rules 
${ipfw} add 400 allow ip from any to any via ${loopback} 
${ipfw} add 410 deny log ip from any to 127.0.0.0/8 
${ipfw} add 420 deny log ip from 127.0.0.0/8 to any 
${ipfw} add 430 allow tcp from any to me 21,80,65530-65535 
${ipfw} add 440 allow tcp from me to any keep-state 
${ipfw} add 450 allow udp from me to any domain keep-state 
${ipfw} add 460 allow tcp from ${mynet} to me 22 in via ${mif} 
${ipfw} add 470 allow tcp from me 22 to ${mynet} out via ${mif} 
###------------------------------------------------- 
###Dummynet: 
${ipfw} pipe 1 config bw 128Kbit/s 
${ipfw} pipe 2 config bw 128Kbit/s 
${ipfw} queue 11 config pipe 1 weight 50 queue 50 
${ipfw} queue 12 config pipe 2 weight 50 queue 50 
${ipfw} queue 21 config pipe 1 weight 50 queue 50 
${ipfw} queue 22 config pipe 2 weight 50 queue 50 
${ipfw} add 500 queue 11 ip from ${mynet} to any out recv ${mif} xmit ${oif} 
${ipfw} add 510 queue 12 ip from any to ${mynet} out recv ${oif} xmit ${mif} 
${ipfw} add 520 queue 21 ip from table\(1\) to any out recv ${vif} xmit ${oif} 
${ipfw} add 530 queue 22 ip from any to table\(1\) out recv ${oif} xmit ${vif} 
###------------------------------------------------- 
###VPN 
${ipfw} add 600 allow tcp from table\(2\) to ${iip} 1723 in via ${iif} 
###------------------------------------------------- 
###NAT 
#Out for my home net: 
${ipfw} add 700 allow ip from ${mynet} to any in via ${mif} 
${ipfw} add 710 divert 8668 ip from ${mynet} to any out recv ${mif} xmit ${oif} 
${ipfw} add 720 allow ip from ${oip} to any out via ${oif} 
${ipfw} add 730 divert 8668 ip from any to ${oip} in via ${oif} 
${ipfw} add 740 allow ip from any to ${mynet} in via ${oif} 
${ipfw} add 750 allow ip from any to ${mynet} out via ${mif} 
#In for my home net: 
#   add 700 
${ipfw} add 710 divert 8778 ip from ${mynet} to ${ournet} out recv ${mif} xmit ${iif} 
${ipfw} add 720 allow ip from ${iip} to ${ournet} out via ${iif} 
${ipfw} add 730 divert 8778 ip from ${ournet} to ${iip} in via ${iif} 
${ipfw} add 740 allow ip from ${ournet} to ${mynet} in via ${iif} 
#   add 750 
#Out for VPN clients: 
${ipfw} add 700 allow ip from table\(1\) to any in via ${vif} 
${ipfw} add 710 divert 8668 ip from table\(1\) to any out recv ${vif} xmit ${oif} 
#   add 720 
#   add 730 
${ipfw} add 735 allow log gre from any to any 
${ipfw} add 740 allow ip from any to table\(1\) in via ${oif} 
${ipfw} add 750 allow ip from any to table\(1\) out via ${vif} 
###------------------------------------------------- 
###ICMP 
${ipfw} add 800 allow icmp from any to me 
#ICMP from me to any - allowed 
###------------------------------------------------- 
#{ipfw} add 65535 deny log ip from any to any
P.S. А также, мне интересны ещё два момента:
1. В силу моей "педантичности" :) меня не совсем устраивает правило номер 735 своими from any to any! Скажите, от кого и к кому конкретно нужно разрешить gre?
2. Какие ещё косяки и недоработки есть в конфиге, что следует поменять?

Аватара пользователя
OSBoy
сержант
Сообщения: 228
Зарегистрирован: 2007-04-09 12:17:50
Откуда: Из капусты

Непрочитанное сообщение OSBoy » 2007-05-04 23:42:34

OSBoy писал(а):А нужно мне: резать скорость юзерам таким образом, чтобы каждому давалось максимум 1/4 канала (32кбит/с) не зависимо от загрузки канала!, а мне - 1/2 (64кбит/с), 3/4 (96кбит/с) и весь канал соответственно когда канал жрут оба юзера, один юзер, или я сижу один! Как это реализовать pipe'ами?
Вот случайно заглянул ща в камменты статьи про dummynet. И, руководствуясь комментарием тов. Trias от 2007-02-10 в 13:07:30, родил следующее:

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

allchannel="128Kbit/s"	#Throughput of the channel
oneuser="32Kbit/s"	#Pipe for each user
###-------------------------------------------------
###Shaper:
pipe 11 config bw ${oneuser} mask dst-ip 0xffffffff
pipe 12 config bw ${oneuser} mask src-ip 0xffffffff
${ipfw} add 500 pipe 11 ip from table\(1\) to any out recv ${vif} xmit ${oif}
${ipfw} add 500 pipe 12 ip from any to table\(1\) out recv ${oif} xmit ${vif}
pipe 21 config bw ${allchannel}
pipe 22 config bw ${allchannel}
queue 11 config pipe 21 weight 50
queue 12 config pipe 22 weight 50
queue 21 config pipe 21 weight 50
queue 22 config pipe 22 weight 50
${ipfw} add 510 queue 11 ip from ${mynet} to any out recv ${mif} xmit ${oif}
${ipfw} add 510 gueue 12 ip from any to ${mynet} out recv ${oif} xmit ${mif}
${ipfw} add 510 queue 21 ip from table\(1\) to any out recv ${vif} xmit ${oif}
${ipfw} add 510 gueue 22 ip from any to table\(1\) out recv ${oif} xmit ${vif}
###-------------------------------------------------
Будет ли это работать так, как я этого хочу (см. выше)???