Всем привет! Хочу поделиться инструкцией по настройке WireGuard VPN-соединения с NordVPN на роутере Mikrotik под управлением RouterOS v7.x. Хотя NordVPN предоставляет инструкции для подключения через IKEv2/IPSec (которое работает нормально), там нужно использовать mangle для маршрутизации конкретных направлений, и реализовать kill switch невозможно. Другие протоколы, такие как L2TP/IPSec, NordVPN уже отключил, а OpenVPN не совместим с роутерами Mikrotik. WireGuard же даёт больше гибкости — можно настроить kill switch и маршрутизировать конкретный трафик без сложных конфигураций.
Требования:
- Роутер Mikrotik с RouterOS v7.x
- Linux-система (например, Debian) для получения необходимых ключей
- Активная подписка NordVPN
Шаг 1: Установка NordVPN и WireGuard на Linux
Сначала установите клиент NordVPN на Linux. Подробные инструкции есть на сайте поддержки NordVPN: Installing NordVPN on Linux distributions
Дальше установите WireGuard:
sudo apt install wireguard
Шаг 2: Получение приватного ключа и информации о сервере
Подключитесь к VPN через клиент NordVPN:
nordvpn connect
Получите приватный ключ:
sudo wg show nordlynx private-key
Важно: храните приватный ключ в безопасности и никому не раскрывайте.
Далее узнайте публичный ключ, IP-адрес и порт NordVPN WireGuard-сервера:
sudo wg show nordlynx
Пример вывода:
peer: aaaaaaabbbbbbbbxxxxxxyyyyyyyyy=
endpoint: x.x.x.x:51820
Также для поиска других серверов и их данных можно использовать NordVPN API:
curl 'https://nordvpn.com/wp-admin/admin-ajax.php?action=servers_recommendations&filters\[servers_technologies\]\[identifier\]=wireguard_udp&limit=1' | python3 -m json.tool
Примечание: у каждого сервера свой публичный ключ, а приватный ключ у вас один.
Шаг 3: Настройка WireGuard на роутере Mikrotik
Создайте WireGuard-интерфейс:
/interface wireguard add listen-port=51820 mtu=1420 name=wg-nordvpn private-key="your_private_key"
Замените “your_private_key” на полученный приватный ключ.
Добавьте Peer (сервер NordVPN):
/interface wireguard peers add allowed-address=0.0.0.0/0 endpoint-address=your_server_address endpoint-port=51820 interface=wg-nordvpn persistent-keepalive=5s public-key="server_public_key"
Вместо your_server_address подставьте адрес сервера (например, us100.nordvpn.com). Вместо “server_public_key” — публичный ключ сервера NordVPN.
Назначьте IP-адрес интерфейсу:
/ip address add address=10.5.0.2 interface=wg-nordvpn network=10.5.0.0
Шаг 4: Настройка правил файрвола
Разрешите входящие соединения WireGuard:
/ip firewall filter add action=accept chain=input comment="Allow WireGuard" dst-port=51820 protocol=udp
Определите список IP, которые могут использовать VPN:
/ip firewall address-list add address=192.168.1.0/24 list=access_vpn
Создайте правило для разрешения форвардинга:
/ip firewall filter add action=accept chain=forward comment="Allow VPN Traffic" out-interface=wg-nordvpn src-address-list=access_vpn
Настройте NAT для исходящего трафика:
/ip firewall nat add action=masquerade chain=srcnat out-interface=wg-nordvpn
Шаг 5: Настройка маршрутизации и реализация kill switch
Создайте новую таблицу маршрутизации:
/routing table add fib name="private_route"
Добавьте правила маршрутизации, чтобы трафик от конкретных хостов шёл через VPN:
/routing rule add action=lookup-only-in-table src-address=192.168.1.100/32 table=private_route
Или маршрутизируйте трафик к определённым адресам (например, DNS-сервер NordVPN):
/routing rule add action=lookup-only-in-table dst-address=103.86.96.100/32 table=private_route
Примечание: 103.86.96.100 — один из DNS-серверов NordVPN.
Настройте маршруты для новой таблицы:
Добавьте blackhole-маршрут как kill switch:
/ip route add blackhole distance=5 routing-table=private_route
Добавьте маршрут через интерфейс WireGuard:
/ip route add distance=2 gateway=wg-nordvpn@main routing-table=private_route
Шаг 6: Проверка настройки
Убедитесь, что устройства из списка адресов направляют трафик через VPN. Проверьте работу kill switch, отключив интерфейс WireGuard — трафик с указанных устройств должен быть заблокирован.
Заключение
Вот и всё! Теперь у вас должно быть рабочее WireGuard VPN-соединение с NordVPN на роутере Mikrotik, с политической маршрутизацией и kill switch. Такая настройка позволяет направлять через VPN конкретный трафик и гарантирует, что при обрыве VPN-соединения трафик не утечёт через обычный интернет. Пишите, как у вас получилось и если будут вопросы!
Требования:
- Роутер Mikrotik с RouterOS v7.x
- Linux-система (например, Debian) для получения необходимых ключей
- Активная подписка NordVPN
Шаг 1: Установка NordVPN и WireGuard на Linux
Сначала установите клиент NordVPN на Linux. Подробные инструкции есть на сайте поддержки NordVPN: Installing NordVPN on Linux distributions
Дальше установите WireGuard:
sudo apt install wireguard
Шаг 2: Получение приватного ключа и информации о сервере
Подключитесь к VPN через клиент NordVPN:
nordvpn connect
Получите приватный ключ:
sudo wg show nordlynx private-key
Важно: храните приватный ключ в безопасности и никому не раскрывайте.
Далее узнайте публичный ключ, IP-адрес и порт NordVPN WireGuard-сервера:
sudo wg show nordlynx
Пример вывода:
peer: aaaaaaabbbbbbbbxxxxxxyyyyyyyyy=
endpoint: x.x.x.x:51820
Также для поиска других серверов и их данных можно использовать NordVPN API:
curl 'https://nordvpn.com/wp-admin/admin-ajax.php?action=servers_recommendations&filters\[servers_technologies\]\[identifier\]=wireguard_udp&limit=1' | python3 -m json.tool
Примечание: у каждого сервера свой публичный ключ, а приватный ключ у вас один.
Шаг 3: Настройка WireGuard на роутере Mikrotik
Создайте WireGuard-интерфейс:
/interface wireguard add listen-port=51820 mtu=1420 name=wg-nordvpn private-key="your_private_key"
Замените “your_private_key” на полученный приватный ключ.
Добавьте Peer (сервер NordVPN):
/interface wireguard peers add allowed-address=0.0.0.0/0 endpoint-address=your_server_address endpoint-port=51820 interface=wg-nordvpn persistent-keepalive=5s public-key="server_public_key"
Вместо your_server_address подставьте адрес сервера (например, us100.nordvpn.com). Вместо “server_public_key” — публичный ключ сервера NordVPN.
Назначьте IP-адрес интерфейсу:
/ip address add address=10.5.0.2 interface=wg-nordvpn network=10.5.0.0
Шаг 4: Настройка правил файрвола
Разрешите входящие соединения WireGuard:
/ip firewall filter add action=accept chain=input comment="Allow WireGuard" dst-port=51820 protocol=udp
Определите список IP, которые могут использовать VPN:
/ip firewall address-list add address=192.168.1.0/24 list=access_vpn
Создайте правило для разрешения форвардинга:
/ip firewall filter add action=accept chain=forward comment="Allow VPN Traffic" out-interface=wg-nordvpn src-address-list=access_vpn
Настройте NAT для исходящего трафика:
/ip firewall nat add action=masquerade chain=srcnat out-interface=wg-nordvpn
Шаг 5: Настройка маршрутизации и реализация kill switch
Создайте новую таблицу маршрутизации:
/routing table add fib name="private_route"
Добавьте правила маршрутизации, чтобы трафик от конкретных хостов шёл через VPN:
/routing rule add action=lookup-only-in-table src-address=192.168.1.100/32 table=private_route
Или маршрутизируйте трафик к определённым адресам (например, DNS-сервер NordVPN):
/routing rule add action=lookup-only-in-table dst-address=103.86.96.100/32 table=private_route
Примечание: 103.86.96.100 — один из DNS-серверов NordVPN.
Настройте маршруты для новой таблицы:
Добавьте blackhole-маршрут как kill switch:
/ip route add blackhole distance=5 routing-table=private_route
Добавьте маршрут через интерфейс WireGuard:
/ip route add distance=2 gateway=wg-nordvpn@main routing-table=private_route
Шаг 6: Проверка настройки
Убедитесь, что устройства из списка адресов направляют трафик через VPN. Проверьте работу kill switch, отключив интерфейс WireGuard — трафик с указанных устройств должен быть заблокирован.
Заключение
Вот и всё! Теперь у вас должно быть рабочее WireGuard VPN-соединение с NordVPN на роутере Mikrotik, с политической маршрутизацией и kill switch. Такая настройка позволяет направлять через VPN конкретный трафик и гарантирует, что при обрыве VPN-соединения трафик не утечёт через обычный интернет. Пишите, как у вас получилось и если будут вопросы!
