Mikrotik + VM (OpenWRT + sing-box) для Youtube, Instagram и т.д

Добрый день

Третий день бьюсь над связкой Mikrotik + VM (OpenWRT + sing-box)

Ноутбук:
Постоянный IP адрес 192.168.1.14

Настройки OpenWRT:

  1. Network
    network (453 байта)
  2. Firewall
    firewall (666 байтов)
  3. sysctl.d:
    10-default.conf (730 байтов)
    10-ipv6-privacy.conf (74 байта)
  4. sing-box:
    config.json (2,2 КБ)
  5. DHCP на lan порте. Получает IP 192.168.2.80

Настройки микротик:

  1. сеть 192.168.1.0/22
  2. mangle:
    add action=mark-routing chain=prerouting comment=
    “Mark routing for my IP only” new-routing-mark=vless passthrough=yes
    src-address=192.168.1.14
  • route
    add comment=VLESS disabled=no distance=1 dst-address=0.0.0.0/0 gateway=
    192.168.2.80 pref-src=“” routing-table=vless scope=30
    suppress-hw-offload=no target-scope=10
  • routing table
    add comment=“Routing table for out VLESS” disabled=no fib name=vless

Что получилось:

  1. Если я указываю на ноутбуке шлюз 192.168.2.80:
  • недоступные сайты становятся доступными
  • команда в терминале tracert instagram.com:
    1 <1 мс <1 мс <1 мс 192.168.2.80
    2 2 ms 1 ms 1 ms 192.168.1.1
    3 * * * Превышен интервал ожидания для запроса.
  1. Если я указываю на ноутбуке шлюз 192.168.1.1: Н
  • недоступные сайты остаются недоступными
  • команда в терминале tracert instagram.com:
    1 <1 мс <1 мс <1 мс 192.168.1.1
    2 * * * Превышен интервал ожидания для запроса.

Вопросов несколько:

  1. Не пойму идет ли трафик с микротика на VM?
  2. Почему tracert с ноутбука идет через 192.168.1.1, а не в туннель?

Маскарадинг забыли

Где именно?

Судя по симптомам - везде. На виртуалке всего траффика, идущего в гейтвей, на некротике всего траффика, идущего в виртуалку. И в мангл правило сразу добавьте условие, исключающее пакеты, идущие от вашей виртуалки. В будущем, когда начнёте настраивать по листам, поможет избежать закольцовывания. Но вообще ИМХО гораздо проще настроить схему, где в самом xray поднимается wireguard inbound в кач-ве входного интерфеса. Накладные расходы на него околонулевые, а настройка становится сильно проще.
Я вот тут расписывал. Там правда xray живёт в контейнере в самом некроте, но смысл тот же

Спасибо за ответ.
Я прочел вашу ветку от начала до конца, но не смог перенести на свою конфигурацию
Мне так же необходимо создавать VETH и bridge? Если нет, то что и куда маскарадить на микроте?

Не, это чисто для функционирования контейнеров. Мы создаём виртуаоьный эзернет, в который они виртуально подключаются и раздаём им там некую частную подсетку. В вашем случае просто будет реальный порт и та же подсеть, что и остальные домашние железки, но смысл тот же. Единственное что, я не уверен что sign-box умеет в wg-inbound. Возможно, имеет смысл перекатиться на xray?

wireguard inbound точно не поддерживается в sing-box.
Если не создавать wg подключение от Микрота к VM, какие у меня есть дальнейшие варианты действия?

Убрал правило у микрота
add action=drop chain=forward comment=“Drop everything else” log-prefix=kks
И стали грузиться сайты)))

У меня образовалась петля?
image

Похоже на то. А у вас точно tun стоит дефолт гейтвеем в вашей виртуалке с sign-box? Почему-то траффик залетает на некрот оттуда, хотя по хорошему должен в tun

Сделал правило на микротике:
add action=accept chain=forward comment=VLESS routing-mark=vless
Вернул
add action=drop chain=forward comment=“Drop everything else” log-prefix=kks

image

Сайты долго но открываются

Если бы я знал как посмотреть default gateway
Сейчас буду читать инструкции

image

Вроде стоит галка

Вы пока обождите мучать некрот. Добейтесь сначала того, чтобы вы могли приссшиться на виртуалку с sign-box и оттуда курлануть заблоченный хост. И вот уже когда заведётся - тогда на самой виртуалке нужно добавьте маскарадинг
Аля

iptables -t nat -D POSTROUTING -o tun0 -j MASQUERADE
ip6tables -t nat -D POSTROUTING -o tun0 -j MASQUERADE

И дальше уже на некроте туда заворачивайте.
Точно как вы делали, манглом марк роутинг и маскарадинг всего траффика до ip вашей виртуалки

Дык
ip route
Ну или
ip -6 route
Для ipv6.

ip r:
image

ip -6 r

нет, т.к. выключен ipv6

На новой openWRT нет iptables

Ну значит
nft add rule nat postrouting oif tun0 masquerade
Что-то же должно там быть?)
А чем обусловлен выбор именно openwrt? Почему бы на виртуалку не закатить например дебиан

OpenWRT выбран из-за его маленьких размеров. Хотел поделиться со всеми образом VM

На неделе попробую debian.
Давайте совместными усилиями осилим создание VM для использования под открытие неоткрывающихся файлов. И желательно маленького размера с маленьким аппетитом к ресурсам.
Моих знаний явно недостаточно, я всё что мог у себя сделать - сделал.

Что только я не делал в файлах network и firewall. Никакого результата - петля остается

Без схемы сложно понять, что пытаетесь настроить. Ниже приложу свою схему своей собственной домашней сети, где я настроил, как мне кажется, именно то, что вы хотите сделать, только вместо микрота у меня opnsense, а вместо опенврт ubuntu-server с синг боксом. Стрелками показаны пути прохождения трафика через/в обход прокси согласно правилам PBR. Трафик в сторону прокси пойдёт через интерфейс vlan10 роутера, а проксированный трафик будет возвращаться на vlan20 и далее уходить в интернет.

Ориентируйтесь на эту схему, использование двух линковочных интерфейсов помогает избежать петель и прочих неудобств. В tun синг бокса попадает то, что приходит на интерфейс vlan 10, а на vlan 20 настроено iptables -t nat -A POSTROUTING -o vlan20 -j MASQUERADE
Маршрут по умолчанию на убунту через vlan 20, прописан обратный маршрут до LAN через vlan 10:

@ubnt:~# ip route
default via 10.0.20.1 dev vlan20 proto static metric 100
10.0.10.0/30 dev vlan10 proto kernel scope link src 10.0.10.2
10.0.20.0/30 dev vlan20 proto kernel scope link src 10.0.20.2
172.16.1.0/24 via 10.0.10.1 dev vlan10 proto static metric 100
@ubnt:~# ip a
1: enp6s18: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether bc:24:11:0f:74:19 brd ff:ff:ff:ff:ff:ff
    inet6 fe80::be24:11ff:fe0f:7419/64 scope link
       valid_lft forever preferred_lft forever
2: vlan10@enp6s18: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
    link/ether bc:24:11:0f:74:19 brd ff:ff:ff:ff:ff:ff
    inet 10.0.10.2/30 brd 10.0.10.3 scope global vlan10
       valid_lft forever preferred_lft forever
    inet6 fe80::be24:11ff:fe0f:7419/64 scope link
       valid_lft forever preferred_lft forever
3: vlan20@enp6s18: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
    link/ether bc:24:11:0f:74:19 brd ff:ff:ff:ff:ff:ff
    inet 10.0.20.2/30 brd 10.0.20.3 scope global vlan20
       valid_lft forever preferred_lft forever
    inet6 fe80::be24:11ff:fe0f:7419/64 scope link
       valid_lft forever preferred_lft forever

Схема простая. Никаких VLAN:

image

Mikrotik через mangle часть пакетов передает на OpenWRT, а OpenWRT через sing-box должна трафик убрать в туннель до VPS.
Всё вроде работает, но как то медленно.
И когда делаю tracert с компьютера в сети, там как-будто петля от 192.168.1.1 и 192.168.2.80, даже когда на компьютере вручную ставлю gateway 192.168.2.80:

image