kvirtu 315 Опубліковано: 2015-02-15 11:20:05 Автор Share Опубліковано: 2015-02-15 11:20:05 еееем... прибити dummynet до 0 ядра? так он не грузит систему ? Ссылка на сообщение Поделиться на других сайтах
l1ght 377 Опубліковано: 2015-02-15 11:21:57 Share Опубліковано: 2015-02-15 11:21:57 ну так, знатна бага cpuset -l 0 -t `procstat -at | grep dummynet | awk '{print $2}'` якщо, не помиляюсь - то отакою командою Ссылка на сообщение Поделиться на других сайтах
kvirtu 315 Опубліковано: 2015-02-15 11:24:50 Автор Share Опубліковано: 2015-02-15 11:24:50 (відредаговано) 45 минут назад упала система в кору: помогите расшифровать: Unread portion of the kernel message buffer:Fatal trap 12: page fault while in kernel modecpuid = 1; apic id = 01fault virtual address = 0xcfault code = supervisor write, page not presentinstruction pointer = 0x20:0xc04a2f14stack pointer = 0x28:0xc4f64c04frame pointer = 0x28:0xc4f64c40code segment = base 0x0, limit 0xfffff, type 0x1b = DPL 0, pres 1, def32 1, gran 1processor eflags = interrupt enabled, resume, IOPL = 0current process = 13 (swi1: net)trap number = 12panic: page faultcpuid = 1Uptime: 2h43m21sPhysical memory: 2004 MBDumping 120 MB: 105 89 73 57 41 25 9Reading symbols from /boot/kernel/acpi.ko...Reading symbols from /boot/kernel/acpi.ko.symbols...done.done.Loaded symbols for /boot/kernel/acpi.ko#0 doadump () at pcpu.h:196196 __asm __volatile("movl %%fs:0,%0" : "=r" (td));Ready to go. Enter 'tr' to connect to the remote targetwith /dev/cuad0, 'tr /dev/cuad1' to connect to a different portor 'trf portno' to connect to the remote target with the firewireinterface. portno defaults to 5556.Type 'getsyms' after connection to load kld symbols.If you're debugging a local system, you can use 'kldsyms' insteadto load the kld symbols. That's a less obnoxious interface. Відредаговано 2015-02-15 11:25:27 kvirtu Ссылка на сообщение Поделиться на других сайтах
kvirtu 315 Опубліковано: 2015-02-15 12:06:21 Автор Share Опубліковано: 2015-02-15 12:06:21 по ходу у меня кривой фаевол, поправьте плиз: #!/bin/sh # fwcmd='/sbin/ipfw -q' # ${fwcmd} -f flush ${fwcmd} -f queue flush ${fwcmd} -f pipe flush # ${fwcmd} add 50 fwd 10.128.10.1 tcp from 172.16.30.0/24 to any #loopback ${fwcmd} add 100 pass all from any to any via lo0 ${fwcmd} add 110 deny all from any to 127.0.0.0/8 ${fwcmd} add 120 deny ip from 127.0.0.0/8 to any # ${fwcmd} add 130 check-state #drop icmp ${fwcmd} add 200 deny icmp from any to any in icmptype 5,9,13,14,15,16,17 # #Mail Deny ${fwcmd} add 220 deny tcp from 10.128.10.0/24 to any 25 ${fwcmd} add 221 deny tcp from 172.16.20.0/24 to any 25 #External interface Netbios BLOCK ${fwcmd} add 300 deny udp from any 135-139 to any via bge0 # netbios низя ${fwcmd} add 305 deny tcp from any 135-139,445 to any via bge0 # netbios низя ${fwcmd} add 310 deny udp from any to any 135-139 via bge0 # netbios низя ${fwcmd} add 315 deny tcp from any to any 135-139,445 via bge0 # netbios #Internal interface Netbios BLOCK ${fwcmd} add 400 deny udp from any 135-139 to any via bge1 # netbios низя ${fwcmd} add 405 deny tcp from any 135-139,445 to any via bge1 # netbios низя ${fwcmd} add 410 deny udp from any to any 135-139 via bge1 # netbios низя ${fwcmd} add 415 deny tcp from any to any 135-139,445 via bge1 # netbios #NAT ${fwcmd} nat 1 config ip 193.109.129.18 log same_ports ${fwcmd} add 65030 nat 1 ip from 172.16.20.0/23 to any ${fwcmd} add 65040 nat 1 ip from any to 193.109.129.18 #Real_IP ##${fwcmd} add 65050 allow ip from 194.79.21.190 to any ##${fwcmd} add 65051 allow ip from any to 194.79.21.190 ### # Allow TCP through if setup succeeded ${fwcmd} 65100 add pass tcp from any to any established # Allow IP fragments to pass through ${fwcmd} 65110 add pass all from any to any frag # Allow access to our DNS ${fwcmd} 65130 add pass tcp from any to me 53 setup ${fwcmd} 65135 add pass tcp from me to any 53 setup ${fwcmd} 65140 add pass udp from any to me 53 ${fwcmd} 65150 add pass udp from me 53 to any # Allow ports from outside ${fwcmd} 65200 add pass tcp from any to me 53,80,3301 setup ##${fwcmd} 65210 add pass udp from any to me 27015 setup # Reject&Log all setup of incoming connections from the outside ${fwcmd} 65250 add deny log tcp from any to any in via bge0 setup # Allow setup of any other TCP connection ${fwcmd} 65300 add pass tcp from any to any setup # Allow DNS queries out in the world ${fwcmd} 65400 add pass udp from me to any 53 keep-state # ##${ipfw} add 65535 allow all from any to any Ссылка на сообщение Поделиться на других сайтах
l1ght 377 Опубліковано: 2015-02-15 12:10:28 Share Опубліковано: 2015-02-15 12:10:28 Не простіше переписати - та зробити закритим його? ${fwcmd} 65400 add pass udp from me to any 53 keep-state keep-state не потрібен для udp. Ссылка на сообщение Поделиться на других сайтах
kvirtu 315 Опубліковано: 2015-02-15 12:42:57 Автор Share Опубліковано: 2015-02-15 12:42:57 Правила шейпера создает скрипт shaper_start.sh , ver 6.07 (abills) Ссылка на сообщение Поделиться на других сайтах
kvirtu 315 Опубліковано: 2015-02-15 13:22:01 Автор Share Опубліковано: 2015-02-15 13:22:01 Не простіше переписати - та зробити закритим його? ${fwcmd} 65400 add pass udp from me to any 53 keep-state keep-state не потрібен для udp. убрал Ссылка на сообщение Поделиться на других сайтах
kha0s 112 Опубліковано: 2015-02-15 13:26:48 Share Опубліковано: 2015-02-15 13:26:48 Итак, перебрав всё железо мы неуклонно приближаемся к реализации шейпера в какой-то (довольно старой, да?) версии абилс-а. Помню как на 4-ке еще при динамическом добавлении убивании пайпов я и многие знакомые получали жесткий вис фряхи. Ссылка на сообщение Поделиться на других сайтах
kha0s 112 Опубліковано: 2015-02-15 13:40:02 Share Опубліковано: 2015-02-15 13:40:02 Не простіше переписати - та зробити закритим його? ${fwcmd} 65400 add pass udp from me to any 53 keep-state keep-state не потрібен для udp. Потрібен. У мене саме на такому костилі живуть ntpd сервіси на фрях: allow udp from me to any 123 keep-state. Якщо запит на синхронізацію ініційовано моїм ntpd - відслідковуємо keep-state і пропускаємо відповіді. Якщо це вхідний ntp запит не з трастових мереж - блокується. Ссылка на сообщение Поделиться на других сайтах
kvirtu 315 Опубліковано: 2015-02-15 13:41:21 Автор Share Опубліковано: 2015-02-15 13:41:21 Итак, перебрав всё железо мы неуклонно приближаемся к реализации шейпера в какой-то (довольно старой, да?) версии абилс-а. Помню как на 4-ке еще при динамическом добавлении убивании пайпов я и многие знакомые получали жесткий вис фряхи. 0.56 Ссылка на сообщение Поделиться на других сайтах
l1ght 377 Опубліковано: 2015-02-15 13:45:43 Share Опубліковано: 2015-02-15 13:45:43 Не простіше переписати - та зробити закритим його? ${fwcmd} 65400 add pass udp from me to any 53 keep-state keep-state не потрібен для udp. Потрібен. У мене саме на такому костилі живуть ntpd сервіси на фрях: allow udp from me to any 123 keep-state. Якщо запит на синхронізацію ініційовано моїм ntpd - відслідковуємо keep-state і пропускаємо відповіді. Якщо це вхідний ntp запит не з трастових мереж - блокується. хм, можливо я помилявся, але в цьому фаерволі можна сміливо видаляти все що є з allow\pass та залишити тільки deny, бо в кінці все одно allow ip from any to any Ссылка на сообщение Поделиться на других сайтах
kha0s 112 Опубліковано: 2015-02-15 13:53:09 Share Опубліковано: 2015-02-15 13:53:09 В цьому мені лінь колупатися - на вскидку я б там половину вирізав і дещо місцями поміняв. Ссылка на сообщение Поделиться на других сайтах
kvirtu 315 Опубліковано: 2015-02-15 18:34:28 Автор Share Опубліковано: 2015-02-15 18:34:28 ну так, знатна бага cpuset -l 0 -t `procstat -at | grep dummynet | awk '{print $2}'` якщо, не помиляюсь - то отакою командою вечером опять начались траблы, попробовал команду, помогало на 5-6 минут. Нашел на сайте muff.kiev.ua , скриптик: #!/bin/shAWK=/usr/bin/awkCPUSET=/usr/bin/cpusetGREP=/usr/bin/grepPROCSTAT=/usr/bin/procstatPROCESS=dummynetTID=`$PROCSTAT -at | $GREP $PROCESS |$AWK '"/$PROCESS/" {print $2}'`$CPUSET -l 0 -t $TID Или совпало но, после его запуска нагрузка ушла Ссылка на сообщение Поделиться на других сайтах
kha0s 112 Опубліковано: 2015-02-15 18:39:50 Share Опубліковано: 2015-02-15 18:39:50 Это в буквальном смысле - переложил с больной головы на здоровую Надо разбираться почему дамминету крышу срывает. Ссылка на сообщение Поделиться на других сайтах
kvirtu 315 Опубліковано: 2015-02-15 18:43:22 Автор Share Опубліковано: 2015-02-15 18:43:22 Это в буквальном смысле - переложил с больной головы на здоровую Надо разбираться почему дамминету крышу срывает. подскажи что мониторить ? где копать ? С меня на пиво Ссылка на сообщение Поделиться на других сайтах
kha0s 112 Опубліковано: 2015-02-15 18:56:29 Share Опубліковано: 2015-02-15 18:56:29 Не использую дамминет, брасы все железячные. В момент критической загрузки глянь ipfw pipe show для начала. Да и вообще - параметры пайпов из абилсового скрипта изучить не помешает, может в новых версиях где-то чего-то поменяли. Как в самой фри, так и в абилсе. Ссылка на сообщение Поделиться на других сайтах
kvirtu 315 Опубліковано: 2015-02-15 19:05:48 Автор Share Опубліковано: 2015-02-15 19:05:48 (відредаговано) Не использую дамминет, брасы все железячные. В момент критической загрузки глянь ipfw pipe show для начала. Да и вообще - параметры пайпов из абилсового скрипта изучить не помешает, может в новых версиях где-то чего-то поменяли. Как в самой фри, так и в абилсе. не использую даминет (kernel nat) . Да и дело не в нем. в момент пика нагрузки 1 % даминета Только что опять за 16 сек load aver выросла до 6 ! . Ни поллинг, ни отключение шейперов не помогло. Сделал ребут до этого все работало как часики ! Відредаговано 2015-02-15 19:08:03 kvirtu Ссылка на сообщение Поделиться на других сайтах
kha0s 112 Опубліковано: 2015-02-15 19:08:02 Share Опубліковано: 2015-02-15 19:08:02 не использую даминет (kernel nat) Не-не - dummynet это шейпер, nat - совсем другое. И у первого и у второго свои закидоны. У меня что первое, что второе делают cisco. Лет 10 назад настроил и забыл. Ссылка на сообщение Поделиться на других сайтах
kvirtu 315 Опубліковано: 2015-02-15 19:10:19 Автор Share Опубліковано: 2015-02-15 19:10:19 не использую даминет (kernel nat) Не-не - dummynet это шейпер, nat - совсем другое. И у первого и у второго свои закидоны. У меня что первое, что второе делают cisco. Лет 10 назад настроил и забыл. понял, ну прикрутил я даминет к ядру 0 - не помогло Ссылка на сообщение Поделиться на других сайтах
kha0s 112 Опубліковано: 2015-02-15 19:14:59 Share Опубліковано: 2015-02-15 19:14:59 ну прикрутил я даминет к ядру 0 - не помогло Т.е. весь ресурс в тот момент именно дамминет отъедал? Не прерывания как раньше? Если дамминет все проще - есть куда рыть. В конце концов - использовать ng car вместо него. Хотя уверен что там что-то криво сетапится. Кинь пример правил для создания пайпов и заворачивания в них траффика. Ссылка на сообщение Поделиться на других сайтах
kvirtu 315 Опубліковано: 2015-02-15 19:23:25 Автор Share Опубліковано: 2015-02-15 19:23:25 (відредаговано) ну прикрутил я даминет к ядру 0 - не помоглоТ.е. весь ресурс в тот момент именно дамминет отъедал? Не прерывания как раньше? Если дамминет все проще - есть куда рыть. В конце концов - использовать ng car вместо него. Хотя уверен что там что-то криво сетапится. Кинь пример правил для создания пайпов и заворачивания в них траффика. 100.00% swi1: net shaper_start.sh #!/bin/sh # Shaper/NAT/Session upper for ABillS # # PROVIDE: abills_shaper # REQUIRE: NETWORKING mysql vlan_up . /etc/rc.subr # Add the following lines to /etc/rc.conf to enable abills_shapper: # # abills_shaper_enable="YES" - Enable abills shapper # # abills_shaper_if="" - ABillS shapper interface default ng* # # abills_nas_id="" - ABillS NAS ID default 1 # # abills_ip_sessions="" - ABIllS IP SEssions limit # # abills_nat="EXTERNAL_IP:INTERNAL_IPS:NAT_IF;..." - Enable abills nat # # abills_multi_gateway="GATEWAY_IF_IP:GATEWAY_GATE_IP:GATEWAY_REDIRECT_IPS" # # abills_dhcp_shaper="" (bool) : Set to "NO" by default. # Enable ipoe_shaper # # abills_dhcp_shaper_nas_ids="" : Set nas ids for shapper, Default: all nas servers # # abills_mikrotik_shaper="" : NAS IDS # #IPN Section configuration # # abills_ipn_nas_id="" ABillS IPN NAS ids, Enable IPN firewall functions # # abills_ipn_if="" IPN Shapper interface # # abills_ipn_allow_ip="" IPN Allow unauth ip # #Other # # abills_squid_redirect="" Redirect traffic to squid # # abills_neg_deposit="" Enable neg deposit redirect for VPN connection # # abills_neg_deposit_allow="" Neg deposit allow sites # # abills_neg_deposit_speed="512" Set default speed for negative deposit # # abills_neg_deposit_fwd_ip="127.0.0.1" Neg deposit forward ip # CLASSES_NUMS='2 3' VERSION=6.07 name="abills_shaper" if [ x${abills_shaper_enable} = x ]; then name="abills_nat" abills_nat_enable=YES; fi; rcvar=`set_rcvar` : ${abills_shaper_enable="NO"} : ${abills_shaper_if=""} : ${abills_nas_id=""} : ${abills_ip_sessions=""} : ${abills_nat=""} : ${abills_multi_gateway=""} : ${abills_dhcp_shaper="NO"} : ${abills_dhcp_shaper_nas_ids=""} : ${abills_neg_deposit="NO"} : ${abills_neg_deposit_speed=""} : ${abills_neg_deposit_fwd_ip="127.0.0.1"} : ${abills_portal_ip="me"} : ${abills_mikrotik_shaper=""} : ${abills_squid_redirect="NO"} : ${abills_ipn_nas_id=""} : ${abills_ipn_if=""} : ${abills_ipn_allow_ip=""} load_rc_config $name #run_rc_command "$1" IPFW=/sbin/ipfw SED=/usr/bin/sed BILLING_DIR=/usr/abills start_cmd="abills_shaper_start" stop_cmd="abills_shaper_stop" restart_cmd="abills_shaper_restart" if [ x${abills_mikrotik_shaper} != x ]; then ${BILLING_DIR}/libexec/billd checkspeed mikrotik NAS_IDS="${abills_mikrotik_shaper}" RECONFIGURE=1 fi; #Negative deposit forward (default: ) FWD_WEB_SERVER_IP=${abills_neg_deposit_fwd_ip} #Your user portal IP (Default: me) USER_PORTAL_IP=${abills_portal_ip} #make at ipfw -q flush if [ w${ACTION} = wtest ]; then ACTION=start echo "${IPFW} -q flush" | at +10 minutes fi; EXTERNAL_INTERFACE=`/sbin/route get default | grep interface: | awk '{ print $2 }'` #Get external interface if [ x${abills_shaper_if} != x ]; then INTERNAL_INTERFACE=${abills_shaper_if} else INTERNAL_INTERFACE=ng\* fi; #********************************************************** # #********************************************************** abills_shaper_start() { ACTION=start abills_shaper abills_dhcp_shaper abills_ipn abills_nat external_fw_rules neg_deposit abills_ip_sessions squid_redirect } #********************************************************** # #********************************************************** abills_shaper_stop() { ACTION=stop abills_shaper abills_dhcp_shaper abills_ipn abills_nat neg_deposit abills_ip_sessions squid_redirect } #********************************************************** # #********************************************************** abills_shaper_restart() { abills_shaper_stop abills_shaper_start } #********************************************************** # Abills Shapper #********************************************************** abills_shaper() { if [ x${abills_shaper_enable} = xNO ]; then return 0; elif [ x${abills_shaper_enable} = xNAT ]; then return 0; fi; echo "ABillS Shapper ${ACTION}" #Octets direction PKG_DIRECTION=`cat ${BILLING_DIR}/libexec/config.pl | grep octets_direction | ${SED} "s/\\$conf{octets_direction}='\(.*\)'.*/\1/"` if [ w${PKG_DIRECTION} = wuser ] ; then IN_DIRECTION="in recv ${INTERNAL_INTERFACE}" OUT_DIRECTION="out xmit ${INTERNAL_INTERFACE}" else IN_DIRECTION="out xmit ${EXTERNAL_INTERFACE}" OUT_DIRECTION="in recv ${EXTERNAL_INTERFACE}" fi; #Enable NG shapper if [ w != w`grep '^\$conf{ng_car}=1;' ${BILLING_DIR}/libexec/config.pl` ]; then NG_SHAPPER=1 fi; #Main users table num USERS_TABLE_NUM=10 #First Class traffic users USER_CLASS_TRAFFIC_NUM=10 #NG Shaper enable if [ w${ACTION} = wstart -a w${NG_SHAPPER} != w ]; then echo -n "ng_car shapper" #Load kernel modules kldload ng_ether kldload ng_car kldload ng_ipfw for num in ${CLASSES_NUMS}; do # FW_NUM=`expr `; echo "Traffic: ${num} " #Shaped traffic ${IPFW} add ` expr 10000 - ${num} \* 10 ` skipto ` expr 10100 + ${num} \* 10 ` ip from table\(` expr ${USER_CLASS_TRAFFIC_NUM} + ${num} \* 2 - 2 `\) to table\(${num}\) ${IN_DIRECTION} ${IPFW} add ` expr 10000 - ${num} \* 10 + 5 ` skipto ` expr 10100 + ${num} \* 10 + 5 ` ip from table\(${num}\) to table\(` expr ${USER_CLASS_TRAFFIC_NUM} + ${num} \* 2 - 2 + 1 `\) ${OUT_DIRECTION} ${IPFW} add ` expr 10100 + ${num} \* 10 ` netgraph tablearg ip from table\(` expr ${USER_CLASS_TRAFFIC_NUM} + ${num} \* 2 - 2 `\) to any ${IN_DIRECTION} ${IPFW} add ` expr 10100 + ${num} \* 10 + 5 ` netgraph tablearg ip from any to table\(` expr ${USER_CLASS_TRAFFIC_NUM} + ${num} \* 2 - 2 + 1 `\) ${OUT_DIRECTION} #Unlim traffic ${IPFW} add ` expr 10200 + ${num} \* 10 ` allow ip from table\(9\) to table\(${num}\) ${IN_DIRECTION} ${IPFW} add ` expr 10200 + ${num} \* 10 + 5 ` allow ip from table\(${num}\) to table\(9\) ${OUT_DIRECTION} done; echo "Global shaper" ${IPFW} add 10000 netgraph tablearg ip from table\(10\) to any ${IN_DIRECTION} ${IPFW} add 10010 netgraph tablearg ip from any to table\(11\) ${OUT_DIRECTION} ${IPFW} add 10020 allow ip from table\(9\) to any ${IN_DIRECTION} ${IPFW} add 10025 allow ip from any to table\(9\) ${OUT_DIRECTION} if [ ${INTERNAL_INTERFACE} = w"ng*" ]; then ${IPFW} add 10030 allow ip from any to any via ${INTERNAL_INTERFACE} fi; #done #Stop ng_car shaper elif [ w${ACTION} = wstop -a w$2 = w ]; then echo "Stop shapper" for num in ${CLASSES_NUMS}; do ${IPFW} delete ` expr 9100 + ${num} \* 10 + 5 ` ` expr 9100 + ${num} \* 10 ` ` expr 9000 + ${num} \* 10 ` ` expr 10000 - ${num} \* 10 ` ` expr 10100 + ${num} \* 10 ` ` expr 10200 + ${num} \* 10 ` ` expr 9000 + ${num} \* 10 + 5 ` ` expr 10000 - ${num} \* 10 + 5 ` ` expr 10100 + ${num} \* 10 + 5 ` ` expr 10200 + ${num} \* 10 + 5 ` done; ${IPFW} delete 9000 9005 10000 10010 10015 08000 08010 09010 10020 10025 else echo "DUMMYNET shaper" if [ x${abills_nas_id} = x ]; then if [ "${abills_ipn_nas_id}" != "" ]; then abills_nas_id=${abills_ipn_nas_id}; else abills_nas_id=1; fi; fi; ${BILLING_DIR}/libexec/billd checkspeed NAS_IDS=${abills_nas_id} RECONFIGURE=1 FW_DIRECTION_OUT="${OUT_DIRECTION}" FW_DIRECTION_IN="${IN_DIRECTION}"; fi; } #********************************************************** #IPoE Shapper for dhcp connections #********************************************************** abills_dhcp_shaper() { if [ ${abills_dhcp_shaper} = NO ]; then return 0; fi; if [ -f ${BILLING_DIR}/libexec/ipoe_shapper.pl ]; then if [ x${abills_dhcp_shaper_nas_ids} != x ]; then NAS_IDS="NAS_IDS=${abills_dhcp_shaper_nas_ids}" fi; if [ w${ACTION} = wstart ]; then ${BILLING_DIR}/libexec/ipoe_shapper.pl -d ${NAS_IDS} elif [ w${ACTION} = wstop ]; then kill `cat ${BILLING_DIR}/var/log/ipoe_shapper.pid` fi; else echo "Can\'t find 'ipoe_shapper.pl' " fi; } #********************************************************** #Ipn Sections # Enable IPN #********************************************************** abills_ipn() { if [ x${abills_ipn_nas_id} = x ]; then return 0; fi; if [ w${ACTION} = wstart ]; then if [ x${abills_ipn_if} != x ]; then IFACE=" via ${abills_ipn_if}" fi; #Redirect unauth ips to portal ${IPFW} add 64000 fwd ${FWD_WEB_SERVER_IP},80 tcp from any to any dst-port 80 ${IFACE} in # Разрешить ping к серверу доступа ${IPFW} add 64100 allow icmp from any to me ${IFACE} ${IPFW} add 64101 allow icmp from me to any ${IFACE} if [ x${abills_ipn_allow_ip} != x ]; then # Доступ к странице авторизации ${IPFW} add 10 allow tcp from any to ${abills_ipn_allow_ip} 9443 ${IFACE} ${IPFW} add 11 allow tcp from ${abills_ipn_allow_ip} 9443 to any ${IFACE} ${IPFW} add 12 allow tcp from any to ${abills_ipn_allow_ip} 80 ${IFACE} ${IPFW} add 13 allow tcp from ${abills_ipn_allow_ip} 80 to any ${IFACE} # Разрешить ДНС запросы к серверу ${IPFW} add 64400 allow udp from any to ${abills_ipn_allow_ip} 53 ${IPFW} add 64450 allow udp from ${abills_ipn_allow_ip} 53 to any fi; echo "Restart active sessions" /usr/abills/libexec/periodic monthly MODULES=Ipn SRESTART=1 NO_ADM_REPORT=1 NAS_IDS="${abills_ipn_nas_id}" & # Block unauth ips #${IPFW} add 65000 deny ip from not table\(10\) to any ${IFACE} in ${IPFW} add 65000 deny ip from any to any ${IFACE} in elif [ w${ACTION} = wstop ]; then ${IPFW} delete 10 11 12 13 64000 64100 64101 64400 64450 65000 fi; } #********************************************************** # Start custom shapper rules #********************************************************** external_fw_rules() { if [ ${firewall_type} = "/etc/fw.conf" ]; then cat ${firewall_type} | while read line do RULEADD=`echo ${line} | awk '{print \$1}'`; NUMBERIPFW=`echo ${line} | awk '{print \$2}'`; if [ w${RULEADD} = wadd ]; then NOEX=`${IPFW} show ${NUMBERIPFW} 2>/dev/null | wc -l`; if [ ${NOEX} -eq 0 ]; then ${IPFW} ${line}; fi; fi; done; fi; } #********************************************************** #NAT Section # options IPFIREWALL_FORWARD # options IPFIREWALL_NAT # options LIBALIAS #Nat Section #********************************************************** abills_nat() { if [ x"${abills_nat}" = x ]; then return 0; fi; echo "ABillS NAT ${ACTION}" abills_ips_nat=`echo ${abills_nat} | sed 's/ //g'`; abills_ips_nat=`echo ${abills_nat} | sed 's/;/ /g'`; NAT_TABLE=20 NAT_FIRST_RULE=20 NAT_USERS_RULE=21 NAT_REAL_TO_FAKE_TABLE_NUM=33; for IPS_NAT in ${abills_ips_nat}; do # NAT External IP NAT_IPS=`echo ${IPS_NAT} | awk -F: '{ print $1 }'`; # Fake net FAKE_NET=`echo ${IPS_NAT} | awk -F: '{ print $2 }' | sed 's/,/ /g'`; #NAT IF NAT_IF=`echo ${IPS_NAT} | awk -F: '{ print $3 }'`; if [ x"${NAT_IPS}" = x ]; then IP=`ifconfig \`route -n get default | grep interface | awk '{ print $2 }'\` | grep "inet " | awk '{ print $2 }'` NAT_IPS=${IP} fi; echo " NAT ${ACTION}" # nat configuration for IP in ${NAT_IPS}; do if [ w${ACTION} = wstart ]; then ${IPFW} nat ${NAT_USERS_RULE} config ip ${IP} log ${IPFW} table ${NAT_REAL_TO_FAKE_TABLE_NUM} add ${IP} ${NAT_USERS_RULE} for f_net in ${FAKE_NET}; do ${IPFW} table ` expr ${NAT_REAL_TO_FAKE_TABLE_NUM} + 1` add ${f_net} ${NAT_USERS_RULE} done; elif [ w${ACTION} = wstop ]; then ${IPFW} nat delete ${NAT_USERS_RULE} fi; done; NAT_USERS_RULE=`expr ${NAT_USERS_RULE} + 1` done; # ISP_GW2=1 For redirect to second way if [ "${abills_multi_gateway}" != "" ]; then abills_gateways=`echo ${abills_multi_gateway} | sed 's/ /,/g'`; abills_gateways=`echo ${abills_gateways} | sed 's/;/ /g'`; for GATEWAY in ${abills_gateways}; do # NAT External IP GW2_IF_IP=`echo ${GATEWAY} | awk -F: '{ print $1 }'`; # Fake net GW2_IP=`echo ${GATEWAY} | awk -F: '{ print $2 }' | sed 's/,/ /g'`; #NAT IF GW2_REDIRECT_IPS=`echo ${GATEWAY} | awk -F: '{ print $3 }'`; NAT_ID=22 #Fake IPS ${IPFW} table ${NAT_REAL_TO_FAKE_TABLE_NUM} add ${GW2_IF_IP} ${NAT_ID} #NAT configure ${IPFW} nat ${NAT_ID} config ip ${GW2_IF_IP} log #Redirect to second net IPS for ip_mask in ${GW2_REDIRECT_IPS} ; do ${IPFW} table ` expr ${NAT_REAL_TO_FAKE_TABLE_NUM} + 1` add ${ip_mask} ${NAT_ID} done; #Forward traffic 2 second way ${IPFW} add 60015 fwd ${GW2_IP} ip from ${GW2_IF_IP} to any #${IPFW} add 30 add fwd ${ISP_GW2} ip from ${NAT_IPS} to any echo "Gateway: ${GW2_REDIRECT_IPS} -> ${GW2_IP} added"; done; fi; # UP NAT if [ w${ACTION} = wstart ]; then if [ w${NAT_IF} != w ]; then NAT_IF="via ${NAT_IF}" fi; ${IPFW} add 60010 nat tablearg ip from table\(` expr ${NAT_REAL_TO_FAKE_TABLE_NUM} + 1 `\) to any $NAT_IF ${IPFW} add 1020 nat tablearg ip from any to table\(${NAT_REAL_TO_FAKE_TABLE_NUM}\) $NAT_IF in elif [ w${ACTION} = wstop ]; then ${IPFW} table ${NAT_REAL_TO_FAKE_TABLE_NUM} flush ${IPFW} table ` expr ${NAT_REAL_TO_FAKE_TABLE_NUM} + 1 ` flush ${IPFW} delete 60010 20 60015 fi; } #********************************************************** #Neg deposit FWD Section #********************************************************** neg_deposit() { if [ "${abills_neg_deposit}" = NO ]; then return 0; fi; echo "Negative Deposit Forward Section (for mpd) ${ACTION}" if [ w${DNS_IP} = w ]; then DNS_IP=`cat /etc/resolv.conf | grep nameserver | awk '{ print $2 }' | head -1` fi; FWD_RULE=1014; #Forwarding start if [ x${ACTION} = xstart ]; then ${IPFW} add ${FWD_RULE} fwd ${FWD_WEB_SERVER_IP},80 tcp from table\(32\) to any dst-port 80,443 via ${INTERNAL_INTERFACE} #If use proxy #${IPFW} add ${FWD_RULE} fwd ${FWD_WEB_SERVER_IP},3128 tcp from table\(32\) to any dst-port 3128 via ${INTERNAL_INTERFACE} # if allow usin net on neg deposit if [ x${abills_neg_deposit_speed} != x ]; then ${IPFW} add 9000 skipto ${FWD_RULE} ip from table\(32\) to any ${IN_DIRECTION} ${IPFW} add 9001 skipto ${FWD_RULE} ip from any to table\(32\) ${OUT_DIRECTION} #${IPFW} add 10020 pipe 1${abills_neg_deposit_speed} ip from any to not table\(10\) ${IN_DIRECTION} #${IPFW} add 10021 pipe 1${abills_neg_deposit_speed} ip from not table\(10\) to any ${OUT_DIRECTION} #${IPFW} pipe 1${abills_neg_deposit_speed} config bw ${abills_neg_deposit_speed}Kbit/s mask src-ip 0xfffffffff ${IPFW} add `expr ${FWD_RULE} + 30` pipe 1${abills_neg_deposit_speed} ip from any to not table\(10\) ${IN_DIRECTION} ${IPFW} add `expr ${FWD_RULE} + 31` pipe 1${abills_neg_deposit_speed} ip from not table\(10\) to any ${OUT_DIRECTION} ${IPFW} pipe 1${abills_neg_deposit_speed} config bw ${abills_neg_deposit_speed}Kbit/s mask src-ip 0xfffffffff else ${IPFW} add `expr ${FWD_RULE} + 10` allow ip from table\(32\) to ${DNS_IP} dst-port 53 via ${INTERNAL_INTERFACE} ${IPFW} add `expr ${FWD_RULE} + 20` allow tcp from table\(32\) to ${USER_PORTAL_IP} dst-port 9443 via ${INTERNAL_INTERFACE} ${IPFW} add `expr ${FWD_RULE} + 30` deny ip from table\(32\) to any via ${INTERNAL_INTERFACE} fi; elif [ w${ACTION} = wstop ]; then ${IPFW} delete ${FWD_RULE} ` expr ${FWD_RULE} + 10 ` ` expr ${FWD_RULE} + 20 ` ` expr ${FWD_RULE} + 30 ` elif [ w${ACTION} = wshow ]; then ${IPFW} show ${FWD_RULE} fi; } #********************************************************** #Session limit section #********************************************************** abills_ip_sessions() { if [ x${abills_ip_sessions} = x ]; then return 0; fi; echo "Session limit ${abills_ip_sessions}"; if [ w${ACTION} = wstart ]; then ${IPFW} add 00400 skipto 65010 tcp from table\(34\) to any dst-port 80,443 via ${INTERNAL_INTERFACE} ${IPFW} add 00401 skipto 65010 udp from table\(34\) to any dst-port 53 via ${INTERNAL_INTERFACE} ${IPFW} add 00402 skipto 60010 tcp from table\(34\) to any via ${EXTERNAL_INTERFACE} ${IPFW} add 64001 allow tcp from table\(34\) to any setup via ${INTERNAL_INTERFACE} in limit src-addr ${abills_ip_sessions} ${IPFW} add 64002 allow udp from table\(34\) to any via ${INTERNAL_INTERFACE} in limit src-addr ${abills_ip_sessions} ${IPFW} add 64003 allow icmp from table\(34\) to any via ${INTERNAL_INTERFACE} in limit src-addr ${abills_ip_sessions} elif [ w${ACTION} = wstop ]; then ${IPFW} delete 00400 00401 00402 64001 64002 64003 fi; } #********************************************************** #Squid Redirect #********************************************************** squid_redirect() { #FWD Section if [ ${abills_squid_redirect} = NO ]; then return 0; fi; if [ x${SQUID_SERVER_IP} = w ]; then SQUID_SERVER_IP=127.0.0.1; fi; SQUID_REDIRET_TABLE=40 FWD_RULE=10040; #Forwarding start if [ w${ACTION} = wstart ]; then echo "Squid Forward Section - start"; ${IPFW} add ${FWD_RULE} fwd ${SQUID_SERVER_IP},8080 tcp from table\(${SQUID_REDIRET_TABLE}\) to any dst-port 80,443 via ${INTERNAL_INTERFACE} #If use proxy #${IPFW} add ${FWD_RULE} fwd ${FWD_WEB_SERVER_IP},3128 tcp from table\(32\) to any dst-port 3128 via ${INTERNAL_INTERFACE} elif [ x${ACTION} = xstop ]; then echo "Squid Forward Section - stop:"; ${IPFW} delete ${FWD_RULE} elif [ x${ACTION} = xshow ]; then echo "Squid Forward Section - status:"; ${IPFW} show ${FWD_RULE} fi; } load_rc_config $name run_rc_command "$1" Відредаговано 2015-02-15 19:24:29 kvirtu Ссылка на сообщение Поделиться на других сайтах
kvirtu 315 Опубліковано: 2015-02-15 19:26:17 Автор Share Опубліковано: 2015-02-15 19:26:17 dummynet 0 % , c включенным поллингом - сетевые не грузят, а вот 100.00% swi1: net Ссылка на сообщение Поделиться на других сайтах
rtrt 53 Опубліковано: 2015-02-15 19:46:23 Share Опубліковано: 2015-02-15 19:46:23 а самого канала сколько? Ссылка на сообщение Поделиться на других сайтах
kvirtu 315 Опубліковано: 2015-02-15 20:07:35 Автор Share Опубліковано: 2015-02-15 20:07:35 как только загрузка swi1: net снижается до 20 %, все нормализуется. Ссылка на сообщение Поделиться на других сайтах
rtrt 53 Опубліковано: 2015-02-15 20:16:56 Share Опубліковано: 2015-02-15 20:16:56 у меня была похожая ситуация, когда рандомно грузился сервер как по систем, так и по прерываниям - не хватало входящего Ссылка на сообщение Поделиться на других сайтах
Рекомендованные сообщения
Создайте аккаунт или войдите в него для комментирования
Вы должны быть пользователем, чтобы оставить комментарий
Создать аккаунт
Зарегистрируйтесь для получения аккаунта. Это просто!
Зарегистрировать аккаунтВхід
Уже зарегистрированы? Войдите здесь.
Войти сейчас