Jump to content
  • 18

Wireguard возможность выбора на каком интерфейсе поднимать


vasek00

Question

В настройках "Дургие подключения" например OpenVpn есть возможность выбора интерфейса на котором его нужно поднять. При наличие двух каналов выхода в интернет один основной другой резервный то Wireguard по умолчанию поднимается на том канале который default маршрут (или он же основной) и при настройки приоритетов для клиентов всегда получим клиента который будет выходить через Wireguard->Основной канал. Хотелось бы иметь выбор через какой канал будет работать Wireguard как и для OpenVPN чтоб получить возможность для Клиент-> Wireguard -> Резервный канал.

  • Thanks 1
  • Upvote 5
Link to comment
Share on other sites

22 answers to this question

Recommended Posts

  • 0
2 минуты назад, aleeko сказал:

Как проголосовать? Давно тоже нуждаюсь в таком функционале для wireGuard

вверху слева нажать на стрелочку со значением 14

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

 

!GOLOS.thumb.png.430baa9528dcf7d04a9788436b84f9f2.png

 

Edited by krass
Link to comment
Share on other sites

  • 0
2 минуты назад, krass сказал:

слева нажать на стрелочку со значением 14

PS - стрелочку слева нажал. Было всего 13, я 14-й .... 
Как то мало нуждающихся (((
А с другими протоколами ВПН  работает выбор интереса? В какой то официальной статье от Кинетика читал относительно OPenVPN - что для работоспособности выхода надо обязательно выбирать ЛЮБОЙ ИНТЕРФЕЙС а не какой то конкретный

Link to comment
Share on other sites

  • 0
1 час назад, aleeko сказал:

PS - стрелочку слева нажал. Было всего 13, я 14-й .... 
Как то мало нуждающихся (((
А с другими протоколами ВПН  работает выбор интереса? В какой то официальной статье от Кинетика читал относительно OPenVPN - что для работоспособности выхода надо обязательно выбирать ЛЮБОЙ ИНТЕРФЕЙС а не какой то конкретный

https://help.keenetic.com/hc/ru/articles/360000880359-Сервер-OpenVPN

Статья от Обновлено 20.07.2023

Важно! Начиная с версии KeeneticOS 3.4.1 сервер работает только при указании в "Подключаться через" - "Любое интернет-подключение".

Edited by aleeko
Link to comment
Share on other sites

  • 0
5 часов назад, aleeko сказал:

PS - стрелочку слева нажал. Было всего 13, я 14-й .... 
Как то мало нуждающихся (((
А с другими протоколами ВПН  работает выбор интереса? В какой то официальной статье от Кинетика читал относительно OPenVPN - что для работоспособности выхода надо обязательно выбирать ЛЮБОЙ ИНТЕРФЕЙС а не какой то конкретный

Для того чтоб wireguard работал через нужный сетевой необходимо чтоб был прописан стат маршрут до сервера wireguard через нужный сетевой интерфейс.

Пример. Есть два входных интернет канала, по умолчанию основной РТ, второй Inet-2 в резерве. Поднимем warp wireguard через резервный канал.

1. канал warp работает через основной, отключаем wireguard (через WEB другие подключения).

2. прописываем стат маршрут через Inet-2 на нужный нам сервер wireguard 

Сен 3 17:50:51 ndm Network::RoutingTable: added static route: 188.114.хх.хх/32 via 10.10.10.1 (GigabitEthernet0/Vlan9). 

делается через WEB - раздел марщрутизация (до узла, нужный IP сервера 188.114.хх.хх/32. нужный инетрефес у меня Inet-2 или "via 10.10.10.1" и выбираем его)

3. идем в WEB cli (192.168.1.1/a и включаем его "interface Wireguard0 up" в моем случае его номер "0", находится по конф файлу или так же WEB cli набрав просто "interface Wireguard" и клавишу "tab". Если он один то не чего искать не надо, это если их несколько)

4. проверяем что все ОК на клиенте в браузере набираем speedtest и он должен показать IP клиента, в данном случае IP от cloudflare warp 104.28.ххх.ххх. По логу это выглядит так

Скрытый текст
Сен 3 17:52:05 ndm Network::Interface::Base: "Wireguard0": "base" changed "conf" layer state "disabled" to "running".
Сен 3 17:52:05 ndm Network::Interface::Base: "Wireguard0": interface is up.
Сен 3 17:52:05 kernel wireguard: Wireguard0: peer "bmXOC+F1FxEMF9dyiK2H5/1SUtzH0JuVo51h2wPfgyo=" (8) created
Сен 3 17:52:05 ndm Wireguard::Interface: "Wireguard0": added a host route to peer "bmXOC+F1FxEMF9dyiK2H5/1SUtzH0JuVo51h2wPfgyo=" (188.114.хх.хх) via 10.10.10.1 (GigabitEthernet0/Vlan9).

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

162.159.хх.хх dev ppp0  scope link
[I] Aug 15 09:17:52 ndm: Wireguard::Interface: "Wireguard0": added a host route to peer "bmXOC+F1FxEMF9dyiK2H5/1SUtzH0JuVo51h2wPfgyo=" (162.159.хх.хх) via PPPoE0 (PPPoE0). 

 

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

-5.thumb.jpg.3912a07fe5f33db1f486520171874bfd.jpg

 
Это будет работать до тех пора пока есть стат маршрут прописанный выше по п.2
Edited by vasek00
  • Thanks 1
Link to comment
Share on other sites

  • 0
В 03.09.2023 в 18:19, vasek00 сказал:

Для того чтоб wireguard работал через нужный сетевой необходимо чтоб был прописан стат маршрут до сервера wireguard через нужный сетевой интерфейс.

Пример. Есть два входных интернет канала, по умолчанию основной РТ, второй Inet-2 в резерве. Поднимем warp wireguard через резервный канал.

1. канал warp работает через основной, отключаем wireguard (через WEB другие подключения).

2. прописываем стат маршрут через Inet-2 на нужный нам сервер wireguard 

Сен 3 17:50:51 ndm Network::RoutingTable: added static route: 188.114.хх.хх/32 via 10.10.10.1 (GigabitEthernet0/Vlan9). 

делается через WEB - раздел марщрутизация (до узла, нужный IP сервера 188.114.хх.хх/32. нужный инетрефес у меня Inet-2 или "via 10.10.10.1" и выбираем его)

3. идем в WEB cli (192.168.1.1/a и включаем его "interface Wireguard0 up" в моем случае его номер "0", находится по конф файлу или так же WEB cli набрав просто "interface Wireguard" и клавишу "tab". Если он один то не чего искать не надо, это если их несколько)

4. проверяем что все ОК на клиенте в браузере набираем speedtest и он должен показать IP клиента, в данном случае IP от cloudflare warp 104.28.ххх.ххх. По логу это выглядит так

  Показать содержимое
Сен 3 17:52:05 ndm Network::Interface::Base: "Wireguard0": "base" changed "conf" layer state "disabled" to "running".
Сен 3 17:52:05 ndm Network::Interface::Base: "Wireguard0": interface is up.
Сен 3 17:52:05 kernel wireguard: Wireguard0: peer "bmXOC+F1FxEMF9dyiK2H5/1SUtzH0JuVo51h2wPfgyo=" (8) created
Сен 3 17:52:05 ndm Wireguard::Interface: "Wireguard0": added a host route to peer "bmXOC+F1FxEMF9dyiK2H5/1SUtzH0JuVo51h2wPfgyo=" (188.114.хх.хх) via 10.10.10.1 (GigabitEthernet0/Vlan9).

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

162.159.хх.хх dev ppp0  scope link
[I] Aug 15 09:17:52 ndm: Wireguard::Interface: "Wireguard0": added a host route to peer "bmXOC+F1FxEMF9dyiK2H5/1SUtzH0JuVo51h2wPfgyo=" (162.159.хх.хх) via PPPoE0 (PPPoE0). 

 

  Показать содержимое

-5.thumb.jpg.3912a07fe5f33db1f486520171874bfd.jpg

 
Это будет работать до тех пора пока есть стат маршрут прописанный выше по п.2

Не получилось у меня пока заставить работать как у вас?
Можно вас попросить больше подробностей?
Необходимо ли что то дополнительно настраивать в межсетевом экране?
Включена ли у вас опция "Использовать для выхода в интернет" - в интерфейсе Inet-2

И самое главное - правильно ли мы понимаем друг друга? 
Есть клиент, допустим мобильный телефон - клиент подключается к серверу Wireguard настроенный на Keenetic - с последующим выходом через нужный интерфейс (который мы указали в статических маршрутах), а не через Основное подключение.
Интерфейсе Inet-2 у вас подключен физически к роутеру в качестве резервного канала? Или это VPN или Прокси с выходом интернет?

Link to comment
Share on other sites

  • 0
В 07.09.2023 в 20:10, aleeko сказал:

Не получилось у меня пока заставить работать как у вас?
Можно вас попросить больше подробностей?
Необходимо ли что то дополнительно настраивать в межсетевом экране?
Включена ли у вас опция "Использовать для выхода в интернет" - в интерфейсе Inet-2

И самое главное - правильно ли мы понимаем друг друга? 
Есть клиент, допустим мобильный телефон - клиент подключается к серверу Wireguard настроенный на Keenetic - с последующим выходом через нужный интерфейс (который мы указали в статических маршрутах), а не через Основное подключение.
Интерфейсе Inet-2 у вас подключен физически к роутеру в качестве резервного канала? Или это VPN или Прокси с выходом интернет?

Все мои настройки и описания проверены при работе в профилях, т.е. есть

1. основной профиль где расположены по росту вверху провайдер 1 RT (pppoe - основной), провайдер 2 Inet-2 (просто провод DHCP - резервный) и далее ниже уже идут все остальные Cloud-Warp, и еще ниже Proton и т.д.. Галки на WG каналах для выхода в интернет стоят (тогда их можно использовать в других профилях).

2. профиль Cloud - галка только на канале Cloud-Warp (WG) на остальных галки нет

3. профиль Anti - галка только на канале Proton (WG Proton) на остальных галки нет

Скрытый текст
PPPoE0 - основной провайдер GigabitEthernet0/Vlan9 - это Inet-2 второй провайдер (vlan9 это просто вырезанный LAN порт, ни каких vlan нет)

interface Wireguard0
    description Cloud-warp
    security-level public

interface Wireguard4
    description WG-proton
    security-level public

ip policy Policy0
    description Cloud
    permit global Wireguard0
    no permit global GigabitEthernet0/Vlan9
    no permit global PPPoE0
    no permit global Wireguard4
    no permit global Proxy0

ip policy Policy2
    description Anti
    permit global Wireguard4
    no permit global PPPoE0
    no permit global GigabitEthernet0/Vlan9
    no permit global Wireguard0
    no permit global Proxy0

Настройки wireguard стандартны, описаны в базе знаний.

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

 

Есть клиент, допустим мобильный телефон - клиент подключается к серверу Wireguard настроенный на Keenetic - с последующим выходом через нужный интерфейс (который мы указали в статических маршрутах), а не через Основное подключение.

 

Сервер WG на роутере для удаленных клиентов

interface Wireguard3
    description PKN-WG
    security-level public
    ip address 10.16.130.101 255.255.255.0
....
    wireguard peer Z8cL......bTY= !A73
       endpoint 10.16.130.6:ххххх
....        
    !
    wireguard peer y09......MCA= !T505
        endpoint 10.16.130.18:ххххх
....        

В данном случае данные клиенты получат IP который им присвоен в настройках WG сервера. Так как проблемы часто возникают именно с DNS то в данном варианте использования за это отвечает AdguardHome который - это локальный сервис роутера и он слушает сеть 192.168 и 127.0.0.1 порт 53. Куда и что прописать будет чуток ниже.

AdguardHome

dns:
  bind_hosts:
    - 192.168.130.101
    - 127.0.0.1
  port: 53

Вспоминаем что это основной профиль и его канал выхода это РТ (pppoe).

Мы хотим нашего клиента смартфон чтоб он выходил через профиль Cloud -> воспользуемся самой прошивкой, т.е. при создание профиля создается table маршрутизации где default нужный нам Wireguard0 а в другом профиле table другая default Proton

Скрытый текст
~ # ip ro show table 42
default dev nwg0  scope link 

~ # ip ro show table 44
default dev nwg4  scope link

это можно найти в web cli - 192.168.1.1/a набрав "show ip policy"

По умолчанию наш удаленный клиент после подключения использовать основной профиль роутера, но мы можем ему сменит канал выхода направив его в нужную нам table за счет того что он клиент имеет IP от WG например выше - 10.16.130.6. Заворот данного клиента делается через

ip rule add from IP_удал_клиента/24 table 42

или

ip rule add from IP_удал_клиента/24 table 44

Для того что данный клиент мог выходить в интернет так как у него адрес серый то нужно применить

ip nat Wireguard3

По DNS воспользуемся тем что добаление сервера DNS в профилях создает стат маршрут на интерфейс который deault в данном профиле (без разницы какой это профиль - основной или созданные). Например

Скрытый текст
~ # ip ro show table 42
default dev nwg0  scope link 
...
192.168.130.101 dev nwg0  scope link 

Пока это работает, но можно и какой то свой например такой 10.2.0.1 DNS от конф. Proton

~ # ip ro show table 44
default dev nwg4  scope link 
10.2.0.1 dev nwg4  scope link 

 

В итоге проверяем speedtest на удаленном клиенте

1. по умолчанию IP будет от роутера на клиенте который по WG к роутеру

2. после добавления rule то speedtest то на клиенте показывает адрес от профиля в который мы его направили (IP от wireguard0 или wireguard4).

В данном варианте никакого контроля правил iptables нет, вопрос только в одной строчке

"ip rule add from 10.16.130.6 table 42"
Edited by vasek00
Link to comment
Share on other sites

  • 0
В 08.09.2023 в 21:38, vasek00 сказал:

Все мои настройки и описания проверены при работе в профилях, т.е. есть

1. основной профиль где расположены по росту вверху провайдер 1 RT (pppoe - основной), провайдер 2 Inet-2 (просто провод DHCP - резервный) и далее ниже уже идут все остальные Cloud-Warp, и еще ниже Proton и т.д.. Галки на WG каналах для выхода в интернет стоят (тогда их можно использовать в других профилях).

2. профиль Cloud - галка только на канале Cloud-Warp (WG) на остальных галки нет

3. профиль Anti - галка только на канале Proton (WG Proton) на остальных галки нет

  Скрыть содержимое
PPPoE0 - основной провайдер GigabitEthernet0/Vlan9 - это Inet-2 второй провайдер (vlan9 это просто вырезанный LAN порт, ни каких vlan нет)

interface Wireguard0
    description Cloud-warp
    security-level public

interface Wireguard4
    description WG-proton
    security-level public

ip policy Policy0
    description Cloud
    permit global Wireguard0
    no permit global GigabitEthernet0/Vlan9
    no permit global PPPoE0
    no permit global Wireguard4
    no permit global Proxy0

ip policy Policy2
    description Anti
    permit global Wireguard4
    no permit global PPPoE0
    no permit global GigabitEthernet0/Vlan9
    no permit global Wireguard0
    no permit global Proxy0

Настройки wireguard стандартны, описаны в базе знаний.

  Скрыть содержимое

 

Есть клиент, допустим мобильный телефон - клиент подключается к серверу Wireguard настроенный на Keenetic - с последующим выходом через нужный интерфейс (который мы указали в статических маршрутах), а не через Основное подключение.

 

Сервер WG на роутере для удаленных клиентов

interface Wireguard3
    description PKN-WG
    security-level public
    ip address 10.16.130.101 255.255.255.0
....
    wireguard peer Z8cL......bTY= !A73
       endpoint 10.16.130.6:ххххх
....        
    !
    wireguard peer y09......MCA= !T505
        endpoint 10.16.130.18:ххххх
....        

В данном случае данные клиенты получат IP который им присвоен в настройках WG сервера. Так как проблемы часто возникают именно с DNS то в данном варианте использования за это отвечает AdguardHome который - это локальный сервис роутера и он слушает сеть 192.168 и 127.0.0.1 порт 53. Куда и что прописать будет чуток ниже.

AdguardHome

dns:
  bind_hosts:
    - 192.168.130.101
    - 127.0.0.1
  port: 53

Вспоминаем что это основной профиль и его канал выхода это РТ (pppoe).

Мы хотим нашего клиента смартфон чтоб он выходил через профиль Cloud -> воспользуемся самой прошивкой, т.е. при создание профиля создается table маршрутизации где default нужный нам Wireguard0 а в другом профиле table другая default Proton

  Скрыть содержимое
~ # ip ro show table 42
default dev nwg0  scope link 

~ # ip ro show table 44
default dev nwg4  scope link

это можно найти в web cli - 192.168.1.1/a набрав "show ip policy"

По умолчанию наш удаленный клиент после подключения использовать основной профиль роутера, но мы можем ему сменит канал выхода направив его в нужную нам table за счет того что он клиент имеет IP от WG например выше - 10.16.130.6. Заворот данного клиента делается через

ip rule add from IP_удал_клиента/24 table 42

или

ip rule add from IP_удал_клиента/24 table 44

Для того что данный клиент мог выходить в интернет так как у него адрес серый то нужно применить

ip nat Wireguard3

По DNS воспользуемся тем что добаление сервера DNS в профилях создает стат маршрут на интерфейс который deault в данном профиле (без разницы какой это профиль - основной или созданные). Например

  Показать содержимое
~ # ip ro show table 42
default dev nwg0  scope link 
...
192.168.130.101 dev nwg0  scope link 

Пока это работает, но можно и какой то свой например такой 10.2.0.1 DNS от конф. Proton

~ # ip ro show table 44
default dev nwg4  scope link 
10.2.0.1 dev nwg4  scope link 

 

В итоге проверяем speedtest на удаленном клиенте

1. по умолчанию IP будет от роутера на клиенте который по WG к роутеру

2. после добавления rule то speedtest то на клиенте показывает адрес от профиля в который мы его направили (IP от wireguard0 или wireguard4).

В данном варианте никакого контроля правил iptables нет, вопрос только в одной строчке

"ip rule add from 10.16.130.6 table 42"

Перечитывал несколько раз, и если я правильно понимаю, часть настроек вы делаете через Entware (имею ввиду через подключение SSH к роутеру) - верно?
То есть обойтись возможностями интерфейса не получится? - так?

PS Сам спросил  - сам ответил )
Да. О том что нужно использовать Entware вы говорите в этой статье.



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

 

Edited by aleeko
Дополнительный вопрос
Link to comment
Share on other sites

  • 0
3 часа назад, aleeko сказал:

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

Логика проста - сначала все ручками чтоб работало, а потом уже скрипт для автом. запуска.

Edited by vasek00
Link to comment
Share on other sites

  • 0
21 минуту назад, vasek00 сказал:

Логика проста - сначала все ручками чтоб работало, а потом уже скрипт для автом. запуска.

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

Link to comment
Share on other sites

  • 0
10 часов назад, aleeko сказал:

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

Вам предложен вариант как это можно сделать.

с проверкой поднятых интерфейсов видимо надо искать в других ветках...

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

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

Link to comment
Share on other sites

  • 0
14 часа назад, vasek00 сказал:

Вам предложен вариант как это можно сделать.

с проверкой поднятых интерфейсов видимо надо искать в других ветках...

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

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

Моему восторгу нет предела! Это Гениально и Просто! 
Ручками пока все работает. И можно назначить отдельные выходные интерфейсы для каждого  отдельно взятого клиента сервера WG.
Огромное вам спасибо что вы здесь есть!
Я сам программирую и понимаю программный код, в тех случая когда это все выглядит как традиционное программирование.
Но понимание устройства сетей и их настройки - ну никак мне не заходит....
Для меня открытие, что ПРИОРИТЕТЫ ПОДКЛЮЧЕНИЙ в интерфейсе  - это таблицы в Entware.
И я до сих пор не могу понять, почему разработчики не внедрят опция выбора выходящего интерфейса в Вебморду. На форуме часто встречаются этот вопрос.

Теперь надо все проверить как и какие будут присваиваться DNS - какие утечки будут, все это научится держать на автозагрузке и периодической проверке.
Спасибо

PS данные из CLI формируются в формате JSON - их удобно читать и изучать в моем случае в любом JSON Editor - в привычном для меня интерфейсе для меня стало более понятным все.

Link to comment
Share on other sites

  • 0
30 минут назад, aleeko сказал:

Моему восторгу нет предела! Это Гениально и Просто! 
Ручками пока все работает. И можно назначить отдельные выходные интерфейсы для каждого  отдельно взятого клиента сервера WG.
Огромное вам спасибо что вы здесь есть!
Я сам программирую и понимаю программный код, в тех случая когда это все выглядит как традиционное программирование.
Но понимание устройства сетей и их настройки - ну никак мне не заходит....
Для меня открытие, что ПРИОРИТЕТЫ ПОДКЛЮЧЕНИЙ в интерфейсе  - это таблицы в Entware.
И я до сих пор не могу понять, почему разработчики не внедрят опция выбора выходящего интерфейса в Вебморду. На форуме часто встречаются этот вопрос.

Теперь надо все проверить как и какие будут присваиваться DNS - какие утечки будут, все это научится держать на автозагрузке и периодической проверке.
Спасибо

PS данные из CLI формируются в формате JSON - их удобно читать и изучать в моем случае в любом JSON Editor - в привычном для меня интерфейсе для меня стало более понятным все.

Голосуйте

 

Link to comment
Share on other sites

  • 0
В 19.09.2023 в 20:55, aleeko сказал:

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

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

#!/bin/bash

# Параметры Telegram бота
TELEGRAM_BOT_TOKEN="ВАШ_ТОКЕН"
TELEGRAM_CHAT_ID="ВАШ_ЧАТ_ID"
LOG_FILE="/var/log/add_routes_vpn.log"

# Функция для логгирования
log_message() {
  local message="$1"
  echo "$(date +"%Y-%m-%d %H:%M:%S") - $message" >> "$LOG_FILE"
}
  
# Функция для получения информации о текущем IP-адресе
get_ip_info() {
  local interface="$1"
  local info="$(curl --interface "$interface" ipinfo.io?token=ВАШ_ТОКЕН)"
  echo "$info"
}

# Функция для проверки наличия правила
rule_exists() {
  local subnet="$1"
  local table="$2"
  local rules=$(ip rule show)

  # Ищем строку с нужными параметрами
  if [[ "$rules" =~ "from $subnet lookup $table" ]]; then
    return 0  # Правило существует
  else
    return 1  # Правило не существует
  fi
}
    
# Функция для отправки уведомления в Telegram
send_notification() {
  local message="$1"
  curl -s -X POST "https://api.telegram.org/bot$TELEGRAM_BOT_TOKEN/sendMessage" -d "chat_id=$TELEGRAM_CHAT_ID&text=$message"
}
# Функция для проверки наличия маршрута
check_route() {
  local subnet="$1"
  local table="$2"
  local interface="$3"

# Проверяем, есть ли уже условие в таблицах
if rule_exists "$subnet" "$table"; then
    ip_info="$(get_ip_info "$interface")"
    send_notification "Правило для $subnet существует в таблице $table%0AНа интерфейсе $interface IP-адрес%0A$ip_info"
else
    # Если условие не существует, то добавляем его и получаем инфо о текущем IP и отправляем ее в Телеграм
    ip rule add from "$subnet" table "$table"
    ip_info="$(get_ip_info "$interface")"
    send_notification "Добавлено правило $subnet в таблицу $table через интерфейс $interface%0AИнформация о текущем IP-адреса%0A$ip_info"
fi
}

# Проверяем наличие маршрутов и отправляем уведомления
check_route "172.16.XX.0/24" "42" "t2s_br0"   
check_route "172.16.XX.0/24" "43" "nwg2"       
#check_route "172.16.XX.0/24" "44" "t2s_br1"   
 

Возможно кому-то пригодится.
Вот как работает у меня автозагрузка на начальном этапе.
Установлено в КРОН на 5 минут.
Для удобства чтения, используйте нормальный Bash Shell Reader, что бы видеть разметку кода, где текст, функции, операторы, переменные... - иначе для меня это становится нечитаемыми иероглифами...

Если есть идеи что может сломаться или что бы вы добавили -  пишите.
Лично у меня вопрос... кто знает?!
При работе через интерфейс мы можем добавлять новые таблицы, и таблицы интерфейсов могут получить новые значения.
Как через скрипт получить информацию, в какой именно таблице сейчас прячется интерфейс nwg2 или любой другой? - что бы каждый раз не лазать ручками редактировать скрипт?

Edited by aleeko
Спрятать под спойлер
Link to comment
Share on other sites

  • 0
1 час назад, aleeko сказал:

Лично у меня вопрос... кто знает?!
При работе через интерфейс мы можем добавлять новые таблицы, и таблицы интерфейсов могут получить новые значения.
Как через скрипт получить информацию, в какой именно таблице сейчас прячется интерфейс nwg2 или любой другой? - что бы каждый раз не лазать ручками редактировать скрипт?

На форуме куча есть примеров через wget - например

wget -qO - --post-data='[{"log":{"once":true}}]' localhost:79/rci/show

Есть и еще - поиск

 

Для меня проще команды "ip rule" + "ip ro show table XXXX" + достаточно один раз посмотреть вывод "show ip policy"

Policy0
"description": "Cloud",
"mark": "ffffd00",
"table4": 42
....
"route": [
                    {
...
                        "interface": "Wireguard0",
...                    },
                    {
....
                        "interface": "Wireguard4",
...
       "Policy2": {
            "description": "Anti",
            "mark": "ffffd02",
            "table4": 44,
            "route4": {
...
                   {
...
                        "interface": "Wireguard4",
...
сопоставить с конф файлом
ip policy Policy0
    description Cloud
    permit global Wireguard0

 

opkg install ip-full ip-bridge

 

Edited by vasek00
Link to comment
Share on other sites

  • 0
1 час назад, vasek00 сказал:

На форуме куча есть примеров через wget - например

wget -qO - --post-data='[{"log":{"once":true}}]' localhost:79/rci/show

Есть и еще - поиск

 

Для меня проще команды "ip rule" + "ip ro show table XXXX" + достаточно один раз посмотреть вывод "show ip policy"

Policy0
"description": "Cloud",
"mark": "ffffd00",
"table4": 42
....
"route": [
                    {
...
                        "interface": "Wireguard0",
...                    },
                    {
....
                        "interface": "Wireguard4",
...
       "Policy2": {
            "description": "Anti",
            "mark": "ffffd02",
            "table4": 44,
            "route4": {
...
                   {
...
                        "interface": "Wireguard4",
...
сопоставить с конф файлом
ip policy Policy0
    description Cloud
    permit global Wireguard0

 

opkg install ip-full ip-bridge

 

Нет, wget с логом не то, там нет упоминаний и отсылки table и к интерфейсам пригодных для скармливания   "ip rule"
Здесь как раз таки надо обращаться какой то командой к роутеру что бы вытащить через entware эту инфу о "policy", либо смотреть какой то командой в сетевых параметрах, где упоминается соотношения имени интерфейса к присвоенным им политикой номера таблиц.
Вся задача и заключается в том, что у меня на роутере настроены пару стабильных VPN с разной локацией, и пару прокси трактовых прокси, с другой локацией - и в случае, если я очень далеко, нужно что бы при перезагрузке у меня все автоматически вставало на ноги. без входа в ВЕБ интерфейс и моего участия.

Edited by aleeko
уточнение
Link to comment
Share on other sites

  • 0
7 минут назад, aleeko сказал:

Нет, wget с логом не то, там нет упоминаний и отсылки table и к интерфейсам пригодных для скармливания   "ip rule"
Здесь как раз таки надо обращаться какой то командой к роутеру что бы вытащить через entware эту инфу о "policy", либо смотреть какой то командой в сетевых параметрах, где упоминается соотношения имени интерфейса к присвоенным им политикой номера таблиц.

"ip rule" + "ip ro show table XXXX"

Этих не хватит.

Для перезагрузки используют /opt/etc/init.d скрипт с "S110Run" или хуки от /opt/ndm/...

Скрытый текст
~ # ip rule
0:      from all lookup local 
10:     from all fwmark 0xffffcff lookup main 
200:    from all fwmark 0xffffd00 lookup 42 
201:    from all fwmark 0xffffd00 blackhole
202:    from all fwmark 0xffffd01 lookup 43 
203:    from all fwmark 0xffffd01 blackhole
204:    from all fwmark 0xffffd02 lookup 44 
...


~ # ip ro show table 42
default dev nwg0  scope link 
10.2.0.1 dev nwg4  scope link 
....

где

42 у меня например ip policy Policy0/description Cloud

44 у меня ip policy Policy2/description Anti

Номера 42 и т.д. идут пока по порядку согласно конф файла

ip policy Policy0 -------> 42
    description Cloud
...
!
ip policy Policy1 -------> 43
    description In-2
...
!
ip policy Policy2 ------> 44
    description Anti
...


 

 

Link to comment
Share on other sites

  • 0
18 минут назад, vasek00 сказал:
"ip rule" + "ip ro show table XXXX"

Этих не хватит.

Для перезагрузки используют /opt/etc/init.d скрипт с "S110Run" или хуки от /opt/ndm/...

  Показать содержимое
~ # ip rule
0:      from all lookup local 
10:     from all fwmark 0xffffcff lookup main 
200:    from all fwmark 0xffffd00 lookup 42 
201:    from all fwmark 0xffffd00 blackhole
202:    from all fwmark 0xffffd01 lookup 43 
203:    from all fwmark 0xffffd01 blackhole
204:    from all fwmark 0xffffd02 lookup 44 
...


~ # ip ro show table 42
default dev nwg0  scope link 
10.2.0.1 dev nwg4  scope link 
....

где

42 у меня например ip policy Policy0/description Cloud

44 у меня ip policy Policy2/description Anti

Номера 42 и т.д. идут пока по порядку согласно конф файла

ip policy Policy0 -------> 42
    description Cloud
...
!
ip policy Policy1 -------> 43
    description In-2
...
!
ip policy Policy2 ------> 44
    description Anti
...


 

 

В моем случае в этих  

"ip rule" + "ip ro show table XXXX"

нет никакой информативность что бы соотнести интерфейс с таблицей и дать правильное правило для интерфейса

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

~ # ip rule

0: from all lookup local

198: from 172.16.81.0/24 lookup 43

199: from 172.16.83.0/24 lookup 42

200: from all fwmark 0xffffd00 lookup 42

201: from all fwmark 0xffffd00 lookup unspec blackhole

202: from all fwmark 0xffffd01 lookup 43

203: from all fwmark 0xffffd01 lookup unspec blackhole

204: from all fwmark 0xffffd02 lookup 44

205: from all fwmark 0xffffd02 lookup unspec blackhole

400: from 46.35.237.221 lookup 58

401: from 172.20.12.1 lookup 59

402: from 172.20.12.2 lookup 60

403: from 10.21.252.227 lookup 61

32766: from all lookup main

32767: from all lookup default

Установил ndmq
в Entware из коробки не было. - как понимаю он может выполнять команды CLI через командную строку.

ndmq -p 'show ip policy'  - НЕ РАБОТАЕТ, осталось теперь что бы гуру Кинетиков и Сетевых настроек подсказали какой командой я могу вытянуть policy через ndmq
ДОкументация на ГИтхабе не нашел

opkg install http://bin.entware.net/mipselsf-k3.4/keenetic/archive/
ndmq_1.0.2-7_mipsel-3.4_kn.ipk http://bin.entware.net/mipselsf-k3.4/keenetic/archive/libndm_1.8.0-1_mipsel-3.4_kn.ipk

Link to comment
Share on other sites

  • 0
3 часа назад, aleeko сказал:


ДОкументация на ГИтхабе не нашел

На данном форуме

~ # wget -qO - localhost:79/rci/show/ip/policy
{
  "Policy0": {
    "description": "Cloud",
    "mark": "ffffd00",
    "table4": 42,
    "route4": {
      "route": [
...

~ # wget -qO - localhost:79/rci/show/interface | jq '.[] | select(.type=="Wireguard")' | jq -r '.id'
Wireguard0
Wireguard2
Wireguard3
Wireguard4
~ # 

~ # curl -X POST -d '{}' "http://localhost:79/rci/interface/connect?name=PPPoE0&via=ISP"
{
  "status": [
    {
      "status": "message",
      "code": "72286209",
      "ident": "Network::Interface::Ppp",
      "message": "\"PPPoE0\": enabled connection via ISP interface."
    }
  ]
}~ # 

~ # curl -s 127.0.0.1:79/rci/show/interface | jq -r '.[] | select(."interface-name"=="ISP") | .id'
GigabitEthernet1
~ # 

~ # curl -s "127.0.0.1:79/rci/ip/http/security-level" | grep ssl | sed 's/.ssl.://' | tr -d " "
true
~ # 

 

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...