avn Posted August 23 Share Posted August 23 Добрый день! Подскажите, пожалуйста, как можно через 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 Link to comment Share on other sites More sharing options...
0 vasek00 Posted August 23 Share Posted August 23 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 Link to comment Share on other sites More sharing options...
0 avn Posted August 23 Author Share Posted August 23 @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 Link to comment Share on other sites More sharing options...
0 eralde Posted August 23 Share Posted August 23 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 Link to comment Share on other sites More sharing options...
0 avn Posted August 23 Author Share Posted August 23 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 Link to comment Share on other sites More sharing options...
0 avn Posted August 23 Author Share Posted August 23 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 Link to comment Share on other sites More sharing options...
0 eralde Posted August 23 Share Posted August 23 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 Link to comment Share on other sites More sharing options...
0 avn Posted August 23 Author Share Posted August 23 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 Link to comment Share on other sites More sharing options...
0 eralde Posted August 23 Share Posted August 23 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 Link to comment Share on other sites More sharing options...
0 avn Posted August 23 Author Share Posted August 23 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 Link to comment Share on other sites More sharing options...
0 avn Posted August 23 Author Share Posted August 23 (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 by avn Quote Link to comment Share on other sites More sharing options...
0 eralde Posted August 23 Share Posted August 23 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 Link to comment Share on other sites More sharing options...
0 avn Posted August 23 Author Share Posted August 23 Только что, eralde сказал: Посмотрите, пожалуйста, как это делает веб-интерфейс. В большинстве случаев это точно самый быстрый способ понять, какой формат данных требуется. Скрыть содержимое Screen Recording 2024-08-23 at 15.46.17.mov 18.2 \u041c\u0431 · 0 downloads Спасибо, у меня сейчас нету доступа к веб-интерфейсу. Сижу в entware. Буду дома будет проще. Спасибо за помощь. 1 Quote Link to comment Share on other sites More sharing options...
0 avn Posted August 23 Author Share Posted August 23 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 Link to comment Share on other sites More sharing options...
0 avn Posted August 24 Author Share Posted August 24 14 часа назад, avn сказал: А то, чего нету в интерфейсе, например: Показать содержимое interface Wireguard2 wireguard peer bXwPfgyo= client-id send 60255 interface Wireguard2 wireguard peer bXwPfgyo= client-id send 6059255 ? Спасибо. Разобрался. 1 Quote Link to comment Share on other sites More sharing options...
0 eralde Posted August 24 Share Posted August 24 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 Link to comment Share on other sites More sharing options...
0 avn Posted August 24 Author Share Posted August 24 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 Link to comment Share on other sites More sharing options...
0 eralde Posted August 25 Share Posted August 25 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 Link to comment Share on other sites More sharing options...
0 avn Posted August 25 Author Share Posted August 25 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 Link to comment Share on other sites More sharing options...
0 eralde Posted August 25 Share Posted August 25 23 минуты назад, avn сказал: Это решение лежит на поверхности. Но мне кажется это неправильно. Будет исправлено в следующих версиях? Или может можно по другому идентифицировать пира? @Le ecureuil Quote Link to comment Share on other sites More sharing options...
0 avn Posted August 26 Author Share Posted August 26 @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 Link to comment Share on other sites More sharing options...
0 avn Posted September 16 Author Share Posted September 16 В 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 Link to comment Share on other sites More sharing options...
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?
Link to comment
Share on other sites
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.