Ответы пользователя по тегу Сетевая маршрутизация
  • Как направить конкретное приложение через другую страну?

    ValdikSS
    @ValdikSS
    Любой клиент, поддерживающий маршрутизацию по программам. Например, Windscribe. Не обязательно пользоваться сервисом, в него также можно загрузить свои конфиги.
    Ответ написан
    Комментировать
  • Каким способом настроить маршрутизацию между роутером и orange pi?

    ValdikSS
    @ValdikSS
    https://habr.com/ru/articles/835602/comments/#comm...
    s_lhf2ugh0cvnna8kkxrcbz-8e8.png
    (Wi-Fi-роутер это Orange Pi)
    1. Подключить Orange Pi кабелем в существующую локальную сеть
    2. Включить маршрутизацию на Orange Pi (sysctl net.ipv4.ip_forward=1)
    3. Убедиться, что в iptables нет запрещающих маршрутизацию правил
    4. Установить zapret nfqws и настроить на обработку маршрутизируемого трафика (если будете использовать nftables — см. баг)
    5. Прописать настройки сети в Orange Pi статически, установить IP-адрес Orange Pi в качестве шлюза на конечных устройствах. Такая опция есть на любом устройстве, даже на телевизоре. В общем случае достаточно прописать DHCP option 3 на роутере, тогда изменять вручную шлюзы не потребуется.
    Всё. Не надо ни физически ничего переподключать, ни поднимать дополнительную сеть Wi-Fi.

    OpenWrt пробовал, очень мало памяти и ничего не поставить.
    У вашего роутера 16 МБ памяти, её хватит на всё с большим запасом. Вам не нужно отдельное устройство в виде Orange Pi.
    Ответ написан
    Комментировать
  • Как ускорить YouTube на OpenWRT?

    ValdikSS
    @ValdikSS
    Я установил на роутер zapret nfqws, не используя стандартные скрипты из поставки. Конфигурация такая, какая описана вот в этом баге:

    https://github.com/bol-van/zapret/discussions/262

    Взял бинарник из репозитория, написал простейший init-скрипт (/etc/init.d/nfqws) для openwrt с вшитыми параметрами, написал свои правила firewall’а. Оригинальные тоже хорошие (и обрабатывают разные конфигурации), но вот эти банально проще.

    # cat /etc/init.d/nfqws 
    #!/bin/sh /etc/rc.common
    
    USE_PROCD=1
    START=91
    
    PROG=/etc/zapret/nfqws/nfqws
    
    start_service() {
      procd_open_instance
      procd_set_param command "$PROG"
      procd_append_param command --dpi-desync=fake
      procd_append_param command --dpi-desync-fooling=md5sig,badseq
      procd_append_param command --dpi-desync-split-pos=1
      procd_append_param command --dpi-desync-repeats=12
      procd_append_param command --dpi-desync-ttl=4
      procd_append_param command --qnum=200
      procd_append_param command --hostlist=/etc/zapret/nfqws/youtube.txt
    #  procd_append_param command --hostlist=/tmp/domains-export.txt
      procd_set_param stdout 1 # forward stdout of the command to logd
      procd_set_param stderr 1 # same for stderr
      procd_close_instance
    }


    С моими правилами файрволла (connbytes) в nfqws копируются только первые 8 пакетов, а дальше всё маршрутизируется как обычно. /etc/zapret/zapret.nft:

    chain zapret_lan_hook {
        type filter hook forward priority mangle;
    
    #    iifname {"br-lan"} \
          ip daddr != {0.0.0.0/8, 10.0.0.0/8, 192.168.0.0/16, 172.16.0.0/12, 100.64.0.0/10, 169.254.0.0/16, 224.0.0.0/3, 255.255.255.255/32} \
          tcp dport {80, 443} ct original packets lt 8 counter queue flags bypass to 200 comment "zapret IPv4 443 tcp"
    
    #    iifname {"br-lan"} \
          ip6 daddr != {::ffff:0:0/96, fc00::/7, fe80::/10, ff00::/8} \
          tcp dport {80, 443} ct original packets lt 8 counter queue flags bypass to 200 comment "zapret IPv6 443 tcp"
    
    #    iifname {"br-lan"} \
          ip daddr != {0.0.0.0/8, 10.0.0.0/8, 192.168.0.0/16, 172.16.0.0/12, 100.64.0.0/10, 169.254.0.0/16, 224.0.0.0/3, 255.255.255.255/32} \
          udp dport 443 ct original packets lt 8 counter queue flags bypass to 200 comment "zapret IPv4 443 udp"
    
    #    iifname {"br-lan"} \
          ip6 daddr != {::ffff:0:0/96, fc00::/7, fe80::/10, ff00::/8} \
          udp dport 443 ct original packets lt 8 counter queue flags bypass to 200 comment "zapret IPv6 443 udp"
    }


    Нужно заinclude’ить скрипт в настройках firewall’а. /etc/config/firewall:

    config include 'zapret'
    	option type 'nftables'
    	option path '/etc/zapret/zapret.nft'
    	option position 'table-post'
    	option enabled '1'


    Необходимо отключить offloading, с ним, скорее всего, работать не будет (но я не проверял, оригинальные правила учитывают этот момент).

    В таком виде всё установить можно на ЛЮБОЙ роутер, даже на 4/32, при большом желании (скриптом скачивания бинарника в оперативную память, при необходимости).

    /etc/zapret/nfqws/youtube.txt:

    youtube.com
    youtu.be
    googlevideo.com
    googleapis.com
    gvt1.com
    ggpht.com
    ytimg.com
    youtube-nocookie.com
    play.google.com
    video.google.com
    youtube-ui.l.google.com
    youtubeeducation.com
    youtubekids.com
    Ответ написан
    2 комментария
  • Как связать несколько локальных сетей через WireGuard на ubuntu?

    ValdikSS
    @ValdikSS
    Многопользовательские L3-туннели (в т.ч. OpenVPN TUN, WireGuard) не позволяют указывать IP-адрес, через который происходит маршрутизация (ip route … via 10.8.0.4) — эта опция требует L2-связности.
    Используйте директиву AllowedIPs в WireGuard, она настроит и внутреннюю машрутизацию, и маршрутизацию ОС, и внутренний фильтр source IP.
    Ответ написан
    Комментировать
  • Как реализовать подключение к Интернету через OpenVPN, используя шлюз на другом клиенте?

    ValdikSS
    @ValdikSS
    Самый простой вариант — настроить L2-туннель (TAP) и маршрутизировать трафик средствами таблиц маршрутизации операционной системы, как если бы вы делали это в физическом Ethernet.
    Android и iOS не поддерживают TAP, не смогут присоединиться к такому серверу.

    Вариант с L3-туннелем (TUN) тоже можно настроить, но он все клиенты сервера будут использовать канал Keenetic, без возможности конфигурации.
    В конфигурационном файле на сервере:
    client-to-client
    client-config-dir ccd

    Создать файл ccd/имя_клиента_keenetic с содержимым:
    iroute 0.0.0.0 0.0.0.0
    Ответ написан
    4 комментария
  • Как с помощью маршрутизации и брандмауэра Windows реализовать для OpenVPN split tunneling для целевого приложения?

    ValdikSS
    @ValdikSS
    В Windows такой возможности нет. Это можно реализовать на уровне драйвера/WFP (пример), но не стандартными средствами.

    Разве что можно задействовать возможность добавления DSCP-меток для разных приложений, с помощью которого роутер может маршрутизировать трафик от разных приложений самостоятельно:
    https://serverfault.com/questions/769843/cannot-se...
    https://docs.openwrt.melmac.net/vpn-policy-routing/
    Ответ написан
    Комментировать
  • Каким образом настроить роутинг подсети OpenVPN во внутреннюю сеть?

    ValdikSS
    @ValdikSS
    Необходимо настроить маршрутизацию требуемых диапазонов адресов через VPN-сервер на всех устройствах локальной сети, иначе вы получите асимметричную маршрутизацию, когда пакет с одной из сторон сети доходит до устройства, а устройство не знает правильный маршрут для отправки ответа, и отправляет его через шлюз по умолчанию (в интернет).
    Если ваш VPN-сервер расположен не на самом шлюзе (маршруте по умолчанию), а на другом адресе, необходимо добавить маршруты до сетей через адрес VPN-сервера на всех устройствах локальной сети, и также убедиться в правильности настройки маршрутов у VPN-клиентов.

    Варианты решения проблемы:
    1. Добавить маршрут на роутер в локальной сети до диапазона VPN-сети через IP-адрес VPN-сервера
    2. Добавить маршрут до диапазона VPN-сети всем устройствам локальной сети через IP-адрес VPN-сервера (не обязательно вручную, можно средствами DHCP option 121/249 роутера).


    См. мои комментарии к вопросу Как правильно настроить роутинг openvpn?
    Ответ написан
  • Как одновременно использовать мобильный интернет и wifi на android?

    ValdikSS
    @ValdikSS
    В чём ваш вопрос? При подключении по Wi-Fi всё по умолчанию именно так и работает, если на роутере нет интернета.

    Если вы хотите настроить максимально правильно, то роутер не должен отдавать в DHCP-ответе опцию 3 (Router). Но даже с ней современные устройства поймут, что в сети нет интернета, и не будут пытаться маршрутизировать интернет-трафик, маршрутизируя только локальный..
    Ответ написан
    Комментировать
  • Почему при миграции машин через vcenter 7 на long distance ограничение в 150Мбит\сек?

    ValdikSS
    @ValdikSS
    Вероятно, вам необходимо увеличить буферы TCP, чтобы было более широкое окно (window size)

    https://en.wikipedia.org/wiki/Bandwidth-delay_product
    https://fasterdata.es.net/host-tuning/linux/
    Ответ написан
    Комментировать
  • Почему такое странное поведение статической маршрутизации в linux?

    ValdikSS
    @ValdikSS
    Так как вы пытаетесь маршрутизировать подсеть через роутер 10.0.0.1, которая доступна через другой "роутер" (10.0.0.2) в вашем же L2-сегменте, роутер 10.0.0.1 отправляет вашему компьютеру ICMP Redirect в целях оптимизации маршрута.
    Настраивается принятие ICMP-редиректов опцией net.ipv4.conf.all.accept_redirects и сопутствующими, а отправка — net.ipv4.conf.all.send_redirects и сопутствующими.

    Почему маршрутизация перестаёт работать, когда трафик идёт напрямую? Сложно сказать без отладки, но пальцем в небо: Wi-Fi — не Ethernet, хоть и пытается быть похожим на него. В Wi-Fi не передаётся MAC-адрес отправителя, из-за чего, например, его нельзя добавить в Ethernet-бридж.
    Компьютер подключён также по Wi-Fi? В таком случае, вероятно, смартфон получает ваши пинги с MAC-адреса роутера 10.0.0.1, соответственно и ответить пытается ему, а не компьютеру.
    Ответ написан
    Комментировать
  • Есть приватный IPv6 адрес нужно его "преобразовать" в глобальный IPv6, как это сделать?

    ValdikSS
    @ValdikSS
    Никак. Приватный на то и приватный. Это два разных типа адреса.
    Ответ написан
    Комментировать
  • Как работает AlG?

    ValdikSS
    @ValdikSS
    PPTP использует не (только) TCP/UDP, но еще и протокол GRE. NAT, в общем простом случае, работает только для TCP/UDP, анализируя IP-адрес и номер порта, и устанавливая соответствие (маппинг) между ними, чего недостаточно для PPTP. ALG для PPTP — это дополнительный код, который отслеживает передачу данных на порт PPTP, понимает, что клиент начал устанавливать соединение, и создаёт NAT-запись для GRE-протокола для этого клиента.
    Ответ написан
    2 комментария