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

    ValdikSS
    @ValdikSS
    Многопользовательские L3-туннели (в т.ч. OpenVPN TUN, WireGuard) не позволяют указывать IP-адрес, через который происходит маршрутизация (ip route … via 10.9.0.2) — эта опция требует L2-связности. Вам нужно настроить внутреннюю маршрутизацию OpenVPN.

    В конфигурационный файл на сервере добавить:
    client-config-dir ccd
    route 192.168.1.0 255.255.255.0

    Создать файл ccd/имя_клиента с содержимым:
    iroute 192.168.1.0 255.255.255.0

    И добавить маршруты на устройствах сети 192.168.1.0/24 через VPN при необходимости (в вашем случае не нужно).
    Ответ написан
    1 комментарий
  • Как ускорить 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 комментария
  • Как раздавать WiFi уже вместе с VPN?

    ValdikSS
    @ValdikSS
    Установите софт-роутер в виртуальную машину (OpenWrt, OPNsense, Untangle, Mikrotik RouterOS) и настройте маршрутизацию в ней. Используйте тип сети bridge, с другими не заработает. Подключение компьютера должно быть проводное, Wi-Fi не подойдёт.

    На клиентах укажите IP-адрес виртуальной машины в качестве шлюза.
    Ответ написан
    Комментировать
  • Что имеют в виду, когда говорят "смотрит в интернет"?

    ValdikSS
    @ValdikSS
    Чаще всего, как Valentin Barbolin отметил, это означает, что устройство доступно непосредственно из интернета, т.е. у него есть выделенный IP-адрес.
    Но фраза не имеет конкретного смысла и может менять значение в зависимости от контекста. Это, например, также может означать доступ в интернет в целом: «тв смотрит в интернет» = ТВ имеет доступ в интернет. Если порт смотрит в интернет, то порт был проброшен на NAT/межсетевом экране до устройства, и т.п.
    Ответ написан
    1 комментарий
  • Как можно в Linux настроить маршрутизацию для доменов 1-ого уровня?

    ValdikSS
    @ValdikSS
    Вам нужен DNS-резолвер, устанавливающий отображение (соответствие, маппинг) настоящего IP-адреса домена в свободный IP-адрес большой внутренней подсети, и отдающий запрашиваемому клиенту адрес из внутренней подсети. Эту сеть маршрутизируйте через нужный вам интерфейс.
    Ответ написан
    2 комментария
  • Как организовать видимость IP адресов VPN-клиентов внутри локальной сети?

    ValdikSS
    @ValdikSS
    То, что вы хотите получить, является стандартным поведением маршрутизации в целом и VPN в частности. Переключение в режим L2 (tap) вам не даст никаких преимуществ и не приблизит к решению проблемы.

    Вероятно, у вас включён source NAT для подсети VPN. Отключите его, правильно настройте маршрутизацию на всех точках, и всё заработает.
    Ответ написан
    1 комментарий
  • Как настроить маршрутизацию между двумя tun интерфейсами?

    ValdikSS
    @ValdikSS
    Вы забыли добавить маршрут до самой сети в таблицу.
    ip route add 192.168.10.0/24 dev tun0 table open.out
    Ответ написан
  • Какой сервис предоставляем наиболее полный/актуальный список подсетей по IP/ASN?

    ValdikSS
    @ValdikSS
    https://ftp.ripe.net/ripe/dbase/split/

    Вот здесь все файлы, что вам потребуются. Преобразовать в формат БД можно, например, с помощью https://github.com/firefart/network_info
    Ответ написан
    Комментировать
  • Как по ВПН соединить две сети с одинаковым поддиапазоном 192.168.0.1/24?

    ValdikSS
    @ValdikSS
    С OpenVPN это сделать сравнительно легко — у него имеется встроенное средство переназначения сетей.

    --client-nat args
            This pushable client option sets up a stateless one-to-one NAT rule on packet addresses (not ports), and is useful in cases where routes or ifconfig settings pushed to the  client  would
            create an IP numbering conflict.
    
            Examples:
    
                client-nat snat 192.168.0.0/255.255.0.0
                client-nat dnat 10.64.0.0/255.255.0.0
    
            network/netmask  (for  example  192.168.0.0/255.255.0.0) defines the local view of a resource from the client perspective, while alias/netmask (for example 10.64.0.0/255.255.0.0) defines
            the remote view from the server perspective.
    
            Use snat (source NAT) for resources owned by the client and dnat (destination NAT) for remote resources.
    
            Set --verb 6 for debugging info showing the transformation of src/dest addresses in packets.


    А с другими типами — использовать ядерное переназначение через iptables/nftables: DNAT/SNAT, NETMAP.
    Ответ написан
    Комментировать
  • Как перекинуть рабочий VPN зарубеж?

    ValdikSS
    @ValdikSS
    Подключите OpenVPN через прокси, всего-то делов. Это штатная возможность OpenVPN, и такой метод туннелирования не блокируют.
    Ответ написан
    Комментировать
  • Как делать смену IP адресов на сервере кодом (куплены дополнительные на хостинге)?

    ValdikSS
    @ValdikSS
    Необходимо вызвать bind() с нужным исходящим адресом, не указывая порт (порт 0).
    Для Python: https://docs.python.org/3/library/socket.html#sock...
    Ответ написан
    Комментировать
  • Как подключиться к камере находящейся на том же свитче, но с IP адресом из другой подсети?

    ValdikSS
    @ValdikSS
    На неттопе выполните:
    sudo ip address add 192.168.0.XXX/24 dev eth0, где eth0 — интерфейс, к которому подключена камера, а 192.168.0.XXX — любой незанятый адрес. Это всё исходя из предположения, что на камере настроена маска сети /24.
    Ответ написан
    3 комментария
  • Что не так с фрагментированными UDP, почему они теряются?

    ValdikSS
    @ValdikSS
    Фрагментация UDP - это же вполне законно, правда?

    RFC 8900: IP Fragmentation Considered Fragile
    Ответ написан
    Комментировать
  • Как получить доступ к модему из-под VPN сети?

    ValdikSS
    @ValdikSS
    Вы, наверное, пытаетесь открыть страницу по IP-адресу 10.10.10.135, а не 192.168.8.1, из-за чего у вас заголовок HTTP Host: 10.10.10.135. Веб-интерфейс модема на такое не рассчитан и зацикливается в бесконечной переадресации.

    Обращайтесь к нему по IP-адресу 192.168.8.1.
    Ответ написан
  • Как работает маршрутизация с двумя шлюзами по умолчанию?

    ValdikSS
    @ValdikSS
    Я слабо разбираюсь в Windows, поэтому не считайте моё мнение экспертным, могу быть не прав.

    Если не ошибаюсь, при входящих TCP-соединениях Windows автоматически сохраняет IP-адрес назначения, на который это соединение пришло, во внутренних структурах сокета, поэтому в рамках одного TCP-соединения пакеты будут уходить с одного IP-адреса (они автоматически bind'ятся на этот source ip address).

    Далее маршрутизация: в Windows, начиная с Vista, используется strong host model (см. RFC1122), которая предписывает отправлять пакеты с того сетевого интерфейса, IP-адрес которого указан в структурах сокета.
    Старая статья на technet имеет следующую приписку:

    If the program specifies a source IP address, that IP address is used as the source IP address for connections sourced from that socket and the adapter associated with that source IP is used as the source interface. The route table is searched but only for routes that can be reached from that source interface.

    И далее описываются похожие принципы, связанные с RFC3484.

    «Автоматически» всё работает только для протоколов с концепцией соединения, т.е. с TCP. Для UDP, если программа не написана с учётом поддержки multihoming, пакеты могут уходить согласно метрике, т.е. с неправильного адреса (не с того, на какой пришел входящий пакет), и ничего не заработает.
    Ответ написан
    1 комментарий
  • Как остановить трафик на диапазон RC1918 в Ubuntu 20.04?

    ValdikSS
    @ValdikSS
    Без дампа захвата трафика и анализа ситуации могу только ткнуть пальцем в небо и предположить, полагая, что у вас корректно настроен NAT (MASQUERADE) из VPN-интерфейса на физический интерфейс, что от VPN-клиентов уходит трафик без подмены адреса (без NAT'а), если TCP-сессия уже была установлена с каким-либо хостом в момент соединения с VPN.

    В этом случае, при типичной настройке iptables, правило MASQUERADE не будет выполняться (так как у пакетов состояние conntrack INVALID, а не NEW/ESTABLISHED), и пакеты будут маршрутизироваться без замены исходного адреса.

    Решение:
    iptables -I FORWARD -m conntrack --ctstate INVALID -j DROP


    Аналогичная ситуация может происходить, если кто-то из клиентов генерирует пакеты TCP на низком уровне, без установки TCP-сессии. Например, единичный SYN/ACK-пакет, не принадлежащий какой-либо TCP-сессии, отправленный через VPN, не попадёт под действие NAT MASQUERADE-правила.
    Ответ написан
    1 комментарий
  • Как настроить прокси squid версии 5 для фильтрации https сайтов?

    ValdikSS
    @ValdikSS
    На официальном сайте смотрели?
    wiki.squid-cache.org/Features/SslPeekAndSplice
    Ответ написан
    Комментировать
  • По каким портам слушается ответ на TCP запрос?

    ValdikSS
    @ValdikSS
    Все ответы написаны с предположением, что межсетевой экран поддерживает запоминание состояний (stateful), а не работает просто по пакетам (stateless). Вероятно, раз вам задают такой вопрос, у оператора установлен stateless файрволл, и необходимо будет либо разрешить все эфемерные порты, либо, если есть доступ к коду трекера, делать bind() сокета на определённый фиксированный порт перед совершением соединения.
    Ответ написан
    Комментировать
  • Как пропустить все пакеты через главный роутер с управляемого коммутатора?

    ValdikSS
    @ValdikSS
    но не могу заставить, чтобы он перестал сам решать куда отправлять пакеты, а все скидывал на роутер.
    Это решает хост, подключённый к свитчу, а не свитч.
    Вариантов несколько:
    1. Как сказал ky0, использовать IP-адреса с префиксом /32, чтобы хосты не искались на L2
    2. Поместить каждый порт в свой VLAN, чтобы изолировать их на L2 (и включить proxy-arp, если связность между машинами нужна)
    3. Использовать IPv6, также с изоляцией L2. В IPv6 есть концепция on-link и off-link маршрутов, изменять длину префикса IPv6-адреса для этого не требуется.
    Ответ написан
    Комментировать