LINUX.ORG.RU

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

 , ,


1

0

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

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

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

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

Architector
()

Как понять?

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

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

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

Вот кумекую, поди невероятно сложно. Я не научился ещё маршруты прописывать на dev wg0, это так просто не работает.

Andrey68
() автор топика
Ответ на: комментарий от 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
() автор топика
Ответ на: комментарий от Andrey68

я же тебе написал, ну ебана.

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

а надо:

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

после чего пихай туда свой 8.8.8.8 через ip ro a

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

а, ну и маскарадинг/snat не забудь, а то на второй стороне поди тоже самое

Anoxemian ★★★★★
()
Ответ на: комментарий от 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
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.