В данной заметке я расскажу, как организовать соединение с вашей локальной сетью за роутером Keenetic, если у вас уже настроен выход в интернет через WG сервер с роутера и телефона.
Благодаря VPN файлы из моей домашней сети всегда доступны, где бы я не был.
Как я уже говорил у вас уже должен быть настроен Wireguard сервер, роутер и телефон должны выходить через этот сервер в интернет. Я же расскажу, как с телефона попасть в локальную сеть за роутером с использованием Wireguard, и при этом не потерять VPN выход в интернет. Для этого нужно будет использовать консоль роутера Keenetic.
## Настройка Keenetic
Если доступа в консоль нет, то его надо включить. Для этого перейдите в раздел “Управление” -> “Пользователи и доступ”. Проверьте что установлен порт управления по SSH и активирован пункт “Подключения к командной строке по SSH”.
Также убедитесь, что у вас есть пользователь, у которого есть права входа через SSH. На той же странице у вас есть список пользователей. Зайдите в редактор прав пользователя, и убедитесь что у него активирован пункт “Доступ к командной строке (TELNET и SSH)”.
Первым делом нам надо узнать, какой интерфейс был присвоен нашему соединению на роутере. Если это ваше первое соединение с Wireguard, то скорее всего это Wireguard0. Но давайте убедимся в этом.
Для этого необходимо ввести `interface Wire` и нажать `Tab`:
```shell
(config)> interface Wire
Usage template:
interface {name}
Choose:
Wireguard
Wireguard0
```
Чтобы точно убедиться выведите информацию об интерфейса.
```shell {6,13}
(config)> show interface Wireguard0
id: Wireguard0
index: 1
type: Wireguard
description: vpn-example
interface-name: Wireguard0
link: up
connected: yes
state: up
mtu: 1324
tx-queue-length: 50
address: 10.66.67.2
mask: 255.255.255.255
uptime: 5
global: no
security-level: public
wireguard:
public-key: PUBLIC_KEY
listen-port: 48951
status: up
peer:
public-key: PUBLIC_KEY
local: 37.112.97.194
local-port: 48951
via: PPPoE0
remote: 3.64.232.61
remote-port: 54161
rxbytes: 92
txbytes: 180
last-handshake: 5
online: yes
```
По названию и адресу понимаем, что это нужное соединение.
Нужно добавить правило на IN, иначе запросы в локальную сеть будут дропаться. Не забудьте заменить `Wireguard0` на другое значение, если у вас задействован другой интерфейс.
```shell
(config)> interface Wireguard0
Core::Configurator: Done.
(config-if)> ip access-group _WEBADMIN_Wireguard0 in
Network::Acl: Input "_WEBADMIN_Wireguard0" access list added to "Wireguard0".
(config-if)> system configuration save
Core::ConfigurationSaver: Saving configuration...
```
Теперь надо добавить статический маршрут до сети Wireguard.
```shell
(config)> ip route 10.66.67.0 255.255.255.0 Wireguard0 auto
Network::RoutingTable: Added static route: 10.66.67.0/24 via Wireguard0.
```
> [!DANGER]
> Не забудьте заменить значения на свои.`10.66.67.0` на свою подсеть Wireguard, а`Wireguard0` на свой интерфейс.
## Настройка сервера WG
Теперь нужно настроить сервер Wireguard. Для этого нужно отредактировать файл конфигурации, обычно он лежит в папке `/etc/wireguard/wg0.conf`. Зайдите под root.
```shell
su
nano /etc/wireguard/wg0.conf
```
```toml
[Interface]
Address = 10.66.67.1/24,fd42:42:43::1/64
ListenPort = 54161
PrivateKey = PRIVATE_KEY
PostUp = iptables -A FORWARD -i eth0 -o wg0 -j ACCEPT; iptables -A FORWARD -i wg0 -j ACCEPT; iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE; ip6tables $
У нас тут все стандартно. Два пира, один из них роутер, второй телефон. Для роутера необходимо указать в `AllowedIPs` вашу локальную сеть, в данном случае `192.168.1.0/24`.
После этого у вас должен появится доступ к локальной сети роутера с телефона через Wireguard VPN. По аналогии можно настроить доступ к локальной сети для остальных устройств.