Предлагаю для тестирования скрипт, предназначенный для восстановления работоспособности нативного WireGuard.
- Jc — количество рандомных пакетов
- Jmin — минимальный размер рандомного пакета
| #!/bin/bash | |
| #Setting variables | |
| PARTITION=`mount | grep 'on / type' | cut -d" " -f1` | |
| DISK=${PARTITION::-1} | |
| echo "Disk: $DISK" | |
| ADDRESS=`ip -4 addr show eth0 | grep global | cut -d' ' -f 6 | head -n 1` | |
| echo "IPv4 address: $ADDRESS\n" | |
| GATEWAY=`ip -4 route list | grep default | cut -d' ' -f 3` | |
| echo "IPv4 gateway: $GATEWAY\n" | |
| ADDRESS6=`ip -6 addr show eth0 | grep global | grep inet6 | cut -d' ' -f 6 | head -n 1` |
Иногда провайдер/DPI распознаёт “первый” WireGuard handshake и начинает резать/душить соединение (часто выглядит как: handshake то появляется, то пропадает, либо “пакеты отправляются, но не приходят”).
Решение: перед включением туннеля отправить любой UDP-пакет на Endpoint с того же локального порта, который будет использовать WireGuard (ListenPort). Это “ломает” сигнатуру DPI на старте, и WireGuard обычно подключается стабильно.
| # User authentication method. Could be set multiple times and in | |
| # that case all should succeed. To enable multiple methods use | |
| # multiple auth directives. Available options: certificate, certificate[optional], | |
| # plain, pam. | |
| #auth = "certificate" | |
| #auth = "plain[./ocserv-passwd]" | |
| #auth = "pam" | |
| # This indicates that a user may present a certificate. When that option | |
| # is set, individual users or user groups can be forced to present a valid |
| # The Uncomplicated Firewall (ufw) is a frontend for iptables and is particularly well-suited for host-based firewalls. ufw provides a framework for managing netfilter, as well as a command-line interface for manipulating the firewall. | |
| # resources | |
| # https://wiki.ubuntu.com/UncomplicatedFirewall | |
| # IMPORTANT : add your own data or parameters, I make use of double segments [[ your variable ]]. eg. ssh root@[[ 96.172.44.11 ]] should be replaced with ssh root@888.88.88.88 where "888.88.88.88" is your value, variable etc. I have a habit of using ":::" to indicate line ending and end of paragraph, crazy I know but be warned its just how I write ::: All notes are for my own use & should you use any it's at your own risk, it's NOT a Tutorial ::: | |
| # Enable and configure Firewall - ufw | |
| # ufw firewall is installed by default on Ubuntu 12.04. gufw is a handy GUI frontends for ufw to manage the firewall. |
https://t.me/it_network_people/14/37692
🔥 Zapret на MikroTik!
Вчера это было невозможно, а сегодня это уже реальность!
После появления в 7.21beta2 модуля tproxy, который я просил через заявку добавить 14/Aug/25 для оптимизации работы сетевых сервисов в контейнерах я пошел таки проверил, а что еще нужно 'запрету', чтобы MikroTik сделал шаг в будущее!
Чуть подправил скрипт , чтобы лишний раз не бегал по клиентским пирам, которые подключаются к этому роутеру,
а только где роутер как клиент.
Работает убойно! Proton и Warp пробивает)
Upd.: увеличил время в фильтре до 2м30с как защита от ложных срабатываний у медленных подключений.
Считаю выполнение скрипта раз в 2 минуты средним нормальным значением.
Так же добавил в скрипт закомментированную строку с возможность исключения какого-либо wg интерфейса из проверки.
Если при выполнении скрипта на этапе генерации трафика выходит ошибка в лог, то:
выполнить команду /system/device-mode/print
| # Sample as to how to initialize s3 client to work with Minio API compatible - https://github.com/minio/minio | |
| # AWS CLI counterpart - https://docs.minio.io/docs/aws-cli-with-minio | |
| import boto3 | |
| s3 = boto3.resource('s3', | |
| endpoint_url='http://<minio_IP>:9000', | |
| config=boto3.session.Config(signature_version='s3v4') | |
| ) |
| package main | |
| import ( | |
| "crypto" | |
| "crypto/rand" | |
| "crypto/rsa" | |
| "crypto/sha256" | |
| "encoding/base64" | |
| "fmt" | |
| ) |