-
Posts
48 -
Joined
-
Last visited
Content Type
Profiles
Forums
Gallery
Downloads
Blogs
Events
Posts posted by Mr.Scayger
-
-
На самом деле прошу подсказать по синтаксису, из хелпа по bird непонятно.
Если пишу так
protocol static {
route 195.201.201.32/32 multipath
via 10.84.0.28 weight 2
via 10.80.0.2 weight 1
;
}ошибок нет
Если такprotocol static {
route 195.201.201.32/32
via "ovpn_br0"
;
}тоже ошибок нет
Если так
protocol static {
route 195.201.201.32/32 multipath
via "ovpn_br0"via "ovpn_br1"
;
}то ошибки. Как сделать правильно???
-
Всем доброго времени суток и с наступившим )))
В Linux && Bird новичок, поэтому прошу помощи. Есть текстовый файл с префиксами сетей вида х.х.х.х/32, для примера взял список торрентов из TorrentMonitor и добавил 2ip.ru для проверки. На роутере подняты несколько vpn-интерфейсов. Необходимо маршрутизировать трафик до этих сетей через все vpn интерфейсы, используя bird и route multipath. Почти всё, что находил в интернете, касалось bgp и других протоколов, про статическую маршрутизацию почти ничего. Сделал тестовую конфигурацию. Если в ней всё прописывать руками (каждый маршрут), то работает. Если попытаться обобщить, используя фильтр и маршрут по умолчанию, соответственно нет. Ошибка и в том, и в другом. Прикладываю неработающую конфигурацию с тестовыми сетями. Прошу наставить на путь истинный))) Если это возможно вообще, требуется импортировать список сетей из файла в конфиг и прописывать маршруты через имена интерфейсов, т.к. ip vpn всегда меняются. Таблица 1000 создана руками и заполняется только при ручном прописывании маршрутов.
Последняя тестовая конфигурация :
Скрытый текстprotocol direct {
interface "*";
}table enemy;
protocol device {
scan time 60;
}function martians ()
{ return net ~ [ 195.201.201.32/32,
104.21.234.178/32,
104.21.234.179/32,
104.21.63.9/32,
104.21.84.130/32,
172.67.142.12/32,
172.67.193.9/32,
179.43.141.93/32,
196.245.156.22/32,
45.132.105.85/32,
46.175.146.105/32,
46.19.139.195/32,
5.45.74.149/32
];
}protocol static {
table enemy;import filter {
if martians() then accept;
reject;
};
route 0.0.0.0/0 multipath
via 10.85.0.1
via 10.80.0.1
via 10.84.0.1;
preference 1;
}protocol kernel {
table enemy;
persist;
learn;
scan time 60;
kernel table 1000;
export all;
# debug all;
}
-
Судя по записи
Server started on 0.0.0.0:6687
он запускается. Не надо нажимать ^C, достаточно Enter
По предыдущим опытам установки составил себе немного другую инструкцию, которую перепроверил на днях. Установка удачно проходит, кроме новых косяков Питона 3.10. Список изменений и дополнений.
Необходимые пакеты:
opkg install python3-base python3 python3-pip gcc make patch coreutils-install wget-nossl unzip dos2unix --force-depends
Для Питона:
pip3 install –upgrade "setuptools<58" - в более новых другие косяки лезут
pip3 install --upgrade pip
pip3 install wheel pyparsingОбязательно преобразовать файлы дистрибутива в Unix кодировку:
find /opt/monitorrent -depth -type f -name "*.py" -exec dos2unix -u {} \;
Скрипт запуска (/opt/etc/init.d/S95tormon) сделал из шаблона, чтобы параметры свои передавать:
Скрытый текст#!/bin/sh
ENABLED=yes
PROCS=python3
ARGS="/opt/monitorrent/server.py --db-path /opt/monitorrent/monitorrent.db"
PREARGS=""
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
Запуск командой:
sh /opt/etc/init.d/S95tormon start
-
15 часов назад, St0nE сказал:
А что с предупреждением? не правили, так работает?
Да, работает нормально.
-
-
Всем доброго времени суток)
В связи с недавней поломкой monitorrent из-за обновления Python3 до 3.10 возник закономерный вопрос - можно ли выборочно запретить обновление пакетов через OPKG? Чтобы не обновлять все остальные поштучно. На Малинке это делается так:
sudo echo 'kodi hold' | sudo dpkg --set-selections
sudo echo 'kodi-bin hold' | sudo dpkg --set-selectionsЕсть ли тут такая возможность?
-
Итог - работает. Правки надо вносить в 5 файлов:
"/opt/lib/python3.10/site-packages/falcon/util/structures.py"
"/opt/lib/python3.10/site-packages/attrdict/mapping.py"
"/opt/lib/python3.10/site-packages/attrdict/mixins.py"
"/opt/lib/python3.10/site-packages/attrdict/merge.py"
"/opt/lib/python3.10/site-packages/attrdict/default.py" -
Поменял collections на collections.abc во всех пакетах, выдающих ошибку при запуске. Вроде запустился. Осталось одно предупреждение:
Скрытый текст/opt/lib/python3.10/site-packages/alembic/util/messaging.py:73: UserWarning: 'connection' argument to configure() is expected to be a sqlalchemy.engine.Connection instance, got <sqlalchemy.orm.session.ContextSession object at 0x23faaa0>
warnings.warn(msg)
С ним что делать? Игнорировать??
-
Куча других ошибок появляется. Моего ума на это не хватает)) Пробовал по этому:
Тоже методом тыка, не проканало.
-
Поставил Entware с нуля на другую флешку. Установил monitorrent. Не работает. Куча ошибок.
Скрытый текстFile "/opt/monitorrent/server.py", line 19, in <module>
from monitorrent.rest.notifiers import NotifierCollection, Notifier, NotifierCheck, NotifierEnabled
File "/opt/monitorrent/monitorrent/rest/__init__.py", line 6, in <module>
import falcon
File "/opt/lib/python3.10/site-packages/falcon/__init__.py", line 30, in <module>
from falcon.api import API # NOQA
File "/opt/lib/python3.10/site-packages/falcon/api.py", line 21, in <module>
from falcon import api_helpers as helpers, DEFAULT_MEDIA_TYPE, routing
File "/opt/lib/python3.10/site-packages/falcon/api_helpers.py", line 21, in <module>
from falcon import util
File "/opt/lib/python3.10/site-packages/falcon/util/__init__.py", line 29, in <module>
from falcon.util import structures
File "/opt/lib/python3.10/site-packages/falcon/util/structures.py", line 35, in <module>
class CaseInsensitiveDict(collections.MutableMapping): # pragma: no cover
AttributeError: module 'collections' has no attribute 'MutableMapping'
-
А как выглядят переменные PYTHONPATH и PYTHONHOME на работающем роутере??
-
Это на крайний случай, когда совсем помрёт. Тем более на 3.7.1 какие-то проблемы с установкой, не вникал пока.
По ответам в инете это проблемы с переменными окружения в питоне и отсутствие некоторых линков. Пока поразбираюсь. Очень уж переставлять неохота...
-
Пытался. Даже питон 3й подчистую сдуру снёс) Как я понимаю теперь, достаточно было даунгрейдить pip3 до версии <58. Теперь и питон как-то криво стоит. При запуске команды pip3 install -r requirements.txt или pip3 install <имя модуля> выдаёт одну и ту же ошибку:
Скрытый текстCould not find platform dependent libraries <exec_prefix>
Consider setting $PYTHONHOME to <prefix>[:<exec_prefix>]
Traceback (most recent call last):
File "/opt/bin/pip3", line 3, in <module>
import re
ModuleNotFoundError: No module named 're'
/opt/monitorrent # pip3 install -r re
Could not find platform dependent libraries <exec_prefix>
Consider setting $PYTHONHOME to <prefix>[:<exec_prefix>]
Traceback (most recent call last):
File "/opt/bin/pip3", line 3, in <module>
import re
ModuleNotFoundError: No module named 're'
-
После обновления python до 3.10 работать перестал. Кто-нибудь знает, как победить?
-
On 2/21/2021 at 2:04 AM, dsolo said:
Подскажите что мне сделать, чтобы просто обходить несколько сайтов, без всяких там BGP.
Удалить все скрипты, настроить VPN, в админке кинетика "Сетевые правила/Маршрутизация" добавить вручную нужные маршруты по типу:
35.184.0.0/13vpn-интерфейсДаGoogle LLC (Spotify)208.85.40.0/21vpn-интерфейсДаwww.pandora.com- 1
-
Важное дополнение - если на роутере включены ПРИОРИТЕТЫ ПОДКЛЮЧЕНИЙ и настроена ПРИВЯЗКА УСТРОЙСТВ К ПРОФИЛЯМ, то устройство, с которого производится проверка, должно находиться в ОСНОВНОМ ПРОФИЛЕ. Убил на это кучу времени, пока понял. Возможно, что если поиграть настройками дополнительных профилей, то заработает и с ними, но я не стал экспериментировать.
-
Диагностика ошибок для моего метода
Открыть сайт 2ip.ru и посмотреть, какой ip показывает. Если с ovpn_br2, то работает. Если нет, искать ошибки.
Всем скриптам естественно должны были быть даны права на выполнение командой "chmod +x".
1.Командой ps | grep bird проверить, запущен ли bird. В выводе будет строка типа "4413 root 52372 S bird4 -c /opt/etc/bird4.conf". Если не запущен, искать причины. Смотреть в логе ошибки, либо воспользоваться командой "bird4 -p -c /opt/etc/bird4.conf".
2.Командой "ip rule list" убедиться в наличии таблиц с номерами 1001,1002,1003. В выводе будут строки:
30001: from all lookup 1001
30002: from all lookup 1002
30003: from all lookup 1003Если их нет, ошибка в скрипте /opt/etc/init.d/S02bird-table. Запустить его вручную "sh /opt/etc/init.d/S02bird-table start" и разобраться в ошибках, если есть.
3.В /opt/etc должны появиться файлы bird4-nl.list, bird4-us.list и созданный в п.2 bird4-us-force.list. В /opt/etc/blacklist файлы ip.lst и md5.txt. Если их нет, то ошибка в скрипте, созданном в п.4
- 1
-
Прелюдию (установку пакетов, настройку pingcheck на vpn интерфейсах, методики проверки конфигов на ошибки и т.п.) опускаю, т.к. это достаточно описано выше.
Реализован следующий алгоритм работы. Есть два VPN интерфейса, ovpn_br1 основной и ovpn_br2 резервный. На IP, прописанные в файле /opt/etc/bird4-us-force.list, трафик идёт через ovpn_br2. На адреса из общего списка ip.lst через основной, если он недоступен, то через резервный.
1.Создать папку /opt/etc/blacklist
2.Остановить или установить bird, заменить файл конфигурации /opt/etc/bird4.conf следующим
Spoiler#log syslog all;
#log stderr all;router id 192.168.1.1;
protocol direct {
interface "ovpn_br1", "ovpn_br2";
}table nl_free;
table us_free;
table us_backup;protocol device {
scan time 15;
}protocol kernel {
table us_free;
persist;
learn;
scan time 900;
import none;
export all;
kernel table 1001; # kernel routing table number
}protocol kernel {
table nl_free;
persist;
learn;
scan time 900;
import none;
export all;
kernel table 1002; # kernel routing table number
}protocol kernel {
table us_backup;
persist;
learn;
scan time 900;
import none;
export all;
kernel table 1003; # kernel routing table number
}protocol static {
table us_free;
include "/opt/etc/bird4-us-force.list";
check link on;
preference 50;
}protocol static {
table nl_free;
include "/opt/etc/bird4-nl.list";
check link on;
preference 250;
}protocol static {
table us_backup;
include "/opt/etc/bird4-us.list";
check link on;
preference 500;
}Создать файл /opt/etc/bird4-us-force.list. Пример ниже, 2ip внесён для проверки работы.
Spoilerroute 185.85.121.0/24 via "ovpn_br2"; #Lostfilm.TV
route 195.201.201.32/32 via "ovpn_br2"; #2ip.ru
route 3.0.0.0/8 via "ovpn_br2"; #Amazon
route 52.32.0.0/11 via "ovpn_br2"; #Amazon
route 207.171.160.0/19 via "ovpn_br2"; #Amazon
3.Создать скрипт /opt/etc/init.d/S02bird-table для инициализации таблиц при незапланированных перезагрузках
Spoiler#!/bin/sh
PATH=/opt/bin:/opt/sbin:/sbin:/bin:/usr/sbin:/usr/bin
start()
{
if [ -z "$(ip rule | awk '/^30001/' )" ]; then
ip rule add table 1001 priority 30001
fi
if [ -z "$(ip rule | awk '/^30002/' )" ]; then
ip rule add table 1002 priority 30002
fi
if [ -z "$(ip rule | awk '/^30003/' )" ]; then
ip rule add table 1003 priority 30003
fi
}stop()
{
ip rule del table 1001
ip rule del table 1002
ip rule del table 1003
}case "$1" in
start)
start
;;stop | kill)
stop
;;restart)
stop
sleep 5
start
;;
*)
echo "Usage: $0 {start|stop|kill|restart}"
;;
esac4.В папку cron.daily или cron.hourly поместить скрипт (автору ветки респект 👍) парсинга списка ip.lst и выполнить его вручную первый раз
Spoiler#!/bin/sh
VPN1=ovpn_br1
VPN2=ovpn_br2
URL0=https://antifilter.download/list/ip.lstROUTE1=/opt/etc/bird4-nl.list
ROUTE2=/opt/etc/bird4-us.listlogger "Entering ${0##*/}."
until ADDRS=$(dig +short google.com @localhost -p 53) && [ -n "$ADDRS" ] > /dev/null 2>&1; do sleep 5; done
cd /opt/etc/blacklist
wget -N $URL0old=$(cat /opt/etc/blacklist/md5.txt)
new=$(cat /opt/etc/blacklist/*.lst | md5sum | head -c 32)if [ "$old" != "$new" ]
then/opt/etc/init.d/S04bird1-ipv4 kill
/opt/etc/init.d/S02bird-table killcat /opt/etc/blacklist/ip.lst | sed 's/^/route /' | sed 's/$/\/32 via "'$VPN1'";/' > $ROUTE1
cat /opt/etc/blacklist/ip.lst | sed 's/^/route /' | sed 's/$/\/32 via "'$VPN2'";/' > $ROUTE2echo $new > /opt/etc/blacklist/md5.txt
/opt/etc/init.d/S02bird-table start
/opt/etc/init.d/S04bird1-ipv4 startlogger "RKN list reconfigured"
fi
logger "Leaving ${0##*/}."
5.Если всё прошло без ошибок, то можно пользоваться. Только подождать немного, пока bird переварит таблицы 🙂
С одним vpn подключением всё упрощается до примитивности.
- 1
-
Попробовал на прошивках 3.5.2(.4) использовать полный список https://antifilter.download/list/ip.lst
Полёт нормальный. Работает 😀 Тормозов нет. Соответственно скрипты можно сильно упростить.
-
Как вариант отображать на любой странице результаты pingcheck, заданные пользователем.
-
Всё оказалось просто)
Есть Keenetic Giga KN-1010, прошивка 3.4.6. На более ранних прошивках со старой версией Open VPN скорее всего не заработает, там переменные окружения и параметры другие. Пример привожу для VPN-подключения с именем "OpenVPN4".
- Добавляем параметр "verb 3" в настройки VPN-подключения.
- Включаем, после подключения в системном журнале ищем строку вида: PUSH: Received control message: 'PUSH_REPLY,dhcp-option DNS х.х.х.х, redirect-gateway def1,...,route-gateway A.B.C.D, topology subnet,ping 10,ping-restart 60,...
- Настраиваем роутер по статье https://keenetic-gi.ga/2019/01/22/bgp_routing.html, используя IP A.B.C.D как IP адрес удалённого конца VPN-соединения. Убеждаемся, что работает.
- В /opt/etc/ndm/openvpn-route-up.d добавляем ещё один скрипт 020-bird_restart.sh и делаем его исполняемым. Скрипт меняет 40-ю строку конфигурации bird на новую, с новым gw. Строку желательно проверить 🙂
Spoiler#!/bin/sh
[ "$ndm_opkg_id" != "OpenVPN4" ] && exit 0
sed -i[SFX] '40c\ gw = '$route_vpn_gateway';' /opt/etc/bird4.conf
/opt/etc/init.d/S04bird1-ipv4 restart
Вуаля
В линуксе новичок, слепил на коленке, возможно есть и другой путь. Главное - работает)
- 2
-
21 hours ago, Владимир Подстречный said:
Кто-нибудь может подсказать, можно ли в конфиге bird использовать имя интерфейса вместо gw=ip ???
Разобрался. Заодно и решил проблему с динамическим gw при смене подключения.
-
Кто-нибудь может подсказать, можно ли в конфиге bird использовать имя интерфейса вместо gw=ip ???
-
Реально классная прога. И в отличие от Torrent Monitor всё работает.
Как отредактировать конфигурацию OVPN подключения скриптами?
in Вопросы по сборке и настройке Opkg
Posted
Всем доброго времени суток)
Вопрос знающим - как осуществить редактирование конфигурации скриптами? Суть задачи в следующем. В конфигурации подключения указано множество серверов, выбираемых рандомно. Хочу сделать скрипт, ведущий статистику подключения к серверам и при нескольких неудачных попытках удалять сервер из конфигурации. Если такое возможно, прошу намекнуть, в какую сторону копать.