avn Posted August 23, 2024 Posted August 23, 2024 Добрый день! Подскажите, пожалуйста, как можно через rci изменить следующие параметры конфигурации ip, ipv6, public-key, private-key? { "Wireguard2": { "address": "172.16.0.2", "mask": "255.255.255.255", "ipv6": { "addresses": [ { "address": "2606:4700:", "prefix-length": 128 } ] }, "wireguard": { "private-key": "ewewewwe", "public-key": "vVCSNKvpgGioEPUm" } } } И где взять имя реального интерфейса nwg2? Quote
0 vasek00 Posted August 23, 2024 Posted August 23, 2024 14 минуты назад, avn сказал: И где взять имя реального интерфейса nwg2? Под Entware есть - wg (он в opkg install wireguard-tools), возможно через нее по peer Скрытый текст /opt/bin # ls -l -rwxr-xr-x 1 root root 81496 Feb 7 2024 wg -rwxr-xr-x 1 root root 13468 Aug 24 2023 wg-quick /opt/bin # /opt/bin # wg interface: nwg0 public key: wpEq.......N5mEo= private key: (hidden) listening port: 65100 peer: bm.....fgyo= endpoint: ххх.ххх.ххх.ххх:хххх allowed ips: 0.0.0.0/0, 10.10.132.0/24, 10.16.130.29/32, 192.168.130.0/24 latest handshake: 1 minute, 38 seconds ago transfer: 3.46 GiB received, 39.81 MiB sent persistent keepalive: every 2 minutes Quote
0 avn Posted August 23, 2024 Author Posted August 23, 2024 @Le ecureuil это ошибка? > POST /rci/interface/Wireguard2/ipv6 HTTP/1.1 > Host: localhost:79 > User-Agent: curl/8.8.0 > Accept: */* > Content-Type: application/json > Content-Length: 25 > < HTTP/1.1 400 Bad Request < Server: Web server < Date: Fri, 23 Aug 2024 09:07:32 GMT < Content-Length: 70 < Connection: keep-alive < X-Detail: 0xccad, invalid payload < * The requested URL returned error: 400 curl: (22) The requested URL returned error: 400 Quote
0 eralde Posted August 23, 2024 Posted August 23, 2024 41 минуту назад, avn сказал: @Le ecureuil это ошибка? > POST /rci/interface/Wireguard2/ipv6 HTTP/1.1 > Host: localhost:79 > User-Agent: curl/8.8.0 > Accept: */* > Content-Type: application/json > Content-Length: 25 > < HTTP/1.1 400 Bad Request < Server: Web server < Date: Fri, 23 Aug 2024 09:07:32 GMT < Content-Length: 70 < Connection: keep-alive < X-Detail: 0xccad, invalid payload < * The requested URL returned error: 400 curl: (22) The requested URL returned error: 400 А что в отправили в качестве данных POST-запроса? Если Wireguard2 существует и авторизация не требуется (у пользователя admin нет пароля), то вроде такой вариант работает, да: Скрытый текст ➜ ~ curl -X POST http://192.168.24.1/rci/interface/Wireguard2/ipv6 \ -H "Content-Type: application/json" \ -d '{"address":[{"auto":true}],"prefix":[{"auto":false}]}' { "address": [ { "status": [ { "status": "message", "code": "39387636", "ident": "Network::Interface::Ip6", "message": "\"Wireguard2\": accept address provided by the interface network." } ] } ], "prefix": [ { "status": [ { "status": "message", "code": "39387736", "ident": "Network::Interface::Ip6", "message": "\"Wireguard2\": ignore prefixes provided by the interface network." } ] } ] } Если нужна авторизация, то вернется код 401, не 400: Скрытый текст ➜ ~ curl -X POST http://192.168.24.1/rci/interface/Wireguard2/ipv6 \ -H "Content-Type: application/json" \ -d '{"address":[{"auto":true}],"prefix":[{"auto":false}]}' <html> <head><title>401 Authorization Required</title></head> <body> <center><h1>401 Authorization Required</h1></center> <hr><center>Web server</center> </body> </html> Это curl на компьютере, не на самом Кинетике, но разницы быть не должно Quote
0 avn Posted August 23, 2024 Author Posted August 23, 2024 24 минуты назад, eralde сказал: А что в отправили в качестве данных POST-запроса? Если Wireguard2 существует и авторизация не требуется (у пользователя admin нет пароля), то вроде такой вариант работает, да: Показать содержимое ➜ ~ curl -X POST http://192.168.24.1/rci/interface/Wireguard2/ipv6 \ -H "Content-Type: application/json" \ -d '{"address":[{"auto":true}],"prefix":[{"auto":false}]}' { "address": [ { "status": [ { "status": "message", "code": "39387636", "ident": "Network::Interface::Ip6", "message": "\"Wireguard2\": accept address provided by the interface network." } ] } ], "prefix": [ { "status": [ { "status": "message", "code": "39387736", "ident": "Network::Interface::Ip6", "message": "\"Wireguard2\": ignore prefixes provided by the interface network." } ] } ] } Если нужна авторизация, то вернется код 401, не 400: Показать содержимое ➜ ~ curl -X POST http://192.168.24.1/rci/interface/Wireguard2/ipv6 \ -H "Content-Type: application/json" \ -d '{"address":[{"auto":true}],"prefix":[{"auto":false}]}' <html> <head><title>401 Authorization Required</title></head> <body> <center><h1>401 Authorization Required</h1></center> <hr><center>Web server</center> </body> </html> Это curl на компьютере, не на самом Кинетике, но разницы быть не должно Спасибо, разобрался. Виноват json. 1 Quote
0 avn Posted August 23, 2024 Author Posted August 23, 2024 1 час назад, eralde сказал: А что в отправили в качестве данных POST-запроса? Если Wireguard2 существует и авторизация не требуется (у пользователя admin нет пароля), то вроде такой вариант работает, да: Скрыть содержимое ➜ ~ curl -X POST http://192.168.24.1/rci/interface/Wireguard2/ipv6 \ -H "Content-Type: application/json" \ -d '{"address":[{"auto":true}],"prefix":[{"auto":false}]}' { "address": [ { "status": [ { "status": "message", "code": "39387636", "ident": "Network::Interface::Ip6", "message": "\"Wireguard2\": accept address provided by the interface network." } ] } ], "prefix": [ { "status": [ { "status": "message", "code": "39387736", "ident": "Network::Interface::Ip6", "message": "\"Wireguard2\": ignore prefixes provided by the interface network." } ] } ] } Если нужна авторизация, то вернется код 401, не 400: Скрыть содержимое ➜ ~ curl -X POST http://192.168.24.1/rci/interface/Wireguard2/ipv6 \ -H "Content-Type: application/json" \ -d '{"address":[{"auto":true}],"prefix":[{"auto":false}]}' <html> <head><title>401 Authorization Required</title></head> <body> <center><h1>401 Authorization Required</h1></center> <hr><center>Web server</center> </body> </html> Это curl на компьютере, не на самом Кинетике, но разницы быть не должно Все таки не получается поменять адрес curl -vkfsS "http://localhost:79/rci/interface/$KNIFID/ipv6" --header "Content-Type: application/json" -X POST --data-raw '{"address":"2001::34"}' { "address": { "status": [ { "status": "error", "code": "7471107", "ident": "Command::Root", "message": "no input [http/rci]." } ] } Как правильно? Quote
0 eralde Posted August 23, 2024 Posted August 23, 2024 26 минут назад, avn сказал: Все таки не получается поменять адрес curl -vkfsS "http://localhost:79/rci/interface/$KNIFID/ipv6" --header "Content-Type: application/json" -X POST --data-raw '{"address":"2001::34"}' { "address": { "status": [ { "status": "error", "code": "7471107", "ident": "Command::Root", "message": "no input [http/rci]." } ] } Как правильно? Вот такие варианты работают: ➜ curl -X POST http://192.168.24.1/rci/interface/Wireguard2/ipv6 \ -H "Content-Type: application/json" \ -d '{"address":[{"address": "2001::34"}]}' { "address": [ { "status": [ { "status": "message", "code": "39387236", "ident": "Network::Interface::Ip6", "message": "\"Wireguard2\": added static address 2001::34." } ] } ] } ➜ curl -X POST http://192.168.24.1/rci/interface/Wireguard2/ipv6 \ -H "Content-Type: application/json" \ -d '{"address":{"address": "2001::34"}}' { "address": { "status": [ { "status": "message", "code": "39387236", "ident": "Network::Interface::Ip6", "message": "\"Wireguard2\": added static address 2001::34." } ] } } Можно ориентироваться на то, что отправляет веб-интерфейс для других подключений, где настраивается IPv6 Quote
0 avn Posted August 23, 2024 Author Posted August 23, 2024 12 минуты назад, eralde сказал: Вот такие варианты работают: ➜ curl -X POST http://192.168.24.1/rci/interface/Wireguard2/ipv6 \ -H "Content-Type: application/json" \ -d '{"address":[{"address": "2001::34"}]}' { "address": [ { "status": [ { "status": "message", "code": "39387236", "ident": "Network::Interface::Ip6", "message": "\"Wireguard2\": added static address 2001::34." } ] } ] } ➜ curl -X POST http://192.168.24.1/rci/interface/Wireguard2/ipv6 \ -H "Content-Type: application/json" \ -d '{"address":{"address": "2001::34"}}' { "address": { "status": [ { "status": "message", "code": "39387236", "ident": "Network::Interface::Ip6", "message": "\"Wireguard2\": added static address 2001::34." } ] } } Можно ориентироваться на то, что отправляет веб-интерфейс для других подключений, где настраивается IPv6 У меня не работает, возможно версия старовата. А теперь я хочу объединить два запроса. Было: curl -kfsS "http://localhost:79/rci/interface/$KNIFID/ip" --header "Content-Type: application/json" -X POST --data-raw '{"address":"${IPv4}","mask":"1255.255.255.255"}' Стало: curl -v "http://localhost:79/rci/interface/$KNIFID" --header "Content-Type: application/json" -X POST -d '[{"ip":{"address":"${IPv4}","mask":"255.255.255.255"}}]' Второй вариант не работает, что не так? Quote
0 eralde Posted August 23, 2024 Posted August 23, 2024 1 минуту назад, avn сказал: У меня не работает, возможно версия старовата. А теперь я хочу объединить два запроса. Было: curl -kfsS "http://localhost:79/rci/interface/$KNIFID/ip" --header "Content-Type: application/json" -X POST --data-raw '{"address":"${IPv4}","mask":"1255.255.255.255"}' Стало: curl -v "http://localhost:79/rci/interface/$KNIFID" --header "Content-Type: application/json" -X POST -d '[{"ip":{"address":"${IPv4}","mask":"255.255.255.255"}}]' Второй вариант не работает, что не так? Нужно завернуть всё ещё в один address: Скрытый текст curl -X POST http://192.168.24.1/rci/interface/Wireguard2 \ -H "Content-Type: application/json" \ -d '{"ip": {"address":{"address": "1.2.3.4", "mask": "255.255.255.0"}}}' { "ip": { "address": { "status": [ { "status": "message", "code": "72220674", "ident": "Network::Interface::Ip", "message": "\"Wireguard2\": IP address is 1.2.3.4/24." } ] } } Quote
0 avn Posted August 23, 2024 Author Posted August 23, 2024 12 минуты назад, eralde сказал: Нужно завернуть всё ещё в один address: Скрыть содержимое curl -X POST http://192.168.24.1/rci/interface/Wireguard2 \ -H "Content-Type: application/json" \ -d '{"ip": {"address":{"address": "1.2.3.4", "mask": "255.255.255.0"}}}' { "ip": { "address": { "status": [ { "status": "message", "code": "72220674", "ident": "Network::Interface::Ip", "message": "\"Wireguard2\": IP address is 1.2.3.4/24." } ] } } Спасибо. Все получилось. Виноват апостроф. "[{\"ip\":{\"address\":{\"address\":\"${IPv4}\",\"mask\":\"255.255.255.255\"}}},{\"ipv6\":{\"address\":{\"address\":\"${IPv6}\"}}}]" 1 Quote
0 avn Posted August 23, 2024 Author Posted August 23, 2024 (edited) 1 час назад, eralde сказал: Нужно завернуть всё ещё в один address: Показать содержимое curl -X POST http://192.168.24.1/rci/interface/Wireguard2 \ -H "Content-Type: application/json" \ -d '{"ip": {"address":{"address": "1.2.3.4", "mask": "255.255.255.0"}}}' { "ip": { "address": { "status": [ { "status": "message", "code": "72220674", "ident": "Network::Interface::Ip", "message": "\"Wireguard2\": IP address is 1.2.3.4/24." } ] } } rci/interface/Wireguard2 [ { "ip": { "address": { "address": "172.16.0.2", "mask": "255.255.255.255" } } }, { "ipv6": { "address": { "address": "2606:4700:110::822" } } }, { "private-key": { "private-key": "vVCSNKvpgGioEcOaNTFw=" } } ] Ошибка - { "status": [ { "status": "error", "code": "1179781", "ident": "Core::Configurator", "message": "not found: \"interface/private-key\" [http/rci]." } ] } Что не так? Edited August 23, 2024 by avn Quote
0 eralde Posted August 23, 2024 Posted August 23, 2024 5 минут назад, avn сказал: Попробовал rci/interface/Wireguard2/private-key - результат { "status": [ { "status": "error", "code": "1179781", "ident": "Core::Configurator", "message": "not found: \"interface/private-key\" [http/rci]." } ] } Что опять не так? Посмотрите, пожалуйста, как это делает веб-интерфейс. В большинстве случаев это самый быстрый способ понять, какой формат данных требуется. Скрытый текст Screen Recording 2024-08-23 at 15.46.17.mov 1 Quote
0 avn Posted August 23, 2024 Author Posted August 23, 2024 Только что, eralde сказал: Посмотрите, пожалуйста, как это делает веб-интерфейс. В большинстве случаев это точно самый быстрый способ понять, какой формат данных требуется. Скрыть содержимое Screen Recording 2024-08-23 at 15.46.17.mov 18.2 \u041c\u0431 · 0 downloads Спасибо, у меня сейчас нету доступа к веб-интерфейсу. Сижу в entware. Буду дома будет проще. Спасибо за помощь. 1 Quote
0 avn Posted August 23, 2024 Author Posted August 23, 2024 3 часа назад, eralde сказал: Посмотрите, пожалуйста, как это делает веб-интерфейс. В большинстве случаев это самый быстрый способ понять, какой формат данных требуется. Показать содержимое Screen Recording 2024-08-23 at 15.46.17.mov 18.2 \u041c\u0431 · 3 downloads А то, чего нету в интерфейсе, например: Скрытый текст interface Wireguard2 wireguard peer bXwPfgyo= client-id send 60255 interface Wireguard2 wireguard peer bXwPfgyo= client-id send 6059255 ? Quote
0 avn Posted August 24, 2024 Author Posted August 24, 2024 14 часа назад, avn сказал: А то, чего нету в интерфейсе, например: Показать содержимое interface Wireguard2 wireguard peer bXwPfgyo= client-id send 60255 interface Wireguard2 wireguard peer bXwPfgyo= client-id send 6059255 ? Спасибо. Разобрался. 1 Quote
0 eralde Posted August 24, 2024 Posted August 24, 2024 17 часов назад, avn сказал: А то, чего нету в интерфейсе, например: Показать содержимое interface Wireguard2 wireguard peer bXwPfgyo= client-id send 60255 interface Wireguard2 wireguard peer bXwPfgyo= client-id send 6059255 ? Тут придется действовать по аналогии. Можно настроить нужный кусок через CLI/WebCLI, потом прочитать GET-запросом нужный кусок конфигурации (тоже через WebCLI или открыть ссылку вида <IP>/rci/... в браузере) и ориентироваться на тот формат, который выдаст браузер. Quote
0 avn Posted August 24, 2024 Author Posted August 24, 2024 2 часа назад, eralde сказал: Тут придется действовать по аналогии. Можно настроить нужный кусок через CLI/WebCLI, потом прочитать GET-запросом нужный кусок конфигурации (тоже через WebCLI или открыть ссылку вида <IP>/rci/... в браузере) и ориентироваться на тот формат, который выдаст браузер. Отправка запроса: curl -kfsS "http://localhost:79/rci/interface/Wireguard2" --header "Content-Type: application/json" -X POST --data-raw '[{"wireguard":{"peer":{"key":"bmXOC+F1FxEMF9dyiK2H5/1SUtzH0JuVo51h2wPfgyo=","client-id":{"send":123}}}}]' Приводит к сбросу поля Comment. До запроса: После: Как избежать такого поведения? Quote
0 eralde Posted August 25, 2024 Posted August 25, 2024 18 часов назад, avn сказал: Отправка запроса: curl -kfsS "http://localhost:79/rci/interface/Wireguard2" --header "Content-Type: application/json" -X POST --data-raw '[{"wireguard":{"peer":{"key":"bmXOC+F1FxEMF9dyiK2H5/1SUtzH0JuVo51h2wPfgyo=","client-id":{"send":123}}}}]' Приводит к сбросу поля Comment. Как избежать такого поведения? Добавьте текущее значение comment в запрос: curl -kfsS "http://192.168.80.50/rci/interface?name=wg0" --header "Content-Type: application/json" -X POST --data-raw '[{"wireguard":{"peer":[{"key":"bmXOC+F1FxEMF9dyiK2H5/1SUtzH0JuVo51h2wPfgyo=", "comment": "my-comment", "client-id": "1450150"}]}}]' Quote
0 avn Posted August 25, 2024 Author Posted August 25, 2024 43 минуты назад, eralde сказал: Добавьте текущее значение comment в запрос: curl -kfsS "http://192.168.80.50/rci/interface?name=wg0" --header "Content-Type: application/json" -X POST --data-raw '[{"wireguard":{"peer":[{"key":"bmXOC+F1FxEMF9dyiK2H5/1SUtzH0JuVo51h2wPfgyo=", "comment": "my-comment", "client-id": "1450150"}]}}]' Это решение лежит на поверхности. Но мне кажется это неправильно. Будет исправлено в следующих версиях? Или может можно по другому идентифицировать пира? Quote
0 eralde Posted August 25, 2024 Posted August 25, 2024 23 минуты назад, avn сказал: Это решение лежит на поверхности. Но мне кажется это неправильно. Будет исправлено в следующих версиях? Или может можно по другому идентифицировать пира? @Le ecureuil Quote
0 avn Posted August 26, 2024 Author Posted August 26, 2024 @Le ecureuil Как можно идентифицировать пира, что бы при этом не менялось поле коммент (если его не отправлять)? http://localhost:79/rci/interface/Wireguard2 [ { "wireguard": { "peer": { "key": "bmXOC+F1FxEMF9dyiK2H5/1SUtzH0JuVo51h2wPfgyo=", "client-id": { "send": 123 } } } } ] Может есть вариант, типа такого? http://localhost:79/rci/interface/Wireguard2 [ { "wireguard": { "peer": { "id": "0", "client-id": { "send": 123 } } } } ] Quote
0 avn Posted September 16, 2024 Author Posted September 16, 2024 В 26.08.2024 в 14:13, avn сказал: @Le ecureuil Как можно идентифицировать пира, что бы при этом не менялось поле коммент (если его не отправлять)? http://localhost:79/rci/interface/Wireguard2 [ { "wireguard": { "peer": { "key": "bmXOC+F1FxEMF9dyiK2H5/1SUtzH0JuVo51h2wPfgyo=", "client-id": { "send": 123 } } } } ] Может есть вариант, типа такого? http://localhost:79/rci/interface/Wireguard2 [ { "wireguard": { "peer": { "id": "0", "client-id": { "send": 123 } } } } ] 4.2b3 не исправлено Quote
Question
avn
Добрый день!
Подскажите, пожалуйста, как можно через rci изменить следующие параметры конфигурации ip, ipv6, public-key, private-key?
{ "Wireguard2": { "address": "172.16.0.2", "mask": "255.255.255.255", "ipv6": { "addresses": [ { "address": "2606:4700:", "prefix-length": 128 } ] }, "wireguard": { "private-key": "ewewewwe", "public-key": "vVCSNKvpgGioEPUm" } } }И где взять имя реального интерфейса nwg2?
21 answers to this question
Recommended Posts
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.