Перейти к содержанию

ankar84

Участники форума
  • Постов

    407
  • Зарегистрирован

  • Посещение

  • Победитель дней

    3

Сообщения, опубликованные ankar84

  1. Сменил роутер на Keenetic Giga (KN-1010) и на v2.13.A.4.0-1 проблема присутствует.

    Напомню суть проблемы. Webgui не доступен по dns имени keendns, но прекрасно отвечает из внутренней сети по IP адресу 192.168.1.1

    Белый IP, проверил 443 порт открыт, 80 порт открыт (проверял на ping.eu)

    Притом, домен 4 уровня так же не отвечает (отличие от моего первого сообщения). И галочка разрешить доступ из интернета стоит (без нее пускало только из периметра локальной сети)

    Скрытый текст


    Screenshot_2018-08-08-11-17-20-928_com.android.chrome.png

     

     

    Селф тест в следующем скрытом сообщении.

    • Спасибо 2
  2. 19 часов назад, vladrnd сказал:

    ну вот как-то он периодически отвечает не по мужски, через раз ... вторичный DNS ответил, первичный (dnsproxy2) проскочил запрос.

    Предлагаю ознакомиться с темой, возможно там есть ответ на ваш запрос:

    От себя добавлю (хотя это есть в моем первом посте) - рекомендую использовать dnscrypt-proxy2 как единственный DNS сервер на роутере и дать ему выбирать самый быстрый из серверов из предложенных ему вами. Именно так поступает, насколько я понял, @vasek00

     

     

  3. В итоге полное решение на данный момент это вынесение оповещательной части бота в отдельный сервис (демон). По аналогии создал /opt/bin/bashbotevent.sh:

    #!/opt/bin/bash
    
    tail -f -n 0 /opt/var/log/syslog.log | while read line ; do
    	if [[ $line =~ "ndm: Core::Scgi::Auth: authentication failed for user" ]] ; then /opt/bin/tg_say.sh "$line"; fi
    done

    В этот скрипт со временем будут добавлять реакции на нужные мне события.

    И создал новый /opt/etc/init.d/S52bashbotevent:

    #!/bin/sh
    
    ENABLED=yes
    PROCS=bashbotevent.sh
    ARGS=""
    PREARGS="screen -dmS bashbot.socket"
    DESC=$PROCS
    PATH=/opt/sbin:/opt/bin:/opt/usr/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
    
    . /opt/etc/init.d/rc.func

    Оба сделал исполняемыми

    chmod +x /opt/bin/bashbotevent.sh
    
    chmod +x /opt/etc/init.d/S52bashbotevent

    И после 

     # /opt/etc/init.d/S52bashbotevent start
    

    Бот реагирует и на команды и присылает сообщения о не успешных попытках авторизации.

  4. Мне с помощью телеграм бота хочется реализовать такого помощника, который всегда под рукой, который помогает решать если не повседневные, то наиболее частые задачи.

    Основное - хочется в моменте получать от бота сообщения, о том, что кто-то успешно или не успешно подключается на WebUI, по FTP или подключается к серверу VPN.

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

    Что уже сделал.

    # vi /opt/bin/tg_say.sh
    
    #  chmod +x /opt/bin/tg_say.sh

    tg_say.sh:

    #!/opt/bin/bash
    
    API_TOKEN='токен моего бота'
    CHAT_ID='айди моего с ботом чата'
    
    if [ -z "$CHAT_ID" ]; then
        echo 'Please, define CHAT_ID first! See "chat":{"id":xxxxxxx string below:'
        /opt/bin/wget -qO - https://api.telegram.org/bot$API_TOKEN/getUpdates
        exit 1
    fi
    
    MSG="<b>$(hostname)</b>: $@"
    
    /opt/bin/wget -q "https://api.telegram.org/bot$API_TOKEN/sendMessage?chat_id=$CHAT_ID&parse_mode=html&text=$MSG" 2>&1
    
    if [ $? -eq 0 ]; then
        echo 'Message sent successfully.'
    else
        echo 'Error while sending message!'
        exit 1
    fi

    Поправил /opt/etc/init.d/S51bashbot как тут рекомендовали с установкой screen через opkg install screen

    #!/bin/sh
    
    ENABLED=yes
    PROCS=bashbot.sh
    ARGS=""
    PREARGS="screen -dmS bashbot.socket"
    DESC=$PROCS
    PATH=/opt/sbin:/opt/bin:/opt/usr/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
    
    . /opt/etc/init.d/rc.func

    И теперь пробую править bashbot.sh с помощью наработок и советов этой темы:

    #!/opt/bin/bash
    
    TOKEN='токен моего бота'
    NAMEA='мой логин в телеграм'
    URL='https://api.telegram.org/bot'$TOKEN
    MSG_URL=$URL'/sendMessage?chat_id='
    UPD_URL=$URL'/getUpdates?offset='
    KMSG_URL=$URL'/sendMessage'
    OFFSET=0
    TIMEOUT='&timeout=30'
    
    
    function send_message {
    	res=$(curl --insecure --data-urlencode "text=$2" "$MSG_URL$1&")
    }
    function send_keyboard {
        local text="$1"; shift 1; local keyboard=init
        OLDIFS=$IFS; IFS=$(echo -en "\"")
        for f in $*;do [ "$f" != " " ] && local keyboard="$keyboard, [\"$f\"]";done
        IFS=$OLDIFS; local keyboard=${keyboard/init, /}
        res=$(curl -s "$KMSG_URL" --header "content-type: multipart/form-data" -F "chat_id=$TARGET" -F "text=$text" -F "reply_markup={\"keyboard\": [$keyboard],\"one_time_keyboard\": true}")
    }
    
    while true; do {
    	res=$(curl --insecure $UPD_URL$OFFSET$TIMEOUT)
    
    	TARGET=$(echo $res | JSON.sh | egrep '\["result",0,"message","chat","id"\]' | cut -f 2)
    	OFFSET=$(echo $res | JSON.sh | egrep '\["result",0,"update_id"\]' | cut -f 2)
    	MESSAGE=$(echo $res | JSON.sh -s | egrep '\["result",0,"message","text"\]' | cut -f 2 | cut -d '"' -f 2)
    	USER=$(echo $res | JSON.sh | egrep '\["result",0,"message","from","username"\]' | cut -f 2 | cut -d '"' -f 2)
    
    	[ -z "$MESSAGE" ] || echo "[$(date +%Y.%m.%d_%H:%M:%S)][$USER] $MESSAGE" >> /opt/var/log/bashbot.log
    	OFFSET=$((OFFSET+1))
    	tail -f с | \
    	while read line ; do
    		if [[ $line =~ "ndm: Core::Scgi::Auth: authentication failed for user" ]] ; then /opt/bin/tg_say.sh "$line"; fi
    	done
    	if [ $OFFSET != 1 ]; then
    		case $MESSAGE in
    			'/help') send_keyboard "Bot knows commands:" "/help" "/top" "/meminfo" "/cpuinfo" "/uname" "/log";;
    			'/start') msg="Just few commands are implemented. Blame @ryzhov_al if something goes wrong.";;
    			'/top') msg="$(top -n1 | head -n3)";;
    			'/meminfo') msg="$(cat /proc/meminfo)";;
    			'/cpuinfo') msg="$(cat /proc/cpuinfo)";;
    			'/uname') msg="$(uname -a)";;
    			'/log') msg="$(cat /opt/var/log/bashbot.log)";;
    			*) msg=$(ndmq -p "$MESSAGE" -x);;
    
    		esac
    		[ $USER = $NAMEA ] || send_message "$TARGET" "Sorry. Private bot"
    		[ $USER = $NAMEA ] && send_message "$TARGET" "$msg"
    	fi
    
    } &>/dev/null; done

    Но в таком виде сообщения о не успешной авторизиции приходят, но бот не реагирует на посылаемые ему команды.

    Я не очень понимаю, где мне брать журнал "реального времени".

    То есть для сбора логов у меня в Entware установлен syslog-ng, который собирает все логи и пишет их в файл (/opt/var/log/syslog.log) но в этом случае получается, что стоит мне перезапустить бота и он тут же высыпет мне россыпь сообщений о неудачной авторизации в WebUI (мои предыдущие тесты). А мне хочется, что бы бот начал смотреть "живой" лог роутера и парсил его на лету.

    Файлов в /var/log/ у меня нет.

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

     

    UPD: Кажется первая проблема решена с помощью параметра -n 0 команды tail. Теперь бот реагирует только на актуальные события, которые произошли после его запуска, а не на все, что нашел в логе. То есть часть парсера логов теперь выглядит вот так:

    	tail -f -n 0 /opt/var/log/syslog.log | while read line ; do
    		if [[ $line =~ "ndm: Core::Scgi::Auth: authentication failed for user" ]] ; then /opt/bin/tg_say.sh "$line"; fi
    	done

     

    • Лайк 1
  5. 22 минуты назад, vasek00 сказал:

    или еще проще по монитору WEB
    Память 35% (45/128 Мб)

    С моим листом в около 2 Мб потребление RAM побольше. На текущий момент смотрю - 35% (90/256 Мб)

    25 минут назад, vasek00 сказал:

    и жертвуем быстродействием в другом, где запросов по DNS со страниц при просмотрах достаточно

    Все верно, именно поэтому и увеличил размер кэша.

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

    27 минут назад, vasek00 сказал:

    Чем же он так популярен, говорят по скорости но никто из пользователей не подтвердил реальность его быстродействия проверив его например через DNSBench (предварительно прописав два адреса CloudFlarе серверов)

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

    Но тут суть вообще в том, что fallback_resolver используется при очень определенных условиях и не слишком часто, а именно только для разрешения адреса со списком dnscrypt серверов в случае, если системный резолвер не доступен или отключен. Так что можно оставить сервер Quad9 DNS.

    • Лайк 1
  6. Прошу прощения, но скорее всего второй селф получился не по проблеме, а из-за моих экспериментов по оптимизации переадресации портов и правил межсетевого экрана.

    Когда поднял на роутеле L2TP\IPSec сервер, то сделал и проброс 500UDP+4500UDP и их же разрешил в межсетевом экране. А потом выяснилось, что эти правила и пробросы автоматически создаются при включении компонента L2TP\IPSec сервер.

    Поэтому я удалил в итоге все свои правила в межсетевом экране (а их было около 10). 4 правила помогли мне удалить на канале в телеграме. Эти правила были для Андроид устройств в сети и то, что они все запросы дублировали на 8.8.8.8. В итоге в OPKG сделал правило перенапраления всех запросов на 53 порт на DNS сервер роутера, коим у меня служит dnscrypt-proxy2.

    Так вот. Осталось 2 правила проброса - для FTP и HTTPS, которые я вчера и отключил (через WEB по HTTPS) и благополучно забыл про это. А сегодня проверил удаленно FTP - не работает, включил оба правила - заработал FTP и доступ по HTTPS на внешний адрес по KeenDNS имени.

    Так что селф тест в проблемном состоянии все еще собираю.

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

    • Спасибо 1
  7. В следующем посте будет селф в моменте с недоступным по внешнему адресу вебом. 

    Есть мысль, что проблема случается при закачке трансмишеном. Пока не качаешь, работает стабильно. Сегодня поставил один файл на закачку, словил проблему. Хотя может просто совпало.

    • Спасибо 1
  8. 20 часов назад, KorDen сказал:

    Эти 33% из-за того что вы в этот момент смотрите на главную страницу, на которой рисуются графики и проч

    У меня на главной плавает 0-4% при отсутствии нагрузки со стороны клиентов.

  9. С помощью приложения поставил режим точки доступа и после перезагрузки общие настройки отображаются нормально. Поэтому собрал Селф тест, но так как был ребут, веб интерфейс по внешнему имени сейчас работает. В общем, в следующем посте будет селф при рабочем состоянии.

  10. 41 минуту назад, AndreyUA сказал:

    у меня тоже на ultra почему-то не доступен веб интерфейс извне. На omni нет такой проблемы.

    Да, у меня тоже Ультра. Притом перезагрузишься, работает какое-то время и потом перестаёт отвечать. Может утекает что-то.

  11. 4 минуты назад, Kiborg_Man сказал:

    А включить и выключить режим отладки пробовали?

    Да, включил, попробовал зайти на внешнее имя, отключил. Роутер начал генерировать файл, потом эта ошибка.

    В логах вижу вот такое:

    Цитата

    [W] May 12 17:21:42 ndm: Core::Watchdog: Event sender holds SSL_SERVER (12) lock 660 seconds acquired May 12 17:10:42.
    [W] May 12 17:21:42 ndm: Main: "Event sender": backtrace:
    [W] May 12 17:21:42 ndm: Main: "Event sender":   <unknown>+0x0
    [W] May 12 17:21:42 ndm: Main: "Event sender":   <unknown>+0x0
    [W] May 12 17:21:42 ndm: Main: "Event sender":   (anonymous namespace)::Join_(Control_*)()+0x54
    [W] May 12 17:21:42 ndm: Main: "Event sender":   Thread::Stop()()+0x234
    [W] May 12 17:21:42 ndm: Main: "Event sender":   Http::SslServer::SslService_::~SslService_()()+0xac
    [W] May 12 17:21:42 ndm: Main: "Event sender":   Http::SslServer::SslService_::~SslService_()()+0x34
    [W] May 12 17:21:42 ndm: Main: "Event sender":   AutoPtr<Http::SslServer::SslService_>::Reset(Http::SslServer::SslService_*)()+0x38
    [W] May 12 17:21:42 ndm: Main: "Event sender":   Http::SslServer::RestartServer_()()+0x68
    [W] May 12 17:21:42 ndm: Main: "Event sender":   Http::SslServer::OnDbKey_(Event::DbKey const&)()+0x90
    [W] May 12 17:21:42 ndm: Main: "Event sender":   Event::Sender::Run()()+0x640
    [W] May 12 17:21:42 ndm: Main: "Event sender":   Thread::StartRoutine_(void*)()+0x1ac
    [W] May 12 17:21:42 ndm: Main: "Event sender":   <unknown>+0x0

     

    • Спасибо 1
  12. Доброго дня!

    Время от времени возникает ситуация, что не доступна новый веб интерфейс (а учитывая историю изменения 2.12А.0.6 единственный веб интерфейс) по адресу https://myname.keenetic.pro

    myname взято для примера, реально используется другое имя.

    Притом в момент проблемы все перечисленное верно:

    1. Телнет на 443 по внешнему адресу, да и по имени KeenDNS проходит успешно.

    2. KeenDNS настроен в прямом режиме на белый IP

    3. Проброс к другим веб приложениям сети через KeenDNS в момент проблемы работает нормально. (например тот же transmission на роутере открывается по имени transmission.myname.keenetic.pro) 

    4. По внутреннему имени веб интерфейс работает нормально.

    image.png.74a4a336aa73a14a795e64740c4684f4.png

    В рабочем режиме (когда работает) доступ из интернета к 80 порту нет (галка не стоит) но по https вхожу без проблем.

    Версия 2.12.A.6.0-0

    Что смотреть? Что проверять? Какую службу перезапустить?

    Перезагрузка роутера помогает.

    Селфтест прикладываю к следующему посту.

    Хотя отбой, не могу приложить селфтест, так как страница общих настроек /controlPanel/system не загружается.

    • Спасибо 1
  13. А вот нашел и баг в старом интерфейсе. У меня настроен IPSec VPN, который я использую ежедневно со своего смартфона на Android. А вот в веб интерфейсе настроенного подключения не видно. И в новом опять таки этих настроек я не нашел.

    UPD Нашел эту настройку на последней вкладке приложений.

    Скрытый текст

    image.png.b4af49ab3028ddedc8cc38816f7a9c5c.png

     

  14. Доброго дня!

    Не могу найти в новом web интерфейсе список доступа для обоих WiFi точек (2.4 и 5 ГГц).

    Мне данный функционал мне необходим, так как из-за особенностей моего ТВ от LG 2014 года пришлось убрать пароль с точки доступа 5 ГГц и чтобы хоть как-то ограничивать доступ сделал эту точку скрытой (SSID) и включил белый список устройств, которые могут к ней подключаться.

    Так же не вижу настройки гостевой сети, которую так же использую.

    Пока нашел только данный функционал, который не был перенесен в новый веб интерфейс, буду еще искать.

     

    Скрытый текст

    image.png.b215936f12fb4f5b5e8559cbfb9aebff.png

    image.png.8b3c3caa653fa0108a73c509bc6467a3.png

     

     

     

  15. @vasek00 пробовали установить как сервис? То есть запустить с опцией -service install

    У меня не вышло, похоже там все на чистый linux зашито, а не наш Entware.

    @Александр Рыжов альтернатива это безусловно хорошо, но могут ли альтернативные варианты кроме защиты от спуфинга и перехвата dns запросов предложить и блокировку не нужного контента, читай рекламы? Для меня критично.

    Плюсом на OpenNIC резолверах получаем разрешение домена .lib чем я активно пользуюсь.

  16. Попробовал запустить dnscrypt-proxy 2.0.0beta12 так как автор собрал ее для Linux/mipsle.

    При запуске проверяет все адреса по отклику и выбирает самый быстрый на момент проверки.

    Процессор почти не потребляет, а вот оперативной памяти при моем файле dnscrypt-blacklist-domains.txt в 1.3Мб занимает около 40Мб. Мне на моей Ultra это не очень страшно, а вот девайсам с меньшим количеством оперативной памяти будет конечно сложнее, да и как высказались здесь гуру - не целесообразно.

  17. 4 часа назад, Александр Рыжов сказал:
    1. Создать симлинк /opt/sbin/dnscrypt-proxy2, ссылающийся на /opt/sbin/dnscrypt-proxy,
    2. Скопировать /opt/etc/init.d/S09dnscryptproxy в /opt/etc/init.d/S09dnscryptproxy2,
    3. Поправить параметры в новом S09dnscryptproxy2 для запуска dnscrypt-proxy2 с собственными параметрами.

     

    Спасибо, получилось!

    А при обновлении dnscrypt-proxy данный метод не поломается? 

    Хотя 1.9.5 видимо последняя версия.

     

    И еще, у кого поломался резолвер fvz, можно его запустить вот так:

    dnscrypt-proxy --local-address=127.0.0.1:65053 --provider-name=2.dnscrypt-cert.dnsrec.meo.ws --provider-key=1A6A:D0A3:2B4C:5A61:A695:D153:670D:69AB:1690:3F9E:C3F7:F64F:13E5:35A3:18B2:28A5 --resolver-address=185.121.177.177:5353 -l /opt/var/log/dnscrypt-proxy-fvz-one-65053.log -m 7"

    Причина поломки - в файле dnscrypt-resolvers.csv этот резолвер указан без порта, то есть с дефолтовым 443, а сейчас там все работает на 5353

×
×
  • Создать...

Важная информация

На этом сайте используются файлы cookie. Нажимая "Я принимаю" или продолжая просмотр сайта, вы разрешаете их использование: Политика конфиденциальности.