Здравствуйте уважаемые форумчани!Бился,бился голову уже сломал - прото нет уже никаких идей,в чем может быть проблемма:# uname -a
FreeBSD beowulf 8.0-RELEASE FreeBSD 8.0-RELEASE #0: Wed Jul 14 14:04:00 UTC 2010 ...@beowulf:/usr/obj/usr/src/sys/BEOWULF amd64
# squid -v
Squid Cache: Version 2.7.STABLE9
configure options: '--bindir=/usr/local/sbin' '--sbindir=/usr/local/sbin' '--datadir=/usr/local/etc/squid' '--libexecdir=/usr/local/libexec/squid' '--localstatedir=/var/squid' '--sysconfdir=/usr/local/etc/squid' '--enable-removal-policies=lru heap' '--disable-linux-netfilter' '--disable-linux-tproxy' '--disable-epoll' '--enable-auth=basic digest negotiate ntlm' '--enable-basic-auth-helpers=DB NCSA PAM MSNT SMB' '--enable-digest-auth-helpers=password' '--enable-external-acl-helpers=ip_user session unix_group wbinfo_group' '--enable-ntlm-auth-helpers=SMB' '--enable-storeio=ufs diskd null' '--enable-snmp' '--enable-ssl' '--with-openssl=/usr' '--enable-icmp' '--enable-arp-acl' '--with-large-files' '--enable-large-cache-files' '--enable-err-languages=Armenian Azerbaijani Bulgarian Catalan Czech Danish Dutch English Estonian Finnish French German Greek Hebrew Hungarian Italian Japanese Korean Lithuanian Polish Portuguese Romanian Russian-1251 Russian-koi8-r Serbian Simplify_Chinese Slovak Spanish Swedish Traditional_Chinese Turkish Ukrainian-1251 Ukrainian-koi8-u Ukrainian-utf8' '--enable-default-err-language=English' '--prefix=/usr/local' '--mandir=/usr/local/man' '--infodir=/usr/local/info/' '--build=amd64-portbld-freebsd8.0' 'build_alias=amd64-portbld-freebsd8.0' 'CC=cc' 'CFLAGS=-O2 -pipe -I/usr/include -fno-strict-aliasing' 'LDFLAGS= -rpath=/usr/lib:/usr/local/lib -L/usr/lib' 'CPPFLAGS='#cat etc/rc.conf
ifconfig_bce0="inet .......... netmask 255.255.255.248" - смотрит в инет
ifconfig_bce1="inet 10.10.10.1 netmask 255.255.255.0" - смотрит в локалку #1
ifconfig_em0="inet 192.168.10.1 netmask 255.255.255.0" - смотрит в локалку #2 без squid
действия:
ставлю из портов /usr/ports/www/squidВ конфиге squid'а дописываю прозрачность и редирект:
http_port 3128 transparentв ipfw добавляю правило до divert natd :
$cmd 0160 fwd 127.0.0.1,3128 tcp from 10.10.10.0/24 to not me dst-port 80 in recv bce1
#####
КСТАТЕ!!! в firewall'e до этого правила есть шейпинг с приоритетеми на dowload:ipfw pipe 1 config bw 1980Kbit/s queue 20
ipfw queue 1 config pipe 1 weight 100 queue 20 mask dst-ip 0xffffffff
#ipfw queue 11 config pipe 1 weight 100 queue 20 mask src-ip 0xffffffff
# All users
ipfw queue 2 config pipe 1 weight 10 queue 20 mask dst-ip 0xffffffff
#ipfw queue 21 config pipe 1 weight 10 queue 20 mask src-ip 0xffffffff$cmd 0010 queue 1 ip from any to $serv
#$cmd 0020 queue 11 ip from $serv to any
# All users
$cmd 0030 queue 2 ip from any to 10.10.10.0/24
#$cmd 0040 queue 21 ip from 10.10.10.0/24 to any####
запускаю squid ----->
имел канал 2Mbit на download и upload
ПОЛУЧИЛ ПРИ ВКЛЮЧЕННОМ Squid'e
ТОЛЬКО 200kbit на upload :(Как только коментирую правило в ipfw на принудительный заворот для прозрачного проксирования
сразу все нормально!!!Мерял скорость speedtest.net
Заключение:
При включенном Squid'e скорость на upload падает в 10 раз,а на download остается прежней около 2Mbit
Еще ставил дополнительно и настраивал после SAMS,все работает только вот с аплоадом такая ФИГНЯ :(
Может быть проблема в разметке диска что у мну так ????:# df
Filesystem 1M-blocks Used Avail Capacity Mounted on
/dev/ad4s1a 290 61 205 23% /
devfs 0 0 0 100% /dev
/dev/ad4s1e 989 0 910 0% /tmp
/dev/ad4s1d 34706 2135 29794 7% /usr
/dev/ad4s1f 19832 162 18083 1% /var
/dev/ad4s1g 19832 24 18221 0% /var/log
/dev/ad4s1h 151278 8 139168 0% /var/squid
procfs 0 0 0 100% /procтоисть что slice /var/squid стоит в самом конце диска?
кстате рейда нет! фряха стоит на одном из жестких -- комп PowerEdge R210 - i3 2.9Ghz 2G RAM 250GbX2 (вытягнули рейд контроллер внешний, из-за одного слота pci, для третей сетевой карты(нужна принципиально),а встроенный рейд в мать не поддерживается фрей).
ps. проверял постоянно скорость только на одном компе в локалке раз так 20 !Буду очень признателен за ответы - потому как, у самого уже идей просто нет
дома на стареньком компе без шейпинга в файрволе squid+SAMS и все ОК (dowload/upload - 20Mbit) - правда в локалке только один комп
Покажи ifconfig -a для той сетевухи, на которой поднят nat.
>Покажи ifconfig -a для той сетевухи, на которой поднят nat.# ifconfig -a
em0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500
options=19b<RXCSUM,TXCSUM,VLAN_MTU,VLAN_HWTAGGING,VLAN_HWCSUM,TSO4>
ether 00:15:17:e9:d8:9c
inet 192.168.10.1 netmask 0xffffff00 broadcast 192.168.10.255
media: Ethernet autoselect
status: no carrier
bce0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500
options=1bb<RXCSUM,TXCSUM,VLAN_MTU,VLAN_HWTAGGING,JUMBO_MTU,VLAN_HWCSUM,TSO4>
ether 00:26:b9:8d:7e:1e
inet ........... netmask 0xfffffff8 broadcast ........183
media: Ethernet autoselect (100baseTX <full-duplex>)
status: active
bce1: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500
options=1bb<RXCSUM,TXCSUM,VLAN_MTU,VLAN_HWTAGGING,JUMBO_MTU,VLAN_HWCSUM,TSO4>
ether 00:26:b9:8d:7e:1f
inet 10.10.10.1 netmask 0xffffff00 broadcast 10.10.10.255
media: Ethernet autoselect (100baseTX <full-duplex>)
status: active
lo0: flags=8049<UP,LOOPBACK,RUNNING,MULTICAST> metric 0 mtu 16384
options=3<RXCSUM,TXCSUM>
inet 127.0.0.1 netmask 0xff000000
#cat /etc/rc.confnatd_enable="YES"
natd_interface="bce0"
natd_flags="-f /etc/natd.conf"# cat /etc/natd.conf
same_ports yes
use_sockets yes
unregistered_only yesredirect_port tcp 192.168.10.244:1718-1721 1718-1721
redirect_port udp 192.168.10.244:1718-1721 1718-1721
redirect_port tcp 192.168.10.244:2326-2485 2326-2485
redirect_port udp 192.168.10.244:2326-2485 2326-2485
redirect_port tcp 192.168.10.244:5555-5560 5555-5560
redirect_port udp 192.168.10.244:5555-5560 5555-5560
Самое главное,что в подсети 192.168.10.0,где не используется проксирование все нормально и в сети 10.10.10.0 с закоментированным правилом:
$cmd 0160 fwd 127.0.0.1,3128 tcp from 10.10.10.0/24 to not me dst-port 80 in recv bce1тоже все ОК
скорость и на прием и на отдачу около 2Mbit,
как только включаю заворот в ipfw на squid сразу проблемы в сети 10.10.10.0:
Dowload - 2Mbit ; Upload - 200kbit :(
а если временно убрать шейпер?
>а если временно убрать шейпер?Так вот самое обидное в этом и есть,что даже при выключенном шейпинге эффект тот же!
зы. дома реализовал тот же функционал с шейпером и т.п., вообщем повторил,то что в офисе (отличия только в том что дома одна подсеть, а не две) -- и все работает, даже на старющем венике :( Правда дома разметка слайсов другая :
Filesystem 1M-blocks Used Avail Capacity Mounted on
/dev/ad0s1a 290 94 172 35% /
devfs 0 0 0 100% /dev
/dev/ad0s1e 193 0 177 0% /tmp
/dev/ad0s1f 2707 1792 698 72% /usr
/dev/ad0s1d 290 202 64 76% /var
procfs 0 0 0 100% /procМожет быть проблема в том что slice /var/squid (из разметки приведенной выше) стоит далеко от корневого - размечен не в такой последовательности, какую предлагает sysinstall при Auto
Может есть у кого еще какие идеи ? Наперед благодарен!
>[оверквотинг удален]
> 72% /usr
>/dev/ad0s1d 290 202
> 64 76% /var
>procfs
> 0 0
>0 100% /proc
>
>Может быть проблема в том что slice /var/squid (из разметки приведенной выше)
>стоит далеко от корневого - размечен не в такой последовательности, какую
>предлагает sysinstall при Autoвременно в cache_dir укажите другую директорию и размер 0, пересоздаете кеш, и проверьте. это заставит squid не кешировать
>
>Может есть у кого еще какие идеи ? Наперед благодарен!
>[оверквотинг удален]
>Самое главное,что в подсети 192.168.10.0,где не используется проксирование все нормально и в
>сети 10.10.10.0 с закоментированным правилом:
>$cmd 0160 fwd 127.0.0.1,3128 tcp from 10.10.10.0/24 to not me dst-port 80
>in recv bce1
>
>тоже все ОК
>скорость и на прием и на отдачу около 2Mbit,
>как только включаю заворот в ipfw на squid сразу проблемы в сети
>10.10.10.0:
>Dowload - 2Mbit ; Upload - 200kbit :(Убери с bce0 RXCSUM,TXCSUM, TSO4 и все должно заработать ( мы такое нарывались :) )
или используй нат из pf.
>Убери с bce0 RXCSUM,TXCSUM, TSO4 и все должно заработать ( мы
>такое нарывались :) )# ifconfig bce0 –rxcsum
# ifconfig bce0 –txcsumили отключить сразу RXCSUM,TXCSUM
# ifconfig bce0 hwcsum
плюс
# ifconfig bce0 tso
Я правильно понял, об этом вы говорили?
читал об этом здесь : http://iboxjo.livejournal.com/27727.html
>или используй нат из pf.Можно немного по подробней почему именно его. И собственно причина в хардварных примочках?
Спасибо за то что поделились опытом!
>[оверквотинг удален]
>
>читал об этом здесь : http://iboxjo.livejournal.com/27727.html
>
>
>>или используй нат из pf.
>
>Можно немного по подробней почему именно его. И собственно причина в хардварных
>примочках?
>
>Спасибо за то что поделились опытом!Я с подобной проблемой сталкивался и именно на броадкоме и именно на 8-ке. С натом родным вообще рекомендуется отключать TCO и контрольные суммы. После отключения все заработало нормально. Но потом, стало не комфортно иметь подобные примочки и не использовать их. В данный момент используем ipfw и nat из pf. совместно они замечательно работают. Вся это проблема в родном нате.
Добавлю в тему следующую ссылку уточняющую проблему, ведь боюсь многие ещё будут сталкиваться наверняка:
http://www.mail-archive.com/freebsd-net@freebsd.org/msg...
оттудава выдержка
===========================================================
Due to the architecture of libalias(3), ipfw nat is not compatible with
the TCP segmentation offloading (TSO). Thus, to reliably nat your net-
work traffic, please disable TSO on your NICs using ifconfig(8).
===========================================================То есть либо отрубаем на интерфейсе tso (или же вообще "sysctl net.inet.tcp.tso=0") либо отказываемся от libalias (natd или ipfw nat).
>То есть либо отрубаем на интерфейсе tso (или же вообще "sysctl net.inet.tcp.tso=0")
>либо отказываемся от libalias (natd или ipfw nat).Хочу задать еще вопрос :
если я буду использовать pf-nat в связке с IPFW, то каким образом мне нужно модифицировать правила такого типа для связки IPFW+pfnat при отключенном natd:$cmd 0181 divert natd ip from any to any in via $pif
$cmd 5000 divert natd ip from any to any out via $pifи как быть тогда с правилами содержащими skipto 5000 ?
И возможно ли это - много гуглил, но так и конкретного ответа не нашел?Или если я хочу использовать pfnat, то нужно переписывать все правила под pf и выкидывать IPFW взамен уже на pf+pfnat! Говорю об этом потому как, все-таки хотелось бы остаться на IPFW из-за DUMMYNET(про ALTQ знаю но хотелось,если возможно, сменить только NAT на другой, как рекомендовали на pfnat и сделать связку IPFW+pfnat,а не перестраивать пол системы)?
Буду благодарен за внятный ответ! Спасибо!
>[оверквотинг удален]
>И возможно ли это - много гуглил, но так и конкретного ответа
>не нашел?
>
>Или если я хочу использовать pfnat, то нужно переписывать все правила под
>pf и выкидывать IPFW взамен уже на pf+pfnat! Говорю об этом
>потому как, все-таки хотелось бы остаться на IPFW из-за DUMMYNET(про ALTQ
>знаю но хотелось,если возможно, сменить только NAT на другой, как рекомендовали
>на pfnat и сделать связку IPFW+pfnat,а не перестраивать пол системы)?
>
>Буду благодарен за внятный ответ! Спасибо!Из правил ipfw убираем все что касается divert. Из rc.conf то-же.
В правилах pf прописываем типа:ext_if = "bce0"
table <insidenet> const { 192.168.0.0/16 } (или ваши конкретные подсети)
nat on $ext_if from <insidenet> to any -> ($ext_if)У нас у самих большой конфиг с правилами ipfw и в свое время было лениво переписывать.
С DUMMYNET мы не пробовали ( задача не стояла). Я, думаю, что оно наверняка будет работать. Только правила должены применяться в отношении внутренних сетей на внутренней сетевой карте или без привязки к сетевой карте.
Спасибо огромное за помощь, как только отключил на интерфейсе с NAT'ом tso - все заработало.
Пока оставил так.ps. man ipfw - в самом конце написано тоже утверждение,что приводилось выше с рассылки!