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

Вопрос

Опубликовано

Добрый день!

Подскажите, пожалуйста, как можно через 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?

 

Рекомендуемые сообщения

  • 0
Опубликовано
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

 

 

  • 0
Опубликовано

@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

 

  • 0
Опубликовано
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 на компьютере, не на самом Кинетике, но разницы быть не должно

  • 0
Опубликовано
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. 

  • 0
Опубликовано
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]."
      }
    ]
  }

 

Как правильно?

  • 0
Опубликовано
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

  • 0
Опубликовано
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"}}]'

Второй вариант не работает, что не так?

  • 0
Опубликовано
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."
        }
      ]
    }
  }

 

 

  • 0
Опубликовано
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}\"}}}]"

 

  • 0
Опубликовано (изменено)
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]." } ] }

Что не так?

Изменено пользователем avn
  • 0
Опубликовано
5 минут назад, avn сказал:

Попробовал rci/interface/Wireguard2/private-key - результат

{ "status": [ { "status": "error", "code": "1179781", "ident": "Core::Configurator", "message": "not found: \"interface/private-key\" [http/rci]." } ] }

Что опять не так?

Посмотрите, пожалуйста, как это делает веб-интерфейс. В большинстве случаев это самый быстрый способ понять, какой формат данных требуется.

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

 

  • 0
Опубликовано
Только что, eralde сказал:

Посмотрите, пожалуйста, как это делает веб-интерфейс. В большинстве случаев это точно самый быстрый способ понять, какой формат данных требуется.

 

Спасибо, у меня сейчас нету доступа к веб-интерфейсу. Сижу в entware. Буду дома будет проще. Спасибо за помощь.

  • 0
Опубликовано
3 часа назад, eralde сказал:

Посмотрите, пожалуйста, как это делает веб-интерфейс. В большинстве случаев это самый быстрый способ понять, какой формат данных требуется.

 

А то, чего нету в интерфейсе, например:

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

interface Wireguard2 wireguard peer bXwPfgyo=
client-id send 60255

interface Wireguard2 wireguard peer bXwPfgyo=
client-id send 6059255

 

?

  • 0
Опубликовано
14 часа назад, avn сказал:

А то, чего нету в интерфейсе, например:

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

interface Wireguard2 wireguard peer bXwPfgyo=
client-id send 60255

interface Wireguard2 wireguard peer bXwPfgyo=
client-id send 6059255

 

?

Спасибо. Разобрался.

  • 0
Опубликовано
17 часов назад, avn сказал:

А то, чего нету в интерфейсе, например:

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

?

Тут придется действовать по аналогии.
Можно настроить нужный кусок через CLI/WebCLI, потом прочитать GET-запросом нужный кусок конфигурации (тоже через WebCLI или открыть ссылку вида <IP>/rci/... в браузере) и ориентироваться на тот формат, который выдаст браузер.

 

  • 0
Опубликовано
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.

До запроса:

image.png.08bd5b8c57bbfa0338be8122a53d242f.png

После:

image.png.27966c70bb764ba204368a616d54863a.png

Как избежать такого поведения?

  • 0
Опубликовано
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"}]}}]'

 

  • 0
Опубликовано
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"}]}}]'

 

Это решение лежит на поверхности. Но мне кажется это неправильно. Будет исправлено в следующих версиях? Или может можно по другому идентифицировать пира?

  • 0
Опубликовано
23 минуты назад, avn сказал:

Это решение лежит на поверхности. Но мне кажется это неправильно. Будет исправлено в следующих версиях? Или может можно по другому идентифицировать пира?

@Le ecureuil

  • 0
Опубликовано

@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
				}
			}
		}
	}
]

 

  • 0
Опубликовано
В 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 не исправлено

Присоединяйтесь к обсуждению

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

Гость
Ответить на вопрос...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу
×
×
  • Создать...

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

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