Настройка сервера Wireguard в OpenWRT без веб-интерфейса LuCI

Недавно я собрал себе новую прошивку для роутера, полностью исключив из неё веб-интерфейс. Настало время переделать рецепт под чёрную-чёрную консоль 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

Как видите, настраивать через консоль даже проще — сразу понятно, откуда что берётся.

Друзья помогите этому контенту стать доступнее в социальных сетях.

Не проходи мимо жмакни по кнопке возможно кому то еще он будет полезен!