Недавно я собрал себе новую прошивку для роутера, полностью исключив из неё веб-интерфейс. Настало время переделать рецепт под чёрную-чёрную консоль OpenWrt.
Сделаем всё то же самое, что и в прошлый раз, но только будем непосредственно править файлы конфигурации соответствующих служб. Даже 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'
В файле…
/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
Как видите, настраивать через консоль даже проще — сразу понятно, откуда что берётся.