пятница, 2 августа 2019 г.

qos tos и прочие няшки

пока как черновичек чтобы не забыть тут табличка "Here’s a table of DSCP and TOS values in their most common formats just for reference"

TOS (Dec)TOS (Hex)TOS Precedence NameTOS Delay flagTOS Throughput flagTOS Reliability flagDSCP (Hex)DSCP (Dec)DSCP/PHB Class
00x00Routine0000x000none
40x04Routine0010x011none
80x08Routine0100x022none
120x0CRoutine0110x033none
160x10Routine1000x044none
320x20Priority0000x088cs1
400x28Priority0100x0A10af11
480x30Priority1000x0C12af12
560x38Priority1100x0E14af13
640x40Immediate0000x1016cs2
720x48Immediate0100x1218af21
800x50Immediate1000x1420af22
880x58Immediate1100x1622af23
960x60Flash0000x1824cs3
1040x68Flash0100x1A26af31
1120x70Flash1000x1C28af32
1200x78Flash1100x1E30af33
1280x80FlashOverride0000x2032cs4
1360x88FlashOverride0100x2234af41
1440x90FlashOverride1000x2436af42
1520x98FlashOverride1100x2638af43
1600xA0Critical0000x2840cs5
1760xB0Critical1000x2C44voice-admit
1840xB8Critical1100x2E46ef
1920xC0InterNetworkControl0000x3048cs6
2240xE0NetworkControl0000x3856cs7
пакет oping и последующая команда noping  192.168.13.14 -Q cs7 позволяет запускать пинги с нужным приоритетом
микротик помогает передавать трафик Tools:Packet_Sniffer - пинаем на ip с определенного интерфейса на этом ip ловим либо вайршарком с фильтром "udp.port==37008 and !(arp or icmp or dns or stp)" или тиссипидампом sudo tcpdump -eni enp2s0 udp port 37008 -vvv 




четверг, 11 июля 2019 г.

среда, 19 июня 2019 г.

блокируем по geoip

источник статьи

apt-get install iptables-dev xtables-addons-common libtext-csv-xs-perl pkg-config

установка, на make install правда ругнулся но прокатило  зеркало архива на мыле
# wget http://downloads.sourceforge.net/project/xtables-addons/Xtables-addons/xtables-addons-2.13.tar.xz
# tar xf xtables-addons-2.13.tar.xz
# cd xtables-addons-2.13
# ./configure
# make
# make install
далее создаем базу Geoip и копируем ее
# cd geoip
# ./xt_geoip_dl
# ./xt_geoip_build GeoIPCountryWhois.csv
# mkdir -p /usr/share/xt_geoip/
# cp -r {BE,LE} /usr/share/xt_geoip/
файлик GeoIPCountryWhois.csv он не находит по этому я качал его с гитхаба банально загуглив вот зеркало
в теории можно обновлять кроном содержание дабы список был актуальный хотя по линку он обновлялся полгода назад.

далее простой как 3 копецки сиснтаксис iptables
iptables -I INPUT -m geoip ! --src-cc RU -j DROP
iptables -I INPUT -m geoip --src-cc IN,US -j DROP
в первом варианте все кто не из россии - идут лесом
во втором варианте лесом идет только индия и штаты

собвственно для проверки гуглим freevps - поднимаем виртуалочку и тестим из каких нибудь нидерландов

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

источник статьи 
csv шки брал от сюда

1sudo apt-get install xtables-addons-common
This will grab the sources, build and install xtables and all its dependencies, including the xtables-addons-common and xtables-addons-dkms packages.
The next step is to download the GeoIP list as a CSV. Create and navigate to a temporary folder, say /tmp/geoip, then run the following command:
1sudo /usr/lib/xtables-addons/xt_geoip_dl
This will download two CSV files, one containing the GeoIP list for IPv4 and one for IPv6. You may have to unzip them if they have been packaged as an archive.
The final step is to import this list into xtables, so it can be used by iptables. This process requires the libtext-csv-xs-perl module to digest the CSV files into the proper format.
1sudo aptitude install libtext-csv-xs-perl
Finally, create a folder to stash the converted files in, and import them into xtables:
1sudo mkdir /usr/share/xt_geoip
2sudo /usr/lib/xtables-addons/xt_geoip_build -D /usr/share/xt_geoip *.csv
And that’s all there is to it! To test that everything went well, run the following command:
1iptables -m geoip --help
If the command executes successfully, xtables with geoip has been successfully installed into iptables. Now you can block any list of countries with a simple iptables command. To block Korea, China, India, Russia, Turkey, Vietnam, Ukraine, Brazil, Venezuela, Pakistan, Saudi Arabia, Japan, Germany and Italy for example, run:
1iptables -A INPUT -m geoip --src-cc KR,CN,IN,SA,TR,VN,UA,BR,VE,PK,JP,DE,IT -j DROP

понедельник, 6 мая 2019 г.

убираем рекламу на микротике ADBlock

дабы не забыть https://stopad.cgood.ru/

с галками по дефолту даже в игрульках и приложениях на мобилке убирается реклама типа спидтеста и тп , если не достаточно - поиграть с галками

если надо почисить остатки скрипта
/ip dns static remove numbers=[find where comment="ADBlock"]

вторник, 30 апреля 2019 г.

монитор охранника

задача:
- есть сарай и монитор , на нем надо показывать 4 камеры и если что то подвисло перезапустить плеер

2 скрипта
- первый (запускается из под пользователя) просто запускает окошки  плеера (mpv) без рамочек , предварительно померив экран и поделив его на 4 части (за это отвечает xdoottool)
- второй (запускается из под рута) читает первый скрипт цепляет из него ip с которых идет поток и пишет его в файл (если в файле строк меньше чем положено - поток перезапускается)

4mpl.sh 


#!/bin/bash
# тут указываем какие стримы будем вещать
scriptname=4mpl.sh
str1=rtsp://root:passsword@212.191.253.53:554/live/sub
str2=rtsp://root:passsword@212.191.253.61:554/live/sub
str3=rtsp://root:passsword@122.191.253.88:554/live/sub
str4=rtsp://root:passsword@212.191.253.18:554/live/sub
# глядим что за экран у нас, вдруг сменили и пригодиться в положениях плеера
export DISPLAY=':0.0'
xwin=`xdotool getdisplaygeometry | awk {'print $1'}`
ywin=`xdotool getdisplaygeometry | awk {'print $2'}`
# прячим мышку? помоему не работает
xdotool mousemove "$xwin $ywin"
# это статусбар убунту, мешается по умолчанию на 24 пикселя, сука
Barsize=24
# тут мы делем полученый размер экрана на 4 равных части за вычетом бара
let "wsizex=$xwin / 2"
let "wsizey=$ywin / 2 - ($Barsize / 2)"
wsize="$wsizex""x""$wsizey"
let "wsizeyY=$wsizey + $Barsize "
# водим переменные позиций окон
gpos1="+0+$Barsize"
gpos2="+$wsizex+$Barsize"
gpos3="+$wsizex+$wsizeyY"
gpos4="+0+$wsizeyY"
# гавнякаем переменными в syslog - тупо для дебага, можно удалить
logger "$scriptname str1=$str1"
logger "$scriptname str2=$str2"
logger "$scriptname str3=$str3"
logger "$scriptname str4=$str4"
logger "$scriptname xwin=$xwin"
logger "$scriptname ywin=$ywin"
logger "$scriptname wsize=$wsize"
logger "$scriptname gpos1=$gpos1"
logger "$scriptname gpos2=$gpos2"
logger "$scriptname gpos3=$gpos3"
logger "$scriptname gpos4=$gpos4"
# из соседнего скрипта тисипидампим ip переменных str и складываем
# в файл, если в файле меньше 2 х строк - потока нет, перезапускаемся
a=1
b=`cat /home/filalex/dump1 | wc -l `
c=`cat /home/filalex/dump2 | wc -l `
d=`cat /home/filalex/dump3 | wc -l `
e=`cat /home/filalex/dump4 | wc -l `
# тут я не понял как работет $переменная$а_тут_вторая_которая_подставляется_первой поэтому говнокод
if  [ "$b" -gt "$a" ]
    then
    logger "$scriptname поток $str1 в норме, что то прилетело работаем дальше "
    else
    logger "$scriptname поток $str1 упал, перезапускаем плеер"
    mpv -cache=32 -border=no -geometry "$wsize"$gpos1 $str1 &
fi
if  [ "$c" -gt "$a" ]
    then
    logger "$scriptname поток $str2 в норме, что то прилетело работаем дальше "
    else
    logger "$scriptname поток $str2 упал, перезапускаем плеер"
    mpv -cache=32 -border=no -geometry "$wsize"$gpos2 $str2 &
fi
if  [ "$d" -gt "$a" ]
    then
    logger "$scriptname поток $str3 в норме, что то прилетело работаем дальше "
    else
    logger "$scriptname поток $str3 упал, перезапускаем плеер"
    mpv -cache=32 -border=no -geometry "$wsize"$gpos3 $str3 &
fi
if  [ "$e" -gt "$a" ]
    then
    logger "$scriptname поток $str4 в норме, что то прилетело работаем дальше "
    else
    logger "$scriptname поток $str4 упал, перезапускаем плеер"
    mpv -cache=32 -border=no -geometry "$wsize"$gpos4 $str4 &
fi


strdumper.sh 

#!/bin/bash
for i in {1..4}
do
dumphost=`grep str$i /home/filalex/4mpl.sh | grep -E -o "([0-9]{1,3}[\.]){3}[0-9]{1,3}"`
timeout 5 tcpdump -i enp1s0 -n -q host $dumphost > /home/filalex/tdump$i
cp /home/filalex/tdump$i /home/filalex/dump$i`
done


enp1s0 - заменить на свой интерфейс 
filalex - заменить на пользователя 
в корон добавляем 

*/1 * * * * root /home/filalex/strdumper.sh
*/1 * * * * filalex /home/filalex/4mpl.sh

примерно как выглядит строка плеера 
mpv -cache=32 -border=no -geometry 640x512+0+512 rtsp://login:password@ip.190.23.46/1/2

так выглядит в процессах 

а так на мониторе

кому хачу программу чтоб поставить и забыть  - курим сыль
https://securityrussia.com/blog/vms-vs-cms.html  иил гуглим herospeed или iSpy 

среда, 20 февраля 2019 г.

test mcast

проверка мультикаста - если работет - норм, если нет - передернуть броидж, хз отвалилось причину пока не поймал поэтому баш =(


filalex@asd:~$ ./mctest.sh
ping up run wget

Вывод перенаправляется в «wget-log».
mctest NOrun script
filalex@asd:~$ cat ./mctest.sh
#!/bin/bash
rm wget-log

ping -c 1 -w 5 192.168.88.11 &>/dev/null
if [ $? -ne 0 ] ; then
logger mctest ping down
echo "ping down exit"
else
logger mctest ping ok
echo "ping up run wget"
timeout 5 wget -q http://192.168.88.11:8888/udp/225.50.64.104:1234 -O /dev/null 2>&1
if [ $? -ne 0 ] ; then
logger mctest NOrun script
echo "mctest NOrun script"

else
logger mctest run script
echo "mctest run script"
#routing igmp-proxy interface remove numbers=0
#routing igmp-proxy interface remove numbers=1
#routing igmp-proxy interface add interface=ether1_gw1 upstream=yes alternative-subnets=0.0.0.0/0
#routing igmp-proxy interface add interface=bridge

fi

cron firewall

вешаем в крон wget
*/1 * * * * wget http://**.77.**.156:**/sh/firewall --output-document=/etc/network/if-up.d/firewall

с каким нибудь содержимым 
#!/bin/sh

iptables -F
iptables -P FORWARD ACCEPT
iptables -A INPUT -i lo -j ACCEPT

#dns
iptables -t filter -A INPUT -p tcp --sport 53 -d 8.8.8.8 -j ACCEPT
iptables -t filter -A OUTPUT -p tcp --dport 53 -d 8.8.8.8 -j ACCEPT
#yandex
iptables -t filter -A INPUT -p tcp --sport 443 -d yandex.ru -j ACCEPT
iptables -t filter -A OUTPUT -p tcp --dport 443 -d yandex.ru -j ACCEPT
#smtp yandex
iptables -t filter -A INPUT -p tcp --sport 443 -d smtp.yandex.ru -j ACCEPT
iptables -t filter -A OUTPUT -p tcp --dport 443 -d smtp.yandex.ru -j ACCEPT
iptables -t filter -A INPUT -p tcp --sport 80 -d smtp.yandex.ru -j ACCEPT
iptables -t filter -A OUTPUT -p tcp --dport 80 -d smtp.yandex.ru -j ACCEPT
#imap yandex
iptables -t filter -A INPUT -p tcp --sport 443 -d imap.yandex.ru -j ACCEPT
iptables -t filter -A OUTPUT -p tcp --dport 443 -d imap.yandex.ru -j ACCEPT
iptables -t filter -A INPUT -p tcp --sport 80 -d imap.yandex.ru -j ACCEPT
iptables -t filter -A OUTPUT -p tcp --dport 80 -d imap.yandex.ru -j ACCEPT

iptables -t filter -A INPUT -p tcp --sport 443 -d mc.yandex.ru -j ACCEPT
iptables -t filter -A OUTPUT -p tcp --dport 443 -d mc.yandex.ru -j ACCEPT
iptables -t filter -A INPUT -p tcp --sport 443 -d webattach.mail.yandex.net -j ACCEPT
iptables -t filter -A OUTPUT -p tcp --dport 443 -d webattach.mail.yandex.net -j ACCEPT
iptables -t filter -A INPUT -p tcp --sport 80 -d webattach.mail.yandex.net -j ACCEPT
iptables -t filter -A OUTPUT -p tcp --dport 80 -d webattach.mail.yandex.net -j ACCEPT
iptables -t filter -A INPUT -p tcp --sport 443 -d docviewer.yandex.ru -j ACCEPT
iptables -t filter -A OUTPUT -p tcp --dport 443 -d docviewer.yandex.ru -j ACCEPT
iptables -t filter -A INPUT -p tcp --sport 443 -d ya.ru -j ACCEPT
iptables -t filter -A OUTPUT -p tcp --dport 443 -d ya.ru -j ACCEPT
iptables -t filter -A INPUT -p tcp --sport 443 -d disk.yandex.ru -j ACCEPT
iptables -t filter -A OUTPUT -p tcp --dport 443 -d disk.yandex.ru -j ACCEPT
iptables -t filter -A INPUT -p tcp --sport 443 -d downloader.disk.yandex.ru -j ACCEPT
iptables -t filter -A OUTPUT -p tcp --dport 443 -d downloader.disk.yandex.ru -j ACCEPT
iptables -t filter -A INPUT -p tcp --sport 443 -d an.yandex.ru -j ACCEPT
iptables -t filter -A OUTPUT -p tcp --dport 443 -d an.yandex.ru -j ACCEPT
iptables -t filter -A INPUT -p tcp --sport 443 -d docviewer.yandex.ru -j ACCEPT
iptables -t filter -A OUTPUT -p tcp --dport 443 -d docviewer.yandex.ru -j ACCEPT
iptables -t filter -A INPUT -p tcp --sport 443 -d avatars.mds.yandex.net -j ACCEPT
iptables -t filter -A OUTPUT -p tcp --dport 443 -d avatars.mds.yandex.net -j ACCEPT
iptables -t filter -A INPUT -p tcp --sport 443 -d s59vla.storage.yandex.net -j ACCEPT
iptables -t filter -A OUTPUT -p tcp --dport 443 -d s59vla.storage.yandex.net -j ACCEPT
iptables -t filter -A INPUT -p tcp --sport 443 -d ns3.yandex.ru -j ACCEPT
iptables -t filter -A OUTPUT -p tcp --dport 443 -d ns3.yandex.ru -j ACCEPT
iptables -t filter -A INPUT -p tcp --sport 443 -d ns4.yandex.ru -j ACCEPT
iptables -t filter -A OUTPUT -p tcp --dport 443 -d ns4.yandex.ru -j ACCEPT
iptables -t filter -A INPUT -p tcp --sport 443 -d storage.yandex.net -j ACCEPT
iptables -t filter -A OUTPUT -p tcp --dport 443 -d storage.yandex.net -j ACCEPT
iptables -t filter -A INPUT -p tcp --sport 80 -d storage.yandex.net -j ACCEPT
iptables -t filter -A OUTPUT -p tcp --dport 80 -d storage.yandex.net -j ACCEPT
iptables -t filter -A INPUT -p tcp --sport 443 -d *storage.yandex.net -j ACCEPT
iptables -t filter -A OUTPUT -p tcp --dport 443 -d *.storage.yandex.net -j ACCEPT
iptables -t filter -A INPUT -p tcp --sport 80 -d *storage.yandex.net -j ACCEPT
iptables -t filter -A OUTPUT -p tcp --dport 80 -d *.storage.yandex.net -j ACCEPT
iptables -t filter -A INPUT -p tcp --sport 443 -d s228sas.storage.yandex.net -j ACCEPT
iptables -t filter -A OUTPUT -p tcp --dport 443 -d s228sas.storage.yandex.net -j ACCEPT
iptables -t filter -A INPUT -p tcp --sport 80 -d s228sas.storage.yandex.net -j ACCEPT
iptables -t filter -A OUTPUT -p tcp --dport 80 -d s228sas.storage.yandex.net -j ACCEPT
iptables -t filter -A INPUT -p tcp --sport 443 -d webattach.mail.yandex.net -j ACCEPT
iptables -t filter -A OUTPUT -p tcp --dport 443 -d webattach.mail.yandex.net -j ACCEPT

iptables -t filter -A INPUT -p tcp --sport 443 -d docs.google.com/forms/ -j ACCEPT
iptables -t filter -A OUTPUT -p tcp --dport 443 -d docs.google.com/forms/ -j ACCEPT
iptables -t filter -A INPUT -p tcp --sport 443 -d fonts.googleapis.com -j ACCEPT
iptables -t filter -A OUTPUT -p tcp --dport 443 -d fonts.googleapis.com -j ACCEPT
iptables -t filter -A INPUT -p tcp --sport 443 -d goo.gl -j ACCEPT
iptables -t filter -A OUTPUT -p tcp --dport 443 -d goo.gl -j ACCEPT
iptables -t filter -A INPUT -p tcp --sport 443 -d google-analytics.com -j ACCEPT
iptables -t filter -A OUTPUT -p tcp --dport 443 -d google-analytics.com -j ACCEPT
iptables -t filter -A INPUT -p tcp --sport 443 -d script.google.com -j ACCEPT
iptables -t filter -A OUTPUT -p tcp --dport 443 -d script.google.com -j ACCEPT

iptables -t filter -A INPUT -p tcp --sport 443 -d chrome.google.com -j ACCEPT
iptables -t filter -A OUTPUT -p tcp --dport 443 -d chrome.google.com -j ACCEPT

iptables -t filter -A INPUT -p tcp --sport 443 -d mail.yandex.ru -j ACCEPT
iptables -t filter -A OUTPUT -p tcp --dport 443 -d mail.yandex.ru -j ACCEPT
iptables -t filter -A INPUT -p tcp --sport 443 -d passport.yandex.ru -j ACCEPT
iptables -t filter -A OUTPUT -p tcp --dport 443 -d passport.yandex.ru -j ACCEPT
iptables -t filter -A INPUT -p tcp --sport 80 -d passport.yandex.ru -j ACCEPT
iptables -t filter -A OUTPUT -p tcp --dport 80 -d passport.yandex.ru -j ACCEPT
iptables -t filter -A INPUT -p tcp --sport 443 -d https://passport.yandex.ru/auth?mode=add-user&retpath=https%3A%2F%2Fmail.yandex.ru%2F%3FaddMultiUserFromDropdownButton%3Dtrue%23inbox -j ACCEPT
iptables -t filter -A OUTPUT -p tcp --dport 443 -d passport.yandex.ru -j ACCEPT
iptables -t filter -A INPUT -p tcp --sport 80 -d https://passport.yandex.ru/auth?mode=add-user&retpath=https%3A%2F%2Fmail.yandex.ru%2F%3FaddMultiUserFromDropdownButton%3Dtrue%23inbox -j ACCEPT
iptables -t filter -A OUTPUT -p tcp --dport 80 -d https://passport.yandex.ru/auth?mode=add-user&retpath=https%3A%2F%2Fmail.yandex.ru%2F%3FaddMultiUserFromDropdownButton%3Dtrue%23inbox -j ACCEPT
iptables -t filter -A INPUT -p tcp --sport 443 -d ext.captcha.yandex.net -j ACCEPT
iptables -t filter -A OUTPUT -p tcp --dport 443 -d ext.captcha.yandex.net -j ACCEPT
iptables -t filter -A INPUT -p tcp --sport 443 -d yastatic.net -j ACCEPT
iptables -t filter -A OUTPUT -p tcp --dport 443 -d yastatic.net -j ACCEPT
iptables -t filter -A INPUT -p tcp --sport 443 -d yadi.sk -j ACCEPT
iptables -t filter -A OUTPUT -p tcp --dport 443 -d yadi.sk -j ACCEPT
iptables -t filter -A INPUT -p tcp --sport 443 -d clck.yandex.ru -j ACCEPT
iptables -t filter -A OUTPUT -p tcp --dport 443 -d clck.yandex.ru -j ACCEPT

iptables -t filter -A INPUT -p tcp --sport 80 -d ru.archive.ubuntu.com -j ACCEPT
iptables -t filter -A OUTPUT -p tcp --dport 80 -d ru.archive.ubuntu.com -j ACCEPT

iptables -t filter -A INPUT -p tcp --sport 443 -d dl.google.com -j ACCEPT
iptables -t filter -A OUTPUT -p tcp --dport 443 -d dl.google.com -j ACCEPT
iptables -t filter -A INPUT -p tcp --sport 443 -d tools.google.com -j ACCEPT
iptables -t filter -A OUTPUT -p tcp --dport 443 -d tools.google.com -j ACCEPT
iptables -t filter -A INPUT -p tcp --sport 443 -d sbis.ru -j ACCEPT
iptables -t filter -A OUTPUT -p tcp --dport 443 -d sbis.ru -j ACCEPT
#docs.google.com
iptables -t filter -A INPUT -p tcp --sport 443 -d docs.google.com -j ACCEPT
iptables -t filter -A OUTPUT -p tcp --dport 443 -d docs.google.com -j ACCEPT
#drive.google.com
iptables -t filter -A INPUT -p tcp --sport 443 -d drive.google.com -j ACCEPT
iptables -t filter -A OUTPUT -p tcp --dport 443 -d drive.google.com -j ACCEPT
#2gis
iptables -t filter -A INPUT -p tcp --sport 443 -d 2gis.ru -j ACCEPT
iptables -t filter -A OUTPUT -p tcp --dport 443 -d 2gis.ru -j ACCEPT
iptables -t filter -A INPUT -p tcp --sport 80 -d 2gis.ru -j ACCEPT
iptables -t filter -A OUTPUT -p tcp --dport 80 -d 2gis.ru -j ACCEPT
#speedtest
iptables -t filter -A INPUT -p tcp --sport 80 -d speedtest.net -j ACCEPT
iptables -t filter -A OUTPUT -p tcp --dport 80 -d speedtest.net -j ACCEPT

#yandexwebattach
iptables -t filter -A INPUT -p tcp --sport 80 -d webattach.mail.yandex.net  -j ACCEPT
iptables -t filter -A OUTPUT -p tcp --dport 80 -d webattach.mail.yandex.net  -j ACCEPT

#google
iptables -t filter -A INPUT -p tcp --sport 433 -d www.google.com -j ACCEPT
iptables -t filter -A OUTPUT -p tcp --dport 433 -d www.google.com  -j ACCEPT
iptables -t filter -A INPUT -p tcp --sport 433 -d chrome.google.com -j ACCEPT
iptables -t filter -A OUTPUT -p tcp --dport 433 -d chrome.google.com  -j ACCEPT
iptables -t filter -A INPUT -p tcp --sport 433 -d blackfishsoftware.com -j ACCEPT
iptables -t filter -A OUTPUT -p tcp --dport 433 -d blackfishsoftware.com  -j ACCEPT
iptables -t filter -A INPUT -p tcp --sport 433 -d apis.google.com -j ACCEPT
iptables -t filter -A OUTPUT -p tcp --dport 433 -d apis.google.com -j ACCEPT
iptables -t filter -A INPUT -p tcp --sport 433 -d ssl.google-analytics.com -j ACCEPT
iptables -t filter -A OUTPUT -p tcp --dport 433 -d ssl.google-analytics.com -j ACCEPT
iptables -t filter -A INPUT -p tcp --sport 433 -d www.chromestatus.com -j ACCEPT
iptables -t filter -A OUTPUT -p tcp --dport 433 -d www.chromestatus.com -j ACCEPT
iptables -t filter -A INPUT -p tcp --sport 433 -d ietab.net -j ACCEPT
iptables -t filter -A OUTPUT -p tcp --dport 433 -d ietab.net -j ACCEPT
iptables -t filter -A INPUT -p tcp --sport 433 -d www.ietab.net -j ACCEPT
iptables -t filter -A OUTPUT -p tcp --dport 433 -d www.ietab.net -j ACCEPT

#one-net
iptables -t filter -A INPUT -p tcp -s 192.168.1.0/24 --dport http -j ACCEPT
iptables -t filter -A OUTPUT -p tcp -d 192.168.1.0/24 --dport http -j ACCEPT

iptables -t filter -A INPUT -p tcp --sport 433 -d yadi.sk -j ACCEPT
iptables -t filter -A OUTPUT -p tcp --dport 433 -d yadi.sk -j ACCEPT

iptables -t filter -A INPUT -p tcp --sport 433 -d push.yandex.ru -j ACCEPT
iptables -t filter -A OUTPUT -p tcp --dport 433 -d push.yandex.ru -j ACCEPT

iptables -t filter -A INPUT -p tcp --sport 433 -d mc.yandex.ru -j ACCEPT
iptables -t filter -A OUTPUT -p tcp --dport 433 -d mc.yandex.ru -j ACCEPT

iptables -t filter -A INPUT -p tcp --sport 433 -d cloud-api.yandex.ru -j ACCEPT
iptables -t filter -A OUTPUT -p tcp --dport 433 -d cloud-api.yandex.ru -j ACCEPT

iptables -t filter -A INPUT -p tcp --sport 433 -d awaps.yandex.net -j ACCEPT
iptables -t filter -A OUTPUT -p tcp --dport 433 -d awaps.yandex.net -j ACCEPT

iptables -t filter -A INPUT -p tcp --sport 433 -d yandex.net -j ACCEPT
iptables -t filter -A OUTPUT -p tcp --dport 433 -d yandex.net -j ACCEPT

#only reject
iptables -t filter -A INPUT -p tcp --dport 80 -j REJECT
iptables -t filter -A OUTPUT -p tcp --dport 80 -j REJECT
iptables -t filter -A INPUT -p tcp --dport 443 -j REJECT
iptables -t filter -A OUTPUT -p tcp --dport 443 -j REJECT

и пользователь ходит только на гугл - яндекс и досвидосики 

вторник, 29 января 2019 г.

restart minidlna Netgear Stora MS2000

/etc/init.d/minidlna.init stop
rm /home/0tmp/tmp/minidlna/files.db
rm /home/0tmp/tmp/minidlna/minidlna.log
/etc/init.d/minidlna.init start
tail -f /home/0tmp/tmp/minidlna/minidlna.log

четверг, 17 января 2019 г.

shutter

на ubuntu-1804 отвалилась кнопочка редактирования 
источник http://compizomania.blogspot.com/2018/04/shutter-ubuntu-1804.html 

лечиться просто вот этими командами 

cd /tmp; wget https://launchpad.net/ubuntu/+archive/primary/+files/libgoocanvas-common_1.0.0-1_all.deb; sudo dpkg -i libgoocanvas-common_1.0.0-1_all.deb
cd /tmp; wget https://launchpad.net/ubuntu/+archive/primary/+files/libgoocanvas3_1.0.0-1_amd64.deb; sudo dpkg -i libgoocanvas3_1.0.0-1_amd64.deb; sudo apt install -f
cd /tmp; wget https://launchpad.net/ubuntu/+archive/primary/+files/libgoo-canvas-perl_0.06-2ubuntu3_amd64.deb; sudo dpkg -i libgoo-canvas-perl_0.06-2ubuntu3_amd64.deb; sudo apt install -f 


вторник, 25 сентября 2018 г.

Remix

что имеем.. приставку на андройде под названием Remix
питание 5v = подключена от микротика с USB разъемом

задача, начать играть музыку, и если музыка кончилась (провайдер логанул или что то еще) - перезапустить, то есть получаем просто андройд плеер все что нужно - питание , интернет и выход на колоночки

на саму приставку прийдется поставить андройд макркет (гуглиться) после - поставить AIMP плеер (выбор плеера - так как он умеет начинать воспроизводить последний плейлист автоматом)
- поставить AutoStart работает буз рута в программке пишем что запускать автоматом, ждать скажем там секунд 10-15 можно 30 перед запуском и выбираем запускаемое приложение - AIMP

предварительно вбиваем в AIMP нужный нам урл радиостанци и проверяем что звук идет , перегружаем приставку, проверяем что автостарт отработал, что аимп стартанул.



# сбросить количество пакетов на порт 8000
/ip firewall filter reset-counters numbers=[find where src-port="8000"]
# получить количество байт на порт 8000 счетчик
:put [/ip firewall filter get number=[find where src-port="8000"] bytes ]

тут игрался с пингом на мобилу , мол чтобы играло когда ты дома , но оказалость что через 180 секунд андройд перестает пинговаться при выключенном экране и это не работает, а было так бы интересно
 
# запрещаем трафик когда ушли
/ip firewall filter set action=drop numbers=[find where src-port="8000"]                                              
# разрешаем  трафик когда пришли
/ip firewall filter set action=accept numbers=[find where src-port="8000"]



скрипт глянуть есть ли изменение по количеству байт в радиостанции если трафик есть - разница будет, если нет - музыка не играет  - перезапустить USB

 /system script
add dont-require-permissions=yes name=script1 owner=filalex policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source=":local oldByte [/ip firewall filter get number=[find where src-port=\"8000\"] bytes ];\r\
    \n:delay 5\r\
    \n:local newByte [/ip firewall filter get number=[find where src-port=\"8000\"] bytes ];\r\
    \n\r\
    \n:if (\$newByte = \$oldByte) do={\r\
    \n/system routerboard usb power-reset duration=30s\r\
    \n}"

scheduler время подбираем с запасом чтобы девайс загрулился и начал играть 

/system scheduler
add disabled=yes interval=5m10s name=schedule1 on-event="/system script run script1" policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive start-date=jul/14/2016 start-time=05:52:22







в файрволе должо быть правило и оно должно быть выше дропов

 /ip firewall filter
add action=accept chain=forward dst-address=192.168.88.16 protocol=tcp src-address=144.76.96.181 src-port=8000

самая пичалька что после 5 перезапусков девайс перестал подавать признаки жизни, поэтому пока оставлю чтобы было.... все таки расбери лучше дройдов, пичалька
 

четверг, 31 мая 2018 г.

микротик несколько провайдеров

за основу взята статья https://habr.com/post/313342/

еще один способ (помоему уже третий) как  поделить трафик 2х провайдеров (в статье про трех, но у меня нищеброда только 2 ) на локальную сеть

 была задача вырулить один девайс (или подсеть) на резервный канал

/ip address

мы пропускаем так как поучаем адреса как у мдных провайдеров по dhcp  и не паримся со всякими ppoe и прочим пережитком прошлых веков

/ip dhcp-client
add add-default-route=no comment=defconf dhcp-options=hostname,clientid disabled=no interface=ether1_gw1
add add-default-route=no dhcp-options=hostname,clientid disabled=no interface=ether4_gw2 use-peer-dns=no use-peer-ntp=no

тут мы снимаем галки у поля add-default-route по причине что дефолтить прийдется отдельно

/ip route
add distance=1 gateway=10.41.13.254 routing-mark=ISP2-route
add distance=1 gateway=37.235.128.1 routing-mark=ISP1-route
add check-gateway=ping distance=1 gateway=8.8.8.8
add check-gateway=ping distance=2 gateway=8.8.4.4
add distance=1 dst-address=8.8.4.4/32 gateway=10.41.13.254 scope=10
add distance=1 dst-address=8.8.8.8/32 gateway=37.235.128.1 scope=10

прописываем шлюзы провайдеров

/ip firewall filter
add action=accept chain=forward
add action=accept chain=input
add action=accept chain=output


добавляем правил и пихаем вверх (в дефолтной конфигурации роутера без этого не заработает) ну либо курить что в дефолте надо перепилить, а было поздно и неохото


 dst и src nat:
это пропускаем, ну если есть вебсервер или еще чего и надо чтобы с двух провайдеров они видились - то курим сами, пока задача такая не стояла


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

/ip firewall mangle
add action=mark-routing chain=prerouting new-routing-mark=ISP2-route passthrough=yes src-address=192.168.252.0/24
add action=mark-connection chain=input in-interface=ether4_gw2 new-connection-mark=ISP2-con \
    passthrough=yes
add action=mark-routing chain=output connection-mark=ISP2-conn new-routing-mark=ISP2-route passthrough=no src-address=192.168.252.0/24
add action=mark-routing chain=prerouting connection-mark=ISP2-conn-f in-interface=bridge new-routing-mark=ISP2-route passthrough=yes
add action=mark-connection chain=forward in-interface=ether4_gw2 new-connection-mark=ISP2-conn-f passthrough=no



 192.168.252.0/24 - эта подсеть будет уплывать в резерв .. изначально на тесте это был только мобильник из внутренней локалки 192.168.88.16/32

что было замечано на выхлопе
- резкое просидание скорости и упирание в проц - вместо 700 мегабит я получил 200 и в полку проц
- до написания юзалась стаья  http://asp24.com.ua/blog/perenapravlenie-ip-adresov-na-vtorogo-provajdera-v-mikrotik-routerboard/ с маркировкой одного девайса, было производительней но исходящий трафик уходил в основного провайдера ( что в принципе полезно если надо зарулить в резерв только бухов и директора ) , при падении только у них остается интернет но тут я наткнулся на баг что грузиться все пипец как медленно вариант имеет место быть но на назких интернет тарифах














пятница, 16 февраля 2018 г.

Eoip mikrotik не работает

постоянно натыкаюсь на эти грабли
- не дефолтная конфигурация работает
- дефолтная ну в лучшем случае есть пинг но нет инета

нужно разрешать протокол gre 

суббота, 6 января 2018 г.

lantatv.sh

пара строк, которые надо кудато зебекапить чтобы не гуглимть


#!/bin/bash

ping -c 1 -w 5 37.235.***.*** &>/dev/null
if [ $? -ne 0 ] ; then
echo "inet down Oo exit"
else

echo  "inet up, working!"
cd /var/www/tv/
rm *.m3u
echo "cd to www"
wget -t 300 -O full.m3u http://tv.site.ru/full.m3u
echo "wget full"
sed -e 's/udp:\/\/@/http:\/\/server.lanta.me:50611\/udp\//g' full.m3u > lanta_proxy.m3u
echo "created lanta proxy"
sed -e 's/udp:\/\/@/http:\/\/myIP:50666\/udp\//g' full.m3u > filalex_proxy.m3u
echo "created filalex proxy"
sed -e '/225.50.70/d' -e '/Взросл/d' -e 's/udp:\/\/@/http:\/\/192.168.251.10:8888\/udp\//g' full.m3u > wox.m3u
echo "done!"
sed -e '/225.50.79/d' -e '/Взросл/d' filalex_proxy.m3u > wox2.m3u
fi




тест работы udpxy

бывает просто падает, чтобы не тревожили в крон раз в минуту (ну или по желанию) проверка работоспособности


#!/bin/bash
wget  http://127.0.0.1:8888/status/ -O /dev/null

if [ $? -ne 0 ] ; then
 logger test udpxy deamon its dead
 echo "down"
 kill -9 `pidof udpxy`
 udpxy -p 8888 -c 6 -S -l /media/data/log/udpxy/temp.log
else
 logger test udpxy deamon its work
 echo  "up"
fi


если прокси упал - значит и страничка статуса упала - проверяем страничку тупо wget , если команда выполнена успешно - все норм, продолжаем работу и отписываемся в сислог (ну и в консоль если скрипт дергаем ручками ) если страничка статуса не открывается - - пишем в лог, консаоль, киляем процессы и запускаем с нужными параметрами

вторник, 31 октября 2017 г.

качаем музыку с vk

с чего все началось :
"Лёх, привет ещё раз. ты все знаешь... 😉 а знаешь как перенсти всю музыку из одного акк ВК в другой?"



я прекрасно помню что яндекс умел сохранять фото с соц сетей (как вариант не ухожу так как там много фото, стягивается прям на диск, окуда пачкой скачивается архивом), сходил - не может, пошли гуглить.

в принципе реально, для начала надо открыть доступ к своим аудио идея взята с яплакал

1 топаем на урл https://vk.com/settings?act=privacy  проверяем что доступ открыт или открываем

2 топаем на http://vkpls.boutnew.ru/ и жмем "create playlist"

3 вводим id странички  ( либо в дресной строке стартовой старнички профиля, тыкнув на фото "albums3694482" или музыку )

4 вводим количество треков, я узнал что у меня их 1500 (так же с главной стринчки) - получаем url на m3u или на pls, меня интересует m3u сохраняю как vk.m3u

5 приводим в человеческий вид пробежав 2 раза по файлу командой sed - убираем #039; и &
sed -e  's/\&amp\;//g' vk.m3u > vk.m3u1
sed -e  's/\#039\;//g' vk.m3u1 > vk.m3u2
6 узнаем сколько строк в фйле (первую не считаем, то есть -1 )
cat vk.m3u2 | wc -l
я получил 2915 , то есть работать будем до 2914 строки

7 ну и сам скрипт

#!/bin/bash
cd /home/filalex/tmp2
for i in `seq 2 2 2914`;
do
ii="$i"p
let j=$i+1
jj="$j"p
name=`cat vk.m3u2 | sed -n "$ii" | cut -d ',' -f 2`
url=`cat vk.m3u2 | sed -n "$jj"`
wget $url -O "$i"" ""$name.mp3"
done
exit 0

приятного прослушивания

в принципе полученый  url можно воткнуть в mplyer vlc или куда душе угодно, впринципе можно и wget. но на выходе файлы будут *.mp3&?extra=Y4nnp7EBYwOYJgw4FLM6Va-lb7dPfzw1NUZk_tSjkyK9U9qjxR9kPpL5A6A-aKxFoJsvw4icd6P85DeaXDnCfTqzL-46dh0- то есть название не ахти да и расширение тоже
юзать можно  wget $url -O "$name.mp3" но тогда можно получить баг что некоротые треки без ссылки ( уже заблоканы )

четверг, 26 октября 2017 г.

режим подкасты linkmeup на треки

собтсвенно проблемка : трек на 1-2 часа переодически мобилка при прослушивании подвисает, было мнение что из за размера файла, тем более редо что то выгружается из памяти, задача порезать.
на рутрекере был "куплен" диск с cue содержанием, по его аналогии был сделан начальный файл cue.cue примерно такого содержания

REM GENRE Pop
REM DATE 2017
REM DISCID DE104811
REM COMMENT "ExactAudioCopy v0.99pb4"
CATALOG 0000000000000
PERFORMER "Various"
TITLE "linkmeup-V014"
FILE "linkmeup-V014.mp3" WAVE
  TRACK 01 AUDIO
    PERFORMER "V014"
    INDEX 01 00:00:00
  TRACK 02 AUDIO
***
  TRACK 13 AUDIO
    PERFORMER "V014"
    INDEX 01 130:00:00

ну и скрипт подкасты на тот момент были с 14 до 50

#!/bin/bash
cd /home/filalex/tmp3
for i in `seq 14 50`;
do
echo linkmeup-V0$i.mp3
sed -e 's/V014/V0'$i'/g' cue.cue > linkmeup-V0$i.cue
mp3splt -c linkmeup-V0$i.cue linkmeup-V0$i.mp3 -o @p_@N
done
exit 0

на выходе получаем  файлы 
"V050_01.mp3"
"V050_02.mp3"
***
"V049_01.mp3"

в теории можно загнаться с утилиткой mp3info получить команду 
mp3info 9208632795857167990.mp3 -p %s
ключи на конце разные, можно получить минуты, секунды сколько весит трек и сгенерировать на ее основе конкретный cue, но как показала практика mp3splt абсолютно пофик, больше чем есть не вырежет, если меньше - закончиться на том таймере который последний подходящий, если есть больше, все влезит в последний файл13 

пятница, 6 октября 2017 г.

запуск команды с низким приоритетом

ionice -c 3 <command>
запуск команды с низким приоритетом по работе с диском
к примеру удаление большого файла или архивация \ разархивация, долго, но не мучает сервис