LINUX.ORG.RU

Маршрутизация через wireguard

 , ,


1

0

Не знаю обсуждалось ли это, но я поиском не нашёл. Вопрос в следующем, Нужно создать какую то конструкцию из rule и route на openwrt для правильной маршрутизации через default-ный маршрут и через wireguard клиент на роутере с openwrt. Хотелка такая, default маршрут использует сам роутер, а некоторые клиенты в локальной сети используют часть ресурсов через default роутера, а часть ресурсов (заблокированные в РФ роскомпозором) через wireguard. Так вот, как это соорудить? Если вопрос задал не там, прошу простить, я новичок на форуме.

Если я все правильно понял, то клиенты должны на «хорошие» ресурсы ходить через default маршрут, а на заблокированные через wireguard.

Если так, то клиенты должны для начала как-то понять, заблокирован ли ресурс или нет, что несколько проблематично, как мне кажется.

Как вариант - скачай базу заблокированных ресурсов РосКомНадзора, и создай маршрутизацию на них через wireguard.

Architector ()

Как понять?

Если по IP, то просто прописать правильные маршруты и все.

Если по доменам, то надо, чтобы твой резолвер или днс-сервер сам после резолвинга прописывал маршруты до всех получившихся IP. Если так, то гугли в сторону ipset и готовых решений от жителей одной свободолюбивой страны.

t184256 ★★★★★ ()
Ответ на: комментарий от Andrey68

Напиши скрипт, который будет посредством nslookup или dig получать A записи для нужных тебе доменов и генерировать скрипт с командами для микротик, которые будут добавлять маршруты до нужных IP адресов через wireguard.

Помести скрипт в cron, с некоторым интервалом или вызывай его руками.

В скрипте сделай проверку, что бы он сверял IP адреса, что были до и что получены сейчас.

Если найдены изменения, то подключайся по ssh на микротик и выполняй его на микротике.

Можешь проверку не делать, а просто вызывать его иногда руками.

anonymous ()
Ответ на: комментарий от Architector

сначала тебе надо организовать синхронизацию ркн списков с локальным набором ipset, потом матчить проходящий трафик с этими ipset листами и на основе этого менять метрику на таблицу маршрутизации, где default gateway твой wireguard. готовых решений таких я не видел, каждый сам себе колхозит в силу всоих возможностей. гуглить policy based routing

Anoxemian ★★★★★ ()
Ответ на: комментарий от Anoxemian

Ребят, всё что вы пишете большое вам спасибо! Даю слово, все эти советы я использую в дальнейшем, советы действительно дельные.

Но, я сейчас нахожусь в начале пути, проблема такая, wg0 это не обычный интерфейс? Да,нет ? Давайте начнём с этого, я не могу просто силами ip ro add …. dev wg0 добавить в таблицу маршрут. Ребят, только помидорами меня не закидывайте, я реально попробовал это прописать для теста, короч, у кого стоит клиент wireguard может подскажете как его заставить смотреть в таблицу роутинга?

Andrey68 ()
Ответ на: комментарий от Andrey68

Я бы помог, честно. Но я эту кашу разгребать не буду, воспользуйся разметкой. Сам то свой пост видел?

upd. Хотя уже вчитался, суко, с тебя новые глаза. У тебя настройки самого тоннеля кривые, похоже. allowedips самого интерфейса должны включать 0.0.0.0/0 (ну или твой 8.8.8.8), это обходится указанием Table=off (или номер конкретной таблицы) через wg-quick, если в ручную, то надо костылять. Покажи как у тебя сделан сам тоннель.

Anoxemian ★★★★★ ()
Ответ на: комментарий от Anoxemian

Вот пример, есть роутер tl-wr741nd на нём поднят wireguard клиент: interface: wg0

public key: key

private key: (hidden)

listening port: 55731

peer: key endpoint: ip server wg:51820

allowed ips: 192.168.25.0/24, 192.168.3.0/24, 10.9.0.0/24

latest handshake: 1 minute, 22 seconds ago

transfer: 194.58 MiB received, 10.62 GiB sent

persistent keepalive: every 45 seconds

Получается такая таблица маршрутов:

root@Router-tl-wr741nd:~# ip ro

default via 10.0.0.1 dev pppoe-wanppp proto static

10.0.0.1 dev pppoe-wanppp proto kernel scope link src 10.255.20.253

10.9.0.0/24 dev wg0 proto static scope link

10.10.11.0/24 dev eth1 proto kernel scope link src 10.10.11.167

62.33.3.8 via 10.0.0.1 dev pppoe-wanppp proto static

192.168.1.0/24 dev br-lan proto kernel scope link src 192.168.1.1

192.168.3.0/24 dev wg0 proto static scope link

192.168.25.0/24 dev wg0 proto static scope link

Любая моя затея с добавлением собственного маршрута:

ip ro add 8.8.8.8 dev wg0

default via 10.0.0.1 dev pppoe-wanppp proto static

8.8.8.8 dev wg0 scope link

link 10.0.0.1 dev pppoe-wanppp proto kernel scope link src 10.255.20.253

10.9.0.0/24 dev wg0 proto static scope link

10.10.11.0/24 dev eth1 proto kernel scope link src 10.10.11.167

ip server wg via 10.0.0.1 dev pppoe-wanppp proto static

192.168.1.0/24 dev br-lan proto kernel scope link src 192.168.1.1

192.168.3.0/24 dev wg0 proto static scope link

192.168.25.0/24 dev wg0 proto static scope link

не работает:

root@Router-tl-wr741nd:~# ping -c1 8.8.8.8 PING 8.8.8.8 (8.8.8.8): 56 data bytes ping: sendto: No error information

Я вот застрял, на этом этапе, а как у вас это работает?

Andrey68 ()
Ответ на: комментарий от Anoxemian

@Anoxemian

allowedips самого интерфейса должны включать 0.0.0.0/0 (ну или твой 8.8.8.8), это обходится указанием Table=off (или номер конкретной таблицы)

Я не множко туповатый, не ругайтесь пожалуйста. У меня с MASQUERADE всё нормально, клиенту доступны ресурсы сервера и интернета за сервером, серверу доступно сеть за клиентом.

У меня задача подняться на следующую ступень в развитии, тупой вопрос: почему без ‘allowedips’ не работает, черт возьми, маршрутизация?

Andrey68 ()
Ответ на: комментарий от Andrey68

Сам себе отвечаю, оказывается на openwrt есть такой параметр, который и влеяет на то, как будет маршрутизироваться трафик.

'option route_allowed_ips '1' - мне надо изменить его на 0.

Теперь следующий момент. У меня для эксперимента, создана таблица маршрутов 'vpn'

root@LEDE:/etc/config# cat /etc/iproute2/rt_tables
#
# reserved values
#
128     prelocal
255     local
254     main
253     default
0       unspec
#
# local
#
#1      inr.ruhep
90      vpn

и создано правило 'rule' для клиентов локальной сети маркировать пакеты и второе правило, направлять пакеты в эту самую таблицу.

root@LEDE:/etc/config# ip rule ls
0:      from all lookup local
1:      from all fwmark 0x1 lookup vpn
32766:  from all lookup main
32767:  from all lookup default

root@LEDE:/etc/config# iptables -vnL -t mangle
Chain PREROUTING (policy ACCEPT 1082 packets, 189K bytes)
 pkts bytes target     prot opt in     out     source               destination
  362 38888 MARK       all  --  *      *       192.168.100.0/24     0.0.0.0/0            /* !fw3: mark client */ MARK set 0x1

в моей созданной таблице маршрутов 'vpn' есть только один марщрут

root@LEDE:/etc/config# ip ro ls table vpn
default dev wg0  proto static  scope link

Если я этот маршрут перемещу в основную таблицу маршрутов, то трафик послушно начинает ходить через wg0, а мне надо, что бы работало через мою таблицу.

Теперь значит вопрос, почему моя конструкция не работает или как посмотреть, где пакетики теряются?

Andrey68 ()