Информация
Услуги
  • Внедрение
  • Настройка
  • Поддержка
  • Ремонт
Контакты
Новинка
Распродажа
Новости
Доставка
Оплата
Загрузки
  • Прошивки
    • WinBox
    • RouterOS
    • Мобильные приложения MikroTik
    • Архив
  • RouterOS
  • Мобильные приложения MikroTik
  • Архив
Форум
Настройка
    info@mikrotik.moscow
    +7 495 320-55-52
    Заказать звонок
    Mikrotik.moscow
    Каталог
    • Акции
      Акции
    • Маршрутизаторы
      Маршрутизаторы
    • Коммутаторы
      Коммутаторы
    • Радиомосты и уличные точки доступа
      Радиомосты и уличные точки доступа
    • Wi-Fi для дома и офиса
      Wi-Fi для дома и офиса
    • LTE/5G
      LTE/5G
    • Powerline адаптеры
      Powerline адаптеры
    • IoT устройства
      IoT устройства
    • Оборудование 60 ГГц
      Оборудование 60 ГГц
    • Материнские платы RouterBOARD
      Материнские платы RouterBOARD
    • Корпуса
      Корпуса
    • Интерфейсы
      Интерфейсы
    • SFP/QSFP трансиверы
      SFP/QSFP трансиверы
    • Аксессуары
      Аксессуары
    • Антенны
      Антенны
    • Архив
      Архив
    Войти
    0 Сравнение
    0 Избранное
    0 Корзина
    Скачать WinBox Скачать Прошивки Форум > RouterOS Форум > SwOS Форум > Железо
    Mikrotik.moscow
    Каталог
    Войти
    0 Сравнение
    0 Избранное
    0 Корзина
    Mikrotik.moscow
    Телефоны
    +7 495 320-55-52
    Заказать звонок
    0
    0
    0
    Mikrotik.moscow
    • +7 495 320-55-52
      • Назад
      • Телефоны
      • +7 495 320-55-52
      • Заказать звонок
    • info@mikrotik.moscow
    • г. Москва, ул. Бакунинская, 84
    • Пн-Пт: 09-00 до 18-00
      Сб-Вс: выходной


    • Кабинет
    • 0 Сравнение
    • 0 Избранное
    • 0 Корзина
    Главная
    Форум
    Форум
    RouterOS
    VLess прокси-туннель на Mikrotik через контейнеры

    VLess прокси-туннель на Mikrotik через контейнеры

    Форумы: RouterOS, Аппаратное обеспечение, SwOS, Обратная связь, Объявления, Сторонние инструменты
    Поиск  Пользователи  Правила  Войти
    Страницы: 1
    RSS
    VLess прокси-туннель на Mikrotik через контейнеры, RouterOS
     
    DeHb86
    Guest
    #1
    0
    15.01.2024 10:29:00
    Всем привет! Помогите, пожалуйста, с контейнерами и маршрутизацией трафика на роутере. У меня Mikrotik hAP ax3 с USB-флешкой для хранения, на роутере установлены контейнеры AdguardHome, Xray-core и Tun2Socks. Конфигурация:  
    /interface bridge  
    add name=Dockers port-cost-mode=short  
    /interface veth  
    add address=10.6.0.2/24 gateway=10.6.0.1 gateway6="" name=VETH1-adguard  
    add address=10.6.0.3/24 gateway=10.6.0.1 gateway6="" name=VETH2-xray  
    add address=10.6.0.4/24 gateway=10.6.0.1 gateway6="" name=VETH3-tun  

    /interface list  
    add name=LANs  
    add name=WANs  

    /container  
    add interface=VETH1-adguard root-dir=usb1-part1/Containers/adguard start-on-boot=yes workdir=/opt/adguardhome/work  
    add dns=10.6.0.2 interface=VETH2-xray root-dir=usb1-part1/Containers/xray-core start-on-boot=yes workdir=/root  
    add dns=10.6.0.2 interface=VETH3-tun root-dir=usb1-part1/Containers/tun2socks start-on-boot=yes  

    /container config  
    set ram-high=250.0MiB registry-url=https://ghcr.io tmpdir=usb1-part1/TMP  

    /interface bridge port  
    add bridge=Dockers interface=VETH1-adguard  
    add bridge=Dockers interface=VETH2-xray  
    add bridge=Dockers interface=VETH3-tun  

    /interface list member  
    add interface=Bridge list=LANs  
    add interface=WAN list=WANs  

    /ip address  
    add address=10.10.12.1/24 interface=Bridge network=10.10.12.0  
    add address=10.6.0.1/24 interface=Dockers network=10.6.0.0  

    /ip dhcp-server network  
    add address=10.10.12.0/24 dns-server=10.6.0.2 gateway=10.10.12.1 netmask=24  

    /ip dns  
    set allow-remote-requests=yes cache-max-ttl=1w3d doh-timeout=6s query-server-timeout=2s500ms query-total-timeout=12s servers=1.1.1.1 use-doh-server=https://cloudflare-dns.com/dns-query verify-doh-cert=yes  

    /ip firewall filter  
    add action=fasttrack-connection chain=forward comment="Rule 1.0 Fasttrack" connection-state=established,related hw-offload=yes in-interface=Bridge out-interface=WAN  
    add action=fasttrack-connection chain=forward connection-state=established,related hw-offload=yes in-interface=WAN out-interface=Bridge  
    add action=accept chain=forward comment="Rule 1.0.1 Forward input established/related acept" connection-state=established,related,untracked log-prefix="Forward accept"  
    add action=accept chain=input connection-state=established,related,untracked log-prefix="Input accept"  
    add action=drop chain=forward comment="Rule 1.0.2 Forward input invalid drop" connection-state=invalid in-interface=WAN log-prefix="Forward drop invalid"  
    add action=drop chain=input connection-state=invalid in-interface=WAN log-prefix="Input drop invalid"  
    add action=drop chain=input comment="Rule 1.2.1 Input drop from WAN" in-interface-list=WANs log-prefix="Input all drop from WAN"  

    /ip firewall mangle  
    add action=mark-routing chain=prerouting dst-address=10.6.0.2 new-routing-mark=proxy_mark passthrough=yes src-address=10.10.12.52  

    /ip firewall nat  
    add action=dst-nat chain=dstnat comment="NAT 1.01 - TCP 53 Redirect DNS requests to AdguardHome" dst-port=53 in-interface=Bridge protocol=tcp to-addresses=10.6.0.2  
    add action=dst-nat chain=dstnat comment="NAT 1.02 - UDP 53 Redirect DNS requests to AdguardHome" dst-port=53 in-interface=Bridge protocol=udp to-addresses=10.6.0.2  
    add action=masquerade chain=srcnat comment="Containers through NAT" out-interface=WAN src-address=10.6.0.0/24  
    add action=masquerade chain=srcnat comment="WWW through VPN" dst-address-list=rkn_wg out-interface=WG1-VPS  
    add action=masquerade chain=srcnat comment="LAN through NAT" out-interface=WAN src-address=10.10.12.2-10.10.12.254  

    /routing table  
    add disabled=no fib name=wg_mark  
    add disabled=no fib name=proxy_mark  

    /ip route  
    add comment="Access to WWW through Proxy" disabled=no distance=1 dst-address=0.0.0.0/0 gateway=10.6.0.4 pref-src="" routing-table=proxy_mark scope=30 suppress-hw-offload=yes target-scope=10  
    add comment="Access to WWW through WG1-VPS" disabled=no distance=2 dst-address=0.0.0.0/0 gateway=WG1-VPS pref-src="" routing-table=wg_mark scope=30 suppress-hw-offload=yes target-scope=10  

    Контейнер AdguardHome работает без вопросов, все устройства в сети получают его как DNS-сервер через DHCP. Контейнер Xray-core (клиент к VPS-серверу с установленным 3X-UI) — после запуска контейнер останавливается, я редактирую файл config.json (там указаны настройки подключения). Всё работает нормально, он соединяется с VPS через XLTS+Reality, с локального ПК (Windows) и виртуальной машины (Ubuntu) при указании http://socks=IP:порт я спокойно выхожу в Интернет через Socks.  

    Вся загвоздка в контейнере Tun2Socks. Для запуска я скачал образ с github, потом запустил контейнер, остановил его и отредактировал entrypoint.sh:  
    #!/bin/sh  
    ip tuntap add mode tun dev tun0  
    ip addr add 198.18.0.1/15 dev tun0  
    ip link set dev tun0 up  
    ip route del default  
    ip route add default via 198.18.0.1 dev tun0 metric 1  
    ip route add default via 10.6.0.1 dev eth0 metric 10  
    tun2socks -device tun0 -proxy socks5://10.6.0.3:30804 -interface eth0  
    run || exit 1  

    Интернет из контейнеров работает (проверял и Xray-core, и Tun2Socks). Но когда пытаюсь отправить весь трафик с локального устройства из локальной сети в туннель (через правило mangle с отметкой proxy_mark), интернет совсем не работает — пинг и трассировка не проходят через туннель ни на какой сайт. При этом при такой же настройке для WireGuard всё работает и интернет доступен на всех устройствах.  

    Я сам вообще не спец по Unix-системам, с микротиком тоже долго разбирался. Не могу понять, в чём проблема — в туннеле или в настройках маршрутизации на роутере? Или, может, кто-то знает более простой способ?
     
     
     
    Oleg554555
    Guest
    #2
    0
    15.02.2024 23:52:00
    Привет. Ты смог направить трафик с локальных устройств в контейнер? Мне удалось развернуть контейнер proxy combine harvester sing-box. Соединение с прокси-сервером установлено, для теста я выбрал shadowsocks 2022. В контейнере есть стандартный tun2socks, изнутри контейнера запрос через curl ifconfig.me возвращает IP-адрес прокси-сервера. Возникла проблема с маршрутизацией: внутри контейнера трафик идет, как видно по выводу iftop, но пакеты с хоста не возвращаются, из-за чего отсутствует доступ в интернет.
     
     
     
    Madeus
    Guest
    #3
    0
    01.03.2024 10:01:00
    Привет. Ты смог настроить эту конфигурацию?
     
     
     
    DeHb86
    Guest
    #4
    0
    15.06.2024 14:19:00
    Добрый день! Прошло довольно много времени, и я продолжал изучать эту тему. Отвечая на последний вопрос — да! Мне удалось заставить эту схему работать с тремя контейнерами. Но со временем что-то изменилось внутри контейнеров, и сейчас я уже не могу гарантировать, что всё сработает с первого раза без экспериментов.

    На более дешёвом aX2 мне даже удалось запустить установку контейнеров через скрипт, но после того, как я 1,5 месяца не имел доступа к этому устройству, выяснилось, что схема перестала работать. Пока не удалось понять причину. Возможно, сами сборки контейнеров обновились, и эти настройки больше не подходят.

    На домашнем aX3 с установленными контейнерами на USB-флешке схема сейчас работает. Настройки такие:

    /interface bridge add name=Dockers port-cost-mode=short  
    /ip address add address=10.6.0.1/24 interface=Dockers network=10.6.0.0  
    /interface veth add address=10.6.0.2/24 gateway=10.6.0.1 gateway6="" name=VETH1-adguard  
    /interface veth add address=10.6.0.3/24 gateway=10.6.0.1 gateway6="" name=VETH2-xray  
    /interface veth add address=10.6.0.4/24 gateway=10.6.0.1 gateway6="" name=VETH3-tun  
    /interface bridge port add bridge=Dockers interface=VETH1-adguard  
    /interface bridge port add bridge=Dockers interface=VETH2-xray  
    /interface bridge port add bridge=Dockers interface=VETH3-tun  

    /container mounts add dst=/opt/adguardhome/work name=adguard_workdir src=/usb1-part1/Conf/adguardwork  
    /container mounts add dst=/opt/adguardhome/conf name=adguard_confdir src=/usb1-part1/Conf/adguardconf  
    /container envs add key=TZ name=adguard_envs value=Europe/Moscow  
    /container add envlist=adguard_envs interface=VETH1-adguard mounts=adguard_workdir,adguard_confdir root-dir=usb1-part1/Containers/adguard start-on-boot=yes workdir=/opt/adguardhome/work  
    /container add dns=10.6.0.2 interface=VETH2-xray root-dir=usb1-part1/Containers/xray-core start-on-boot=yes workdir=/root  
    /container add dns=10.6.0.2 interface=VETH3-tun root-dir=usb1-part1/Containers/tun2socks start-on-boot=yes  

    /ip dhcp-server network add address=10.10.12.0/24 dns-server=10.6.0.2 gateway=10.10.12.1 netmask=24  
    /routing table add disabled=no fib name=proxy_mark  
    /ip route add comment="Acceess to WWW through Proxy" disabled=no distance=1 dst-address=0.0.0.0/0 gateway=10.6.0.4 pref-src="" routing-table=proxy_mark scope=30 suppress-hw-offload=yes target-scope=10  

    /ip firewall mangle add action=mark-routing chain=prerouting dst-address-list=route_proxy log-prefix=markrou_ new-routing-mark=proxy_mark passthrough=yes  
    /ip firewall mangle add action=change-mss chain=forward new-mss=clamp-to-pmtu out-interface=Dockers passthrough=yes protocol=tcp tcp-flags=syn  

    /ip firewall nat add action=dst-nat chain=dstnat comment="TCP 53 Redirect DNS requests to AdguardHome" dst-port=53 in-interface=Bridge protocol=tcp to-addresses=10.6.0.2  
    /ip firewall nat add action=dst-nat chain=dstnat comment="UDP 53 Redirect DNS requests to AdguardHome" dst-port=53 in-interface=Bridge protocol=udp to-addresses=10.6.0.2  
    /ip firewall nat add action=masquerade chain=srcnat comment="WWW through VPN Proxy" dst-address-list=route_proxy out-interface=Dockers  
    /ip firewall nat add action=masquerade chain=srcnat comment="Containers through NAT" out-interface-list=WANs src-address=10.6.0.0/24  

    В самих контейнерах, как я писал раньше, нужно внести изменения в файлы:  
    Xray-core (выступает клиентом к VPS-серверу с установленным 3X-UI) — после запуска контейнера редактируется файл config.json (задаются настройки подключения).  
    Tun2Socks — после установки и запуска контейнер останавливается, и заменяется Entryppoint.sh:  

    #!/bin/sh  
    ip tuntap add mode tun dev tun0  
    ip addr add 198.18.0.1/15 dev tun0  
    ip link set dev tun0 up  
    ip route del default  
    ip route add default via 198.18.0.1 dev tun0 metric 1  
    ip route add default via 10.6.0.1 dev eth0 metric 10  
    tun2socks -device tun0 -proxy socks5://10.6.0.3:30804 -interface eth0  

    После запуска контейнера все адреса, включённые в список proxy_mark, направляются через VLess прокси-туннель.
     
     
     
    universe5ht
    Guest
    #5
    0
    16.06.2024 05:57:00
    @DeHb86 Привет! Ты не мог бы написать более подробную статью о том, как самостоятельно делать контейнеры? Кстати, можно ли запустить XRAY-core client в режиме TUN?
     
     
     
    DeHb86
    Guest
    #6
    0
    16.06.2024 07:22:00
    А какой именно шаг нужно объяснить подробнее? Сам процесс установки контейнера? Я не пересобирал контейнеры под свои нужды, просто установил их из репозитория и заменил файл config.json в xray-core (указал IP/ключ и прочее для подключения к серверу через протокол Vless), а во втором контейнере тоже заменил файл entrypoint.sh. Если нужно что-то подробнее — напиши на почту dehb@list.ru.
     
     
     
    DeHb86
    Guest
    #7
    0
    22.07.2024 08:37:00
    Ко всему вышесказанному небольшое дополнение. Не знаю почему, но недавно контейнер tun2socks перестал работать — он не мог пропинговать ни локальные машины, ни удалённые хосты. Коллеги, которые не равнодушны к нашей общей проблеме, разобрались, в чём была загвоздка с контейнером, и посоветовали внести изменения. Решением стало исправление Entrypoint.sh с добавлением команд на выключение и включение интерфейсов. Сейчас у меня всё снова работает на всех устройствах, так что делюсь обновлённым вариантом:

    #!/bin/sh  
    sleep 2  
    ifconfig eth0 down  
    sleep 2  
    ifconfig eth0 up  
    ip tuntap add mode tun dev tun0  
    ip addr add 198.18.0.1/15 dev tun0  
    ip link set dev tun0 up  
    sleep 2  
    ifconfig tun0 down  
    sleep 2  
    ifconfig tun0 up  
    ip route del default  
    ip route add default via 198.18.0.1 dev tun0 metric 1  
    ip route add default via 10.6.2.1 dev eth0 metric 10  
    tun2socks -device tun0 -proxy socks5://10.6.2.3:30804 -interface eth0
     
     
     
    mike7
    Guest
    #8
    0
    27.07.2024 15:14:00
    Просто хочу поделиться точками входа для обеих реализаций, чтобы вы могли собрать свои собственные образы для mikrotik. Dockerfile примерно такой:

    # syntax=docker/dockerfile:1

    FROM ghcr.io/<image>:latest

    COPY --chown=0:0 --chmod=755 entrypoint.sh /entrypoint.sh

    Для https://github.com/xjasonlyu/tun2socks

    #!/bin/sh

    TUN="${TUN:-tun0}"  
    ADDR="${ADDR:-198.18.0.1/15}"  
    LOGLEVEL="${LOGLEVEL:-info}"

    create_tun() {  
     # создаём tun-устройство  
     ip tuntap add mode tun dev "$TUN"  
     ip addr add "$ADDR" dev "$TUN"  
     ip link set dev "$TUN" up  
    }

    config_route() {  
     # http://forum.mikrotik.com/t/run-flag-in-container/163100/8  
     ip route del default  
     ip route add default via ${IPV4} dev ${TUN} metric 1  
     ip route add default via $(ip -o -f inet address show eth0 | awk '/scope global/ {print $4}' | cut -d/ -f1) dev eth0 metric 10  
    }

    run() {  
     create_tun  
     create_table  
     config_route  

     # выполнить дополнительные команды  
     if [ -n "$EXTRA_COMMANDS" ]; then
       sh -c "$EXTRA_COMMANDS"  
     fi  

     if [ -n "$MTU" ]; then
       ARGS="--mtu $MTU"  
     fi  

     if [ -n "$RESTAPI" ]; then
       ARGS="$ARGS --restapi $RESTAPI"  
     fi  

     if [ -n "$UDP_TIMEOUT" ]; then
       ARGS="$ARGS --udp-timeout $UDP_TIMEOUT"  
     fi  

     if [ -n "$TCP_SNDBUF" ]; then
       ARGS="$ARGS --tcp-sndbuf $TCP_SNDBUF"  
     fi  

     if [ -n "$TCP_RCVBUF" ]; then
       ARGS="$ARGS --tcp-rcvbuf $TCP_RCVBUF"  
     fi  

     if [ "$TCP_AUTO_TUNING" = 1 ]; then
       ARGS="$ARGS --tcp-auto-tuning"  
     fi  

     if [ -n "$MULTICAST_GROUPS" ]; then
       ARGS="$ARGS --multicast-groups $MULTICAST_GROUPS"  
     fi  

     exec tun2socks \  
       --loglevel "$LOGLEVEL" \  
       --interface eth0 \  
       --device "$TUN" \  
       --proxy "$PROXY" \  
       $ARGS  
    }

    run || exit 1

    Для https://github.com/heiher/hev-socks5-tunnel

    #!/bin/sh

    TUN="${TUN:-tun0}"  
    MTU="${MTU:-9000}"  
    IPV4="${IPV4:-198.18.0.1}"  
    IPV6="${IPV6:-}"  

    MARK="${MARK:-438}"  

    SOCKS5_ADDR="${SOCKS5_ADDR:-172.17.0.1}"  
    SOCKS5_PORT="${SOCKS5_PORT:-1080}"  
    SOCKS5_USERNAME="${SOCKS5_USERNAME:-}"  
    SOCKS5_PASSWORD="${SOCKS5_PASSWORD:-}"  
    SOCKS5_UDP_MODE="${SOCKS5_UDP_MODE:-udp}"  

    LOG_LEVEL="${LOG_LEVEL:-warn}"

    config_file() {  
     cat > /hs5t.yml << EOF  
    misc:  
     log-level: '${LOG_LEVEL}'  
    tunnel:  
     name: '${TUN}'  
     mtu: ${MTU}  
     ipv4: '${IPV4}'  
     ipv6: '${IPV6}'  
     post-up-script: '/route.sh'  
    socks5:  
     address: '${SOCKS5_ADDR}'  
     port: ${SOCKS5_PORT}  
     udp: '${SOCKS5_UDP_MODE}'  
     mark: ${MARK}  
    EOF  

     if [ -n "${SOCKS5_USERNAME}" ]; then
         echo "  username: '${SOCKS5_USERNAME}'" >> /hs5t.yml  
     fi  

     if [ -n "${SOCKS5_PASSWORD}" ]; then
         echo "  password: '${SOCKS5_PASSWORD}'" >> /hs5t.yml  
     fi  
    }

    config_route() {  
     echo "#!/bin/sh" > /route.sh  
     chmod +x /route.sh  

     echo "ip route del default" >> /route.sh  
     echo "ip route add default via ${IPV4} dev ${TUN} metric 1" >> /route.sh  
     echo "ip route add default via $(ip -o -f inet address show eth0 | awk '/scope global/ {print $4}' | cut -d/ -f1) dev eth0 metric 10" >> /route.sh  
    }

    run() {  
     config_file  
     config_route  
     echo "echo 1 > /success" >> /route.sh  
     hev-socks5-tunnel /hs5t.yml  
    }

    run || exit 1

    Не забудьте задать переменные окружения для контейнеров.
     
     
     
    mike7
    Guest
    #9
    0
    06.08.2024 05:35:00
    Я успешно развернул tun2socks и hev-socks5-tunnels на hAP ac^3 (arm). Но такая же конфигурация не работает на RB5009UG+S+ (arm64). На RB5009 пересылка внутри контейнера просто не срабатывает. С помощью torch я не могу поймать исходящие пакеты с tun на socks, хотя маршрутизация с локального работает. Подключение внутри tun-контейнера с устройства tun можно проверить так: wget -S -O - http://one.one.one.one > /dev/null. У меня на RB5009 более сложный файрвол, попробую проверить с простым файрволом на выходных. @DeHb86 Похоже, у тебя тоже arm64-платформа. Пока что единственная разница в моих тестах — платформа. Маршрутизацию внутри контейнера можно немного упростить:

    ip route del default  
    ip route add 10.0.0.0/8 via 172.21.0.17 dev eth0  
    ip route add 172.16.0.0/12 via 172.21.0.17 dev eth0  
    ip route add 192.168.0.0/16 via 172.21.0.17 dev eth0  

    ip route add default via 198.18.0.1 dev tun0  

    Все приватные сети идут через роутер, а внешний трафик — через socks.
     
     
     
    snegowiki
    Guest
    #10
    0
    28.08.2024 12:14:00
    Вот аналог Docker-образа tun2socks для arm64 (например, AX2, AX3) — hev-socks5-tunnel-mikrotik и shadowsocks-client, если нужно. Также у меня есть контейнер с клиентом vless reality. P.S. Для arm можно попробовать snegowiki/hev-socks5-tunnel-mikrotik:test, но я его не тестировал.
     
     
     
    DeHb86
    Guest
    #11
    0
    30.08.2024 17:15:00
    Привет! С первой попытки не получилось запустить контейнер, точнее, контейнер установился и работает, но не выполняет роль туннеля. При запуске контейнер выдает ошибку: «Error: invalid prefix for the specified prefix length». Моя локальная сеть 10.10.12.0/24, сеть контейнера 10.6.0.0/24, DNS-сервер 10.6.0.2 (Adguardhome) (роутер — aX3).  

    /container  
    add dns=10.6.0.2 envlist=HEV-tun interface=VETH4-tun2 logging=yes root-dir=usb1/Containers/Tun2 start-on-boot=yes  

    /container envs  
    add key=SOCKS5_ADDR name=HEV-tun value=10.6.0.3  
    add key=SOCKS5_PORT name=HEV-tun value=30804  
    add key=SOCKS5_UDP_MODE name=HEV-tun value=udp  
    add key=LOCAL_ROUTE name=HEV-tun value="ip r a 10.10.12.1/24 via 10.6.0.1"  

    По настройкам вроде всё правильно, что же могло пойти не так? Моё глупое упущение… указал сеть «…12.1/24», а не «…12.0/24», как должно быть. После исправления всё запустилось и работает.  

    snegowiki, огромное спасибо!
     
     
     
    rozhkovets
    Guest
    #12
    0
    31.08.2024 09:12:00
    Подтверждаю, работает отлично на hap ac3. Скорость немного низковата — около 20 мегабит при 100-мегабитном канале. Но, думаю, это не из-за Mikrotik, загрузка CPU не превышает 30% в пиковые моменты. Мой способ установки. Не забудьте заменить IP-адреса и подсети на свои значения, а также путь к USB-диску.

    Установите дополнительный пакет container.npk, необходим USB-диск, отформатированный в ext4:
    /system/device-mode/update container=yes
    /system reboot

    /container config set ram-high=250.0MiB registry-url=https://registry-1.docker.io tmpdir=usb1/pull

    /interface bridge add name=Dockers port-cost-mode=short

    /interface veth add address=11.0.0.2/24 gateway=11.0.0.1 gateway6="" name=veth1-tun2sock
    /interface veth add address=11.0.0.3/24 gateway=11.0.0.1 gateway6="" name=veth2-xray-core

    /interface bridge port add bridge=Dockers interface=veth1-tun2sock
    /interface bridge port add bridge=Dockers interface=veth2-xray-core

    /ip address add address=11.0.0.1/24 interface=Dockers network=11.0.0.0

    /ip firewall nat add action=masquerade chain=srcnat comment="Containers through NAT" out-interface=WAN src-address=11.0.0.0/24

    /container add remote-image=xjasonlyu/tun2socks:latest interface=veth1-tun2sock root-dir=usb1/containers/tun2sock logging=yes
    /container add remote-image=teddysun/xray:latest interface=veth2-xray-core root-dir=usb1/containers/xray-core logging=yes

    /routing table add disabled=no fib name=proxy
    /ip firewall mangle add action=mark-routing chain=prerouting dst-address-list=proxy_list new-routing-mark=proxy passthrough=yes src-address=<ip адреса клиентов(подсеть)>

    /ip route add comment="Access through Proxy" disabled=no distance=1 dst-address=0.0.0.0/0 gateway=11.0.0.2 pref-src="" routing-table=proxy scope=30 suppress-hw-offload=yes target-scope=10

    С помощью встроенного SMB можно получить доступ к файлам контейнеров. Нужно отредактировать файл ../containers/tun2sock/entrypoint.sh. Содержимое файла заменить на следующее:

    #!/bin/sh  
    sleep 2  
    ifconfig eth0 down  
    sleep 2  
    ifconfig eth0 up  
    ip tuntap add mode tun dev tun0  
    ip addr add 198.18.0.1/15 dev tun0  
    ip link set dev tun0 up  
    sleep 2  
    ifconfig tun0 down  
    sleep 2  
    ifconfig tun0 up  
    ip route del default  
    ip route add default via 198.18.0.1 dev tun0 metric 1  
    ip route add default via 11.0.0.1 dev eth0 metric 10  
    tun2socks -device tun0 -proxy socks5://11.0.0.3:1080 -interface eth0

    Для настройки подключения xray-core к VPS с установленным 3x-ui необходимо отредактировать файл \containers\xray-core\etc\xray\config.json. Примеры конфигураций ищите здесь: https://github.com/XTLS/Xray-examples
     
     
     
    user7780
    Guest
    #13
    0
    04.09.2024 16:44:00
    Здравствуйте! Не могли бы вы поделиться своим конфигом для xray (конечно, удалив свои адреса)? Контейнер tun2 запускается, но внутри что-то не поднимает туннель к xray. Думаю, проблема в конфиге xray.
     
     
     
    holvoetn
    Guest
    #14
    0
    04.09.2024 18:29:00
    @user7780 Пожалуйста, используйте английский язык, так как большинство просто не поймёт, что вы пишете. Да и искать что-то, когда используются другие языки, — настоящее мучение.
     
     
     
    rozhkovets
    Guest
    #15
    0
    05.09.2024 07:43:00
    вместо #### вставьте свои данные, их можно найти в панели 3x-ui или расшифровав URL vless://

    /etc/xray/config.json

    VLESS-TCP-XTLS-Vision-REALITY {
       "log": {
           "loglevel": "warning"
       },
       "inbounds": [
           {
               "listen": "11.0.0.3",
               "port": "1080",
               "protocol": "socks",
               "settings": {
                   "auth": "noauth",
                   "udp": true,
                   "ip": "11.0.0.3"
               }
           },
           {
               "listen": "11.0.0.3",
               "port": "1081",
               "protocol": "http"
           }
       ],
       "outbounds": [
           {
               "protocol": "vless",
               "settings": {
                   "vnext": [
                       {
                           "address": "####",
                           "port": 443,
                           "users": [
                               {
                                   "id": "####", // Должен совпадать с серверной частью
                                   "encryption": "none",
                                   "flow": "xtls-rprx-vision"
                               }
                           ]
                       }
                   ]
               },
               "streamSettings": {
                   "network": "tcp",
                   "security": "reality",
                   "realitySettings": {
                       "fingerprint": "firefox",
                       "serverName": "####", // Сайт с поддержкой TLS1.3 и h2. Если наш адрес назначения `1.1.1.1:443`, оставьте пустым
                       "publicKey": "####", // Запустите `xray x25519` для генерации. Публичный и приватный ключи должны соответствовать.
                       "spiderX": "", // Если адрес назначения `1.1.1.1:443`, можно заполнить `/dns-query/` или оставить пустым
                       "shortId": "####" // Обязательное поле
                   }
               },
               "tag": "proxy"
           }
       ],
       "routing": {
           "domainStrategy": "AsIs",
           "rules": [
               {
                   "type": "field",
                   "ip": [
                       "geoip:private"
                   ],
                   "outboundTag": "direct"
               }
           ]
       }
    }
     
     
     
    floks
    Guest
    #16
    0
    05.09.2024 09:37:00
    Привет, ребята! Я почитал эту тему, но так и не понял конкретный алгоритм запуска клиентской части Vless на моём VPS-сервере. Может, кто-то систематизирует рекомендации и составит FAQ по этому вопросу? Пока что я понял одно: нужен Mikrotik на архитектуре ARM с RouterOS 7.0, с возможностью установки пакетов, затем установить Xray-core и пакет Tun2Socks (AdGuard мне не нужен), а дальше шаги остаются непонятными…
     
     
     
    DeHb86
    Guest
    #17
    0
    05.09.2024 12:54:00
    Добрый день! Сейчас, благодаря переработанным контейнерам Xray-core и hev-socks5-tunnel (огромное спасибо Snegowiki! https://hub.docker.com/r/snegowiki/vless-mikrotik и https://hub.docker.com/r/snegowiki/hev-socks5-tunnel-mikrotik), запуск контейнеров стал гораздо проще. Помимо подготовки роутера к установке контейнеров, необходимо ещё прописать маршрутизацию для помеченного трафика. Короче, вот какие настройки нужны:

    Создайте по 2 виртуальных интерфейса для каждого контейнера, выберите для них IP из диапазона приватных адресов:

    /interface veth add address=172.17.0.2/24 gateway=172.17.0.1 gateway6="" name=veth1-xray  
    /interface veth add address=172.17.0.3/24 gateway=172.17.0.1 gateway6="" name=veth2-tun

    Создайте мост для veth и контейнеров, задайте ему IP и сеть:

    /interface bridge add name=containers  
    /ip address add address=172.17.0.1/24 network=172.17.0.0 interface=containers

    Добавьте интерфейсы veth в мост:

    /interface bridge port add bridge=containers interface=veth1-xray  
    /interface bridge port add bridge=containers interface=veth2-tun

    Добавьте мост в список LAN:

    /interface list member add interface=containers list=LAN

    Создайте таблицу маршрутизации для трафика с меткой:

    /routing table add disabled=no fib name=proxy_mark

    Настройте NAT для исходящего трафика:

    /ip firewall nat add action=masquerade chain=srcnat comment="Containers through NAT" out-interface-list=WAN src-address=172.17.0.0/24

    Настройте firewall для маршрутизации трафика с меткой:

    /ip firewall mangle add action=mark-routing chain=prerouting dst-address-list=route_proxy new-routing-mark=proxy_mark passthrough=yes

    #Опционально  
    /ip firewall mangle add action=change-mss chain=forward new-mss=clamp-to-pmtu out-interface=containers passthrough=yes protocol=tcp tcp-flags=syn

    Добавьте ресурсы в address-list:

    /ip firewall address-list add address=microsoft.com list=route_proxy  
    /ip firewall address-list add address=www.microsoft.com list=route_proxy

    Добавьте маршрутизацию для помеченного трафика:

    /ip route add disabled=no distance=1 dst-address=0.0.0.0/0 gateway=172.17.0.3 routing-table=proxy_mark

    Настройка окружения для контейнера Xray vless:

    /container envs add key=SOCKS_PORT name=vless value=@port@  
    /container envs add key=REMOTE_ADDRESS name=vless value=@your_adress/ip_vps@  
    /container envs add key=REMOTE_PORT name=vless value=443  
    /container envs add key=ID name=vless value=@ID from panel 3x-ui@  
    /container envs add key=ENCRYPTION name=vless value=none  
    /container envs add key=FLOW name=vless value=xtls-rprx-vision  
    /container envs add key=FINGER_PRINT name=vless value=chrome  
    /container envs add key=SERVER_NAME name=vless value=@the domain you're masquerading as@  
    /container envs add key=PUBLIC_KEY name=vless value=@PUBLIC_KEY@  
    /container envs add key=SHORT_ID name=vless value=@SHORT_ID@

    Настройка окружения для контейнера Tun:

    /container envs add key=SOCKS5_ADDR name=tun value=172.17.0.2  
    /container envs add key=SOCKS5_PORT name=tun value=@port@  
    /container envs add key=SOCKS5_UDP_MODE name=tun value=udp  
    /container envs add key=LOCAL_ROUTE name=tun value="ip r a @your network@ via 172.17.0.1"

    Добавление контейнера (в данном случае настройки не полные, не указано, откуда именно ставить — сразу с hub или из файла на роутере):

    /container add dns=@your network@ envlist=vless interface=veth1-xray root-dir=@your directory sample - usb1/Containers/vless-mikrotik@ start-on-boot=yes workdir=/root  
    /container add envlist=tun interface=veth2-tun root-dir=@your directory sample - usb1/Containers/Hev-Tun@ start-on-boot=yes
     
     
     
    Страницы: 1
    Читают тему
    +7 495 320-55-52
    info@mikrotik.moscow
    Электрозаводская, Бауманская
    Москва, ул. Бакунинская, 84с21
    Конфиденциальность Оферта
    © 2026 «Mikrotik.Moscow»
    Главная Каталог 0 Корзина 0 Избранные Кабинет 0 Сравнение Акции Контакты Услуги Бренды Отзывы Компания Лицензии Документы Реквизиты Поиск Блог Обзоры