WireGuard на Mikrotik и клиенты со смартфонами
WireGuard — легкий и быстрый VPN c шифрованием, который отлично работает через NAT. Появился в RouterOS начиная с 7й бета-версии (актуальная на момент написания заметки — 7.10). С точки зрения клиентов со смартфонами на Android (сорян, любители яблофонов) основная прелесть заключается в том, что можно без root-прав выбрать приложения, которые будут использовать туннель, оставив остальным возможность ходить в мир через основной линк.
Приступим к настройке. Кликаем в меню на WireGuard и на первой вкладке добавляем новый интерфейс:
Менять не нужно ровным счетом ничего (разве что вы хотите использовать кастомный порт или название). После нажатия на ОК или Apply будет сгенерирована пара (публичный и приватный) ключей. Позже Public Key понадобится нам для настройки клиента на смартфоне.
Теперь в IP — Addresses назначим адрес и подсеть для WireGuard-интерфейса. В примере я использую 172.20.20.1/24 для интерфейса на Микротике, а пирам-клиентам буду назначать другие ip из той же подсети.
Отвлечемся от winbox и перейдем к установке клиента на смартфон. Переходим в Google Play \ Apple AppStore, находим и устанавливаем приложение WireGuard.
Открываем, создаем новый туннель и настраиваем подключение — указываем имя интерфейса, генерируем публичный и приватный ключи (публичный, сгенерированный на смартфоне, нужно будет указать пиру на микротике), в качестве адреса указываем ip из выбранной подсети (в примере — 172.20.20.2), а в качестве DNS — ip интерфейса WireGuard на Микротике. При необходимости — выбираем приложения, которые будут работать через туннель.
Далее добавляем пир (peer), в качестве публичного ключа указываем тот, который сгенерился на интерфейсе WireGuard в Микротике, конечная точка — публичный ip (или FQDN-имя) Микротика с портом интерфейса, а разрешенные адреса — подсети, которые будут открываться через туннель (в примере указан дефолтный 0.0.0.0/0).
Сохраняем, возвращаемся в Winbox. В WireGuard — Peers создаем новый пир, Public Key вставляем из настроек интерфейса мобильного приложения, в Allowed Address указываем назначаемый IP.
Осталось только открыть порт. В IP — FireWall — Filter создаем новое правило, разрешающее входящий UDP-трафик на порт интерфейса WireGuard:
Теперь можно включить туннель на мобильном устройстве.
Как пустить трафик через wireguard на микротик
Столкнулся с проблемой направления всего пользовательского трафика через VPN Wireguard.
Имеется mikrotik mAP Lite, который подключается к VPN серверу Wireguard, и все подключенные к нему клиенты по wi-fi должны ходить в Интернет через VPN туннель.
Интерфейс подключения к серверу WG настроил, с mAP вижу всю сеть в туннеле, но не получается завернуть весь пользовательский трафик через этот интерфейс. Если делать трассировку с выбранного интерфейса wireguard1 то трафик идет через него.
/interface wireless set [ find default-name=wlan1 ] disabled=no mode=ap-bridge ssid=mAP \ wireless-protocol=802.11 /interface wireguard add listen-port=13231 mtu=1420 name=wireguard1 /interface list add name=WAN add name=LAN /interface wireless security-profiles set [ find default=yes ] authentication-types=wpa-psk,wpa2-psk mode=\ dynamic-keys supplicant-identity=MikroTik /ip hotspot profile set [ find default=yes ] html-directory=hotspot /ip pool add name=dhcp ranges=192.168.88.100-192.168.88.120 /ip dhcp-server add address-pool=dhcp interface=wlan1 name=dhcp1 /routing table add disabled=no fib name=rtab-VPN /interface list member add interface=ether1 list=WAN add interface=wlan1 list=LAN /interface wireguard peers add allowed-address=0.0.0.0/0 endpoint-address= endpoint-port=\ 13321 interface=wireguard1 public-key=" /ip address add address=192.168.88.1/24 interface=wlan1 network=192.168.88.0 add address=10.255.255.11/24 interface=wireguard1 network=10.255.255.0 /ip dhcp-client add interface=ether1 /ip dhcp-server network add address=192.168.88.0/24 gateway=192.168.88.1 netmask=24 /ip dns set allow-remote-requests=yes servers=8.8.8.8 /ip firewall filter add action=accept chain=input protocol=icmp add action=accept chain=input connection-state=established add action=accept chain=input connection-state=related add action=drop chain=input in-interface-list=!LAN /ip firewall nat add action=masquerade chain=srcnat out-interface-list=WAN /ip route add disabled=no distance=1 dst-address=0.0.0.0/0 gateway=wireguard1 \ routing-table=rtab-VPN scope=30 suppress-hw-offload=no target-scope=10 /routing rule add action=lookup-only-in-table disabled=no dst-address=192.168.88.0/24 \ src-address=192.168.88.0/24 table=main add action=lookup-only-in-table disabled=no dst-address=0.0.0.0/0 src-address=\ 192.168.88.0/24 table=rtab-VPN
Подскажите, пожалуйста, что я делаю не так, как правильно настроить маршрут для клиентов Wi-Fi через шлюз wireguard1?
Записки IT специалиста
Рассматривая настройку WireGuard в наших предыдущих материалах, мы намеренно не касались Mikrotik, запланировав для этого отдельную статью. И для этого есть свои причины. RouterOS, под управлением которой работают данные устройства, имеет свои особенности и подходы к настройке, малоинтересные другим читателям. А для пользователей Mikrotik будет лучше, если все нужное будет в одной статье. При этом мы подразумеваем, что администратор, работающий с ROS, имеет более высокий уровень подготовки и владеет основами сетей, поэтому не будем пояснять простые настройки, а сосредоточимся именно на WireGuard.
Онлайн-курс по MikroTik
Научиться настраивать MikroTik с нуля или систематизировать уже имеющиеся знания можно на углубленном курсе по администрированию MikroTik. Автор курса, сертифицированный тренер MikroTik Дмитрий Скоромнов, лично проверяет лабораторные работы и контролирует прогресс каждого своего студента. В три раза больше информации, чем в вендорской программе MTCNA, более 20 часов практики и доступ навсегда.
Если вас интересует тема WireGuard в более широком ключе, безотносительно оборудования Mikrotik, то рекомендуем прочесть наши материалы:
Следующий очень важный момент: Wireguard доступен только в версии RouterOS 7, которая не смотря на статус stable все еще имеет достаточно «детских болезней» и прочих проблем, поэтому не стоит переходить на новую версию без вдумчивого анализа всех плюсов и минусов, а также предварительного тестирования.
В нашем случае будет использоваться CHR с RouterOS 7.2.1 запущенная в виртуальной машине нашей тестовой лаборатории.
Как мы уже говорили, WireGuard — это простой туннель без сохранения состояния, к нему не применимы понятия клиент и сервер, каждый узел WireGuard способен подключаться к другим узлам и сам принимать соединения. Более правильно называть узлы сети — пиры (peer) — инициатором и респондером. Первый инициирует соединение, второй его принимает. Хотя даже в среде профессионалов к узлам WireGuard продолжают применяться термины клиент и сервер, первый подключается, второй принимает подключения. Большой беды в этом нет, но вы должны понимать, что любой узел WireGuard способен выполнять обе роли одновременно.
Mikrotik как респондер (сервер)
В RouterOS 7 появился новый пункт меню — WireGuard, переходим в него на одноименную закладку и создаем новый интерфейс. Заполняем поля Name и Listen Port, их назначения понятны, советуем использовать осмысленные названия интерфейсов, чтобы вы могли понимать, для чего тот или иной предназначен. Ключи будут созданы автоматически.
Если вы предпочитаете работать в терминале, то выполните команду:
/interface wireguard
add listen-port=34567 mtu=1420 name=wireguard-sts
Затем присвоим созданному интерфейсу IP-адрес, для чего перейдем в IP — Addresses и просто добавим нужный адрес.
Или:
/ip address
add address=10.10.0.1/24 interface=wireguard-sts network=10.10.0.0
Также не забудьте разрешить входящие соединения на указанный при создании интерфейса порт, в нашем случае 34567. Это можно сделать в IP — Firewall — Filter Rules добавив правило: Chain — input, Protocol — udp, Dst. Port — 34567, In. Interface — ether1 — в его качестве следует указать внешний интерфейс роутера. Действие можно не выбирать, так как по умолчанию — accept.
Это же можно сделать командой:
/ip firewall filter
add action=accept chain=input dst-port=34567 in-interface=ether1 protocol=udp
Данное правило следует расположить перед запрещающим принимать входящие подключения на внешний интерфейс.
Чтобы к нашему роутеру могла подключаться другие узлы нужно создать для каждого из них пир, для этого возвращаемся в WireGuard — Peers и создаем новую запись. Здесь нам потребуется открытый ключ пира, который следует внести в поле Public Key и указать разрешенные сети в Allowed Address. В нашем случае мы реализуем сценарий удаленного доступа или объединения сетей, поэтому укажем там внутренний адрес в WireGuard сети, который мы выделили пиру и сеть за ним.
В терминале:
/interface wireguard peers
add allowed-address=10.10.0.2/32,192.168.233.0/24 interface=wireguard-sts public-key="9pVP67ehKtQEr6BV46X9SuQrdvys+1QeVT0oeUg71wo https://interface31.ru/tech_it/assets_c/2022/04/mikrotik-wireguard-004-14743.html" onclick="window.open('https://interface31.ru/tech_it/assets_c/2022/04/mikrotik-wireguard-004-14743.html','popup','width=661,height=519,scrollbars=yes,resizable=no,toolbar=no,directories=no,location=no,menubar=no,status=no,left=0,top=0'); return false">Если вы нигде не ошиблись, то подключение будет установлено, и вы сможете получить доступ к сети за роутером. В случае нахождения пира за NAT не забывайте добавить опцию PersistentKeepalive. Как видим, ничего сложного нет, но при большом количестве пиров прибавляется ручной работы: вы должны сами распределить адреса и прописать настройки с обоих сторон. Никаких средств автоматизации для этого не предусмотрено.
Mikrotik как инициатор (клиент)
В данном разделе мы рассмотрим иной сценарий - использование WireGuard для доступа в интернет, но принципиальной разницы нет, если вы соединяете сети, то можно точно также настроить роутер и все будет работать. Просто мы дополнительно рассмотрим некоторые вопросы касающиеся маршрутизации.
Снова переходим в раздел WireGuard и создаем новый интерфейс. В данном случае достаточно только указать имя, порт нас не интересует, так как мы не собираемся принимать соединения, но его все-таки требуется указать, выбираем любой.
Или вводим команду:
/interface wireguard
add listen-port=13231 mtu=1420 name=wireguard-inet
Затем назначаем интерфейсу адрес, если все узлы ваши - то назначаете сами, если подключаетесь к чужому респондеру, то вводите адрес, выданный его администратором. Это действие производится в IP - Addresses.
Это же действие в терминале:
/ip address
add address=10.20.0.105/24 interface=wireguard-inet network=10.20.0.0
Чтобы наш роутер смог куда-то подключиться мы снова должны создать пир. В WireGuard пир - это просто вторая сторона туннеля и не важно мы подключаемся к ней, или она к нам. В любом случае у нас должен быть интерфейс - наша сторона, и пир - противоположная сторона.
Переходим в WireGuard - Peers и создаем новый пир, настроек тут будет побольше, указываем: Interface - созданный нами интерфейс, Public Key - публичный ключ респондера, получаем с той стороны, Endpoint и Endpoint Port - адрес респондера и его порт, Allowed Address - 0.0.0.0/0 - т.е. разрешаем любой трафик в туннеле. Если вы находитесь за NAT, то обязательно добавьте опцию Persistent Keepalive, рекомендуемое значение - 25 секунд.
В терминале тоже достаточно длинная команда:
/interface wireguard peers
add allowed-address=0.0.0.0/0 endpoint-address=x.x.x.x endpoint-port=34567 interface=wireguard-inet persistent-keepalive=25s public-key="kKxQ4wF+kUrpsTGwjMvlSwX45WV4nixG76/+sKlzEQA mikrotik-wireguard-010.png" src="https://interface31.ru/tech_it/images/mikrotik-wireguard-010.png" width="516" height="72" style="text-align: center; display: block; margin: 0 auto 20px;" />Перезапускаем службу и соединение будет установлено. Но трафик как шел через основного провайдера - так и идет. Почему так? Заглянем в таблицу маршрутизации, которая находится в IP - Routes, как видим нулевой маршрут как был через основного провайдера - так и остался. В отличие от официальных пакетов WireGuard, которые управляют маршрутами на хосте, в Mikrotik все отдано в руки администратора. А дальше все зависит от того, что именно мы хотим получить. Если нам нужен доступ через туннель к отдельным узлам, то просто достаточно создать для них отдельные маршруты. Создаем новое правило, в котором указываем нужный адрес и шлюз, в качестве которого будет выступать противоположный конец WireGuard туннеля.
Теперь снова проверяем (мы добавили маршрут к сервису проверки IP) - все хорошо, мы обращаемся к данному узлу через VPN-сервер.
Добавить маршрут из командной строки можно следующим образом:
/ip route
add disabled=yes distance=1 dst-address=172.67.74.128/32 gateway=10.20.0.1 pref-src=0.0.0.0 routing-table=main scope=30 suppress-hw-offload=no target-scope=10
Если же мы хотим направить весь интернет трафик в туннель, то нам нужно изменить нулевой маршрут, казалось бы, все просто, но не будем спешить. Обратим внимание на флаги текущего маршрута: DAd - динамический, активный, получен по DHCP, можно, конечно отключить получение маршрутов в DHCP-клиенте, но мы пойдем другим путем.
Вспомним, что если к одной цели ведут несколько маршрутов, то будет выбран тот, у которого самая узкая маска. Поэтому вместо одного нулевого маршрута добавим два, к сетям 0.0.0.0/1 и 128.0.0.0/1.
В терминале выполните две команды:
/ip route
add disabled=no distance=1 dst-address=0.0.0.0/1 gateway=10.20.0.1 pref-src="" routing-table=main scope=30 suppress-hw-offload=no target-scope=10
add disabled=no distance=1 dst-address=128.0.0.0/1 gateway=10.20.0.1 pref-src="" routing-table=main scope=30 suppress-hw-offload=no target-scope=10
Вроде бы все сделано правильно, но интернет вообще перестал работать. Что случилось? Мы только что завернули в туннель весь исходящий трафик, в том числе и к нашему VPN-серверу, естественно, что соединение будет невозможно.
Поэтому добавим еще один маршрут к респондеру через основного провайдера.
/ip route
add disabled=no dst-address=x.x.x.x/32 gateway=192.168.3.1 routing-table=main suppress-hw-offload=no
Где 192.168.3.1 - шлюз основного провайдера.
После чего все снова заработает. При этом уже только по одному внешнему виду сайтов несложно понять, что мы работаем через VPN с точкой выхода в Германии.
Более подробные настройки для того или иного конкретного сценария выходят за рамки данной статьи и, как таковые, уже не относятся к настройкам WireGuard. Сам же WireGuard в RouterOS 7 есть и работает, при этом достаточно несложен в настройке, в чем мы только что убедились.
Онлайн-курс по MikroTik
Научиться настраивать MikroTik с нуля или систематизировать уже имеющиеся знания можно на углубленном курсе по администрированию MikroTik. Автор курса, сертифицированный тренер MikroTik Дмитрий Скоромнов, лично проверяет лабораторные работы и контролирует прогресс каждого своего студента. В три раза больше информации, чем в вендорской программе MTCNA, более 20 часов практики и доступ навсегда.
Дополнительные материалы:
Mikrotik
- Оборудование MikroTik класса SOHO. Общий обзор и сравнение возможностей
- Производительность младших моделей Mikrotik hEX и hAP. Экспресс-тестирование
- Базовая настройка роутера MikroTik
- Расширенная настройка DNS и DHCP в роутерах Mikrotik
- Автоматическое резервное копирование настроек Mikrotik на FTP
- Проброс портов и Hairpin NAT в роутерах Mikrotik
- Настройка IPTV в роутерах Mikrotik на примере Ростелеком
- Настройка VPN-подключения в роутерах Mikrotik
- Настройка черного и белого списков в роутерах Mikrotik
- Настройка выборочного доступа к сайтам через VPN на роутерах Mikrotik
- Настройка OpenVPN-сервера на роутерах Mikrotik
- Безопасный режим в Mikrotik или как всегда оставаться на связи
- Настройка Proxy ARP для VPN-подключений на роутерах Mikrotik
- Настраиваем Port Knocking в Mikrotik
- Резервирование каналов в Mikrotik при помощи рекурсивной маршрутизации
- Настраиваем родительский контроль на роутерах Mikrotik
- Настраиваем IKEv2 VPN-сервер на роутерах Mikrotik с аутентификацией по сертификатам
- Расширенная настройка Wi-Fi на роутерах Mikrotik. Режим точки доступа
- Mikrotik CHR - виртуальный облачный роутер
- Настройка контроллера CAPsMAN (бесшовный Wi-Fi роуминг) на Mikrotik
- Настройка VPN-подключения на роутерах Mikrotik если подсети клиента и офиса совпадают
- Настраиваем использование DNS over HTTPS (DoH) на роутерах Mikrotik
- Настройка PPTP или L2TP VPN-сервера на роутерах Mikrotik
- Установка Mikrotik CHR на виртуальную машину Proxmox
- Защита RDP от перебора паролей при помощи оборудования Mikrotik
- Настройка SSTP VPN-сервера на роутерах Mikrotik
- Настройка выборочного доступа к сайтам через VPN с автоматическим получением маршрутов по BGP на роутерах Mikrotik
- Особенности эксплуатации CA на роутерах Mikrotik: резервное копирование, экспорт и импорт сертификатов
- Настройка туннелей GRE и IPIP на роутерах Mikrotik
- Правильное использование Fast Path и FastTrack в Mikrotik
- DHCP Snooping - настройка защиты от неавторизованных DHCP-серверов на оборудовании Mikrotik
- Работа оборудования Mikrotik в режиме беспроводной станции (клиента)
- Используем режим ARP reply-only для повышения безопасности сети на оборудовании Mikrotik
The Dude
- The Dude. Установка и быстрое начало работы
- Централизованное управление обновлением RouterOS при помощи The Dude
- Централизованный сбор логов Mikrotik на сервер The Dude
Помогла статья? Поддержи автора и новые статьи будут выходить чаще:
Или подпишись на наш Телеграм-канал:
MikroTik.by
For every complex problem, there is a solution that is simple, neat, and wrong.
- Список форумовФорум по операционной системе MikroTik RouterOSМаршрутизация, коммутация
- Поиск
Роутинг интенет трафика внути Wireguard сети
RIP, OSFP, BGP, MPLS/VPLS
11 сообщений • Страница 1 из 1
dogmaod Сообщения: 8 Зарегистрирован: 06 ноя 2023, 12:23
Роутинг интенет трафика внути Wireguard сети
Сообщение dogmaod » 25 фев 2024, 17:47
Добрый день
Прошу консультации как завернуть интернет трафик.
Дано:
1. Mikrotik Wireguard server 10.20.0.1/24 – WAN IP 214.5.4.5
2. Linux server Wrieguard client 10.20.0.2 - WAN 62.244.2.3
3. OpenWRT Router Wrieguard client 10.20.0.3 - WAN 213.0.23.3
Когда поднять туннель на Linux server Wrieguard client 10.20.0.2 весь интернет трафик идет через
Mikrotik WAN IP 214.5.4.5.
Задача завернуть весть интернет трафик с Linux server Wrieguard client 10.20.0.2 через
OpenWRT Router Wrieguard client 10.20.0.3.
Пробовал на Mikrotik создать доп таблицу роутинга rtab-1.
Добавить ротуинг по умолчанию через 10.20.0.3
/ip route
add disabled=no distance=1 dst-address=0.0.0.0/0 gateway=10.20.0.3 pref-src="" routing-table=\
rtab-1 scope=30 suppress-hw-offload=no target-scope=10
Правило определения исходящего адреса 10.20.0.2/32 и добавление в таблицу rtab-1
/routing rule
add action=lookup disabled=no dst-address= interface=wireguard1_test src-address=\
10.20.0.2/32 table=rtab-1
Но трафик по прежнему идет через Mikrotik WAN 214.5.4.5
Какие варианты можно сделать ?
Визуальную схему прилагаю:
Вложения mikrotik_wireguard_lan.png (16.5 КБ) 255 просмотров
Chupaka Сообщения: 3917 Зарегистрирован: 29 фев 2016, 15:26 Откуда: Минск Контактная информация:
Re: Роутинг интенет трафика внути Wireguard сети
Сообщение Chupaka » 26 фев 2024, 11:58
Что такое wireguard1_test? Упоминается лишь раз и без пояснений. Трафик у вас действительно идёт от 10.20.0.2, за ним незанатированных клиентов нет? Что за "dst-address=" - оно так на самом деле? Не "dst-address=0.0.0.0/0" какой-нибудь.
Я бы вместо routing rule использовал Firewall Mangle, там весь трафик с in-interface=WG_to_Linux_server маркировал (и убедиться, что Fasttrack на этот трафик не действует или вообще не используется)
dogmaod Сообщения: 8 Зарегистрирован: 06 ноя 2023, 12:23
Re: Роутинг интенет трафика внути Wireguard сети
Сообщение dogmaod » 26 фев 2024, 13:24
interface=wireguard1_test - это интерфейс wireguard сети 10.20.0.1/24 на микротике. На Микротике настроен маскарадинг.
Сейчас весь интернет трафик идет через микротик 10.20.0.1.
dst-address=0.0.0.0/0 - это я имею введу default route.
Chupaka Сообщения: 3917 Зарегистрирован: 29 фев 2016, 15:26 Откуда: Минск Контактная информация:
Re: Роутинг интенет трафика внути Wireguard сети
Сообщение Chupaka » 26 фев 2024, 14:43
Попробуйте переделать так, как я написал. Там хоть понятно будет, ловит ли правило какие-нибудь пакеты.