Для установки ограничений на скорость трафика для каждого локального IP-адреса (клиента) при использовании OpenVPN на Ubuntu можно воспользоваться возможностями настройки `tc` (Traffic Control) в Linux.
Вот шаги, которые вы можете выполнить для настройки ограничений по скорости:
1. **Установите необходимые пакеты** (если они еще не установлены):
```bash
sudo apt-get update
sudo apt-get install iproute2
```
2. **Настройте конфигурацию OpenVPN.**
Убедитесь, что для ваших клиентов назначены статические IP-адреса. Вы можете сделать это, добавив строки подобные следующей в ваш конфигурационный файл сервера OpenVPN (`server.conf` или аналогичный):
```bash
client-config-dir ccd
```
Создайте директорию `ccd` и для каждого клиента создайте файл с именем его CN (Common Name), например, `client1`:
```bash
sudo mkdir /etc/openvpn/ccd
sudo nano /etc/openvpn/ccd/client1
```
Внутри файла добавьте строку для назначения статического IP-адреса:
```bash
ifconfig-push 10.8.0.2 255.255.255.0
```
3. **Определите ограничения пропускной способности.**
Для управления трафиком можно использовать `tc`. Пример скрипта, который устанавливает ограничения на скорость для клиента с IP-адресом 10.8.0.2:
```bash
#!/bin/bash
CLIENT_IP="10.8.0.2"
INTERFACE="tun0"
LIMIT="1mbit" # задайте желаемый лимит скорости
# Очистка предыдущих настроек
sudo tc qdisc del dev $INTERFACE root
# Установка корневого класса
sudo tc qdisc add dev $INTERFACE root handle 1: htb default 12
# Установка класса с лимитом
sudo tc class add dev $INTERFACE parent 1: classid 1:1 htb rate $LIMIT
# Установка фильтра для клиента
sudo tc filter add dev $INTERFACE protocol ip parent 1:0 prio 1 u32 match ip dst $CLIENT_IP flowid 1:1
```
Сохраните этот скрипт, например, как `tc-limit.sh`, сделайте его исполняемым:
```bash
chmod +x tc-limit.sh
```
4. **Запустите скрипт** для применения ограничений после старта OpenVPN:
```bash
./tc-limit.sh
```
5. **Автоматизация настройки.**
Вы можете добавить выполнение скрипта в файлы конфигурации OpenVPN, используя директиву `up` и `down` в конфигурации сервера или клиента. Например:
```bash
script-security 2
up /path/to/tc-limit.sh
down /path/to/tc-restore.sh # если нужно добавить сброс настроек в другой скрипт
```
6. **Проверка состояния.**
Для проверки текущих настроек `tc`, вы можете использовать:
```bash
tc -s qdisc ls dev tun0
```
7. **Примечание.** Эти инструкции ориентированы на однонаправленные ограничения. Если вам нужно более сложное управление трафиком, возможно, потребуется использование дополнительных инструментов и конфигураций.
Обратите внимание, что изменение сетевых параметров системы может привести к непредсказуемым последствиям, поэтому рекомендуется заранее создать резервные копии конфигураций и тщательно тестировать изменения.