В
предыдущей статье я подробно описывал процесс настройки Wireguard-сервера на OpenWRT. Но в том рецепте использовался веб-интерфейс LuCI, который я не очень-то и люблю. Недавно я собрал себе новую прошивку для роутера, полностью исключив из неё веб-интерфейс. Настало время переделать рецепт под чёрную-чёрную консоль.
Сделаем всё то же самое, что и в прошлый раз, но только будем непосредственно править файлы конфигурации соответствующих служб. Даже UCI использовать не будем - для наглядности, чтобы было видно, что и в каком файле меняется. Напомню, как пользоваться редактором vim, если кто забыл. Открываем нужный файл:
vi /path/to/file
Нажимает клавишу <i>, чтобы перейти в режим редактирования. Редактируем. Нажимаем клавишу <Esc>, чтобы перейти в режим команд. В режиме команд вводим последовательно двоеточие и команду: <:w> - чтобы сохранить изменения, <:q> - чтобы выйти из редактора. Ну, разумеется, после ввода команды надо нажать клавишу <Enter>.
Итак, будем использовать вводные (IP-адреса, порты) из прошлой статьи. Можете открыть её и сравнивать. Суть заключается в следующем. Сначала нужно сгенерировать ключевую пару для сервера, потом настроить сервер (в файле /etc/config/network добавить интерфейс, в файле /etc/config/firewall настроить все правила), затем на каждом устройстве, входящем в сеть, тоже сгенерировать ключевые пары, вернуться в файл /etc/config/network и добавить пиры, используя публичные ключи этих устройств.
Внимание! Все описанные ниже команды запускаются непосредственно на роутере. Поэтому, для начала подключитесь к роутеру по SSH. А затем первым делом сгенерируем ключевую пару для сервера:
umask 077 && wg genkey > privkey
cat privkey | wg pubkey > pubkey
cat privkey
В файле...
/etc/config/network
...добавим интерфейс (название интерфейса произвольное, я выбрал 'wg0'):
config interface 'wg0'
option proto 'wireguard'
option private_key '<Секретный ключ сервера - мы получили его выше командой cat privkey>'
option listen_port '51820'
list addresses '10.14.0.1/29'
...добавим пиры (да, название секции конфигурации у всех пиров одинаковое - слово 'wireguard_' + название интерфейса, в нашем случае 'wg0'):
config wireguard_wg0
option description 'Android' # Описание пира, например, Client-1, Ubuntu или другие понятные вам ключевые слова
option public_key '<Публичный ключ Клиента-1>'
list allowed_ips '10.14.0.2/32' # см. предыдущую статью, там для Android-клиента мы выбрали такой внутренний IP-адрес
option route_allowed_ips '1'
option persistent_keepalive '25'
config wireguard_wg0
option description 'Windows'
option public_key '<Публичный ключ Клиента-2>'
list allowed_ips '10.14.0.3/32'
option route_allowed_ips '1'
option persistent_keepalive '25'
В файле...
/etc/config/firewall
...отредактируем зону:
config zone
option name lan
list network 'lan'
list network 'wg0' # Прикрепить интерфейс к зоне lan
option input ACCEPT
option output ACCEPT
option forward ACCEPT
...добавим правило:
config rule
option name 'Allow-Wireguard'
option target 'ACCEPT'
option src 'wan'
option proto 'udp'
option dest_port '51820'
option family 'ipv4'
И перезапустим сервисы:
/etc/init.d/network restart
/etc/init.d/firewall restart
Как видите, настраивать через консоль даже проще - сразу понятно, откуда что берётся.