Mikrotik + VLESS + REALITY

Да у меня тоже AX3, но это же не значит что не нужно пытаться оптимизировать) Ваш вариант контейнера bdpi 2в1 работает лучше двух отдельных, проверил. Почему-то при двух отдельных контейнерах была проблема с долгим первым хендшейком, возможно ipv6 маршрутизация чудила. Тут этой проблемы нет
З.Ы. на всякий случай entrypiont.sh с ipv6

#!/bin/sh

TUN="${TUN:-tun0}"
MTU="${MTU:-9000}"
IPV4="${IPV4:-198.18.0.1}"
IPV6="${IPV6:-fd08:198:18::1}"

MARK="${MARK:-438}"

SOCKS5_UDP_MODE="${SOCKS5_UDP_MODE:-udp}"
OTHER_ROUTE="${OTHER_ROUTE:-}"
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: '127.0.0.1'
  port: 1080
  udp: '${SOCKS5_UDP_MODE}'
  mark: ${MARK}
EOF
}

config_route() {
  echo "#!/bin/sh" > /route.sh
  chmod +x /route.sh
  echo "sysctl -w net.ipv6.conf.all.forwarding=1" >> /route.sh
  echo "ip rule add from all uidrange 1000-1000 lookup 110 pref 28000" >> /route.sh
  echo "ip -6 rule add from all uidrange 1000-1000 lookup 110 pref 28000" >> /route.sh
  echo "ip route flush table 110" >> /route.sh
  echo "ip -6 route flush table 110" >> /route.sh
  echo "ip route add default via $(ip route | awk '/default/ && /eth0/ {print $3}') dev eth0 metric 50 table 110" >> /route.sh
  echo "ip -6 route add 2000::/3 via $(ip -6 route | awk '/default/ && /eth0/ {print $3}') dev eth0 metric 50 table 110" >> /route.sh
  echo "ip route del default" >> /route.sh
  echo "ip -6 route del default" >> /route.sh
  echo "ip route add default via ${IPV4} dev ${TUN} metric 1" >> /route.sh
  echo "ip -6 route add 2000::/3 dev ${TUN} metric 1" >> /route.sh
  echo "ip route add default via $(ip route | awk '/default/ && /eth0/ {print $3}') dev eth0 metric 10" >> /route.sh
  echo "ip -6 route add 2000::/3 via $(ip -6 route | awk '/default/ && /eth0/ {print $3}') dev eth0 metric 10" >> /route.sh
  # exclude local network
  echo "ip route add 10.0.0.0/8 via $(ip route | awk '/default/ && /eth0/ {print $3}') dev eth0" >> /route.sh
  echo "ip route add 172.16.0.0/12 via $(ip route | awk '/default/ && /eth0/ {print $3}') dev eth0" >> /route.sh
  echo "ip route add 192.168.0.0/16 via $(ip route | awk '/default/ && /eth0/ {print $3}') dev eth0" >> /route.sh
  echo "${OTHER_ROUTE}" >> /route.sh
}

run() {
  config_file
  config_route
  echo "echo 1 > /success" >> /route.sh
  hev-socks5-tunnel /hs5t.yml &
  su - ciadpi -c "ciadpi $*"

}

run "$@" || exit 1

Ну и до кучи пусть будет конфига амнезии с ipv6
Тут соотв 172.21.0.1 и fd08:172:21::1 - адреса бриджа, к которому подключен контейнер

[Interface]
PrivateKey = Секрет
S1 = 0
S2 = 0
Jc = 4
Jmin = 40
Jmax = 70
H1 = 1
H2 = 2
H3 = 3
H4 = 4

# Add IP masquerading
PostUp = iptables -t nat -A POSTROUTING -o %i -j MASQUERADE
PostUp = ip6tables-legacy -t nat -A POSTROUTING -o %i -j MASQUERADE
# Del IP masquerading
PostDown = iptables -t nat -D POSTROUTING -o %i -j MASQUERADE
PostDown = ip6tables-legacy -t nat -D POSTROUTING -o %i -j MASQUERADE

# exclude local networks
PreUp = ip route add 10.0.0.0/8 via 172.21.0.1 dev eth0
PreUp = ip route add 172.16.0.0/12 via 172.21.0.1 dev eth0
PreUp = ip route add 192.168.0.0/16 via 172.21.0.1 dev eth0

#IPV6 packet forwarding
PreUp = sysctl -w net.ipv6.conf.all.forwarding=1

# Here is the IP of the Endpoint
PreUp = echo '162.159.192.1 engage.cloudflareclient.com' >> /etc/hosts
PreUp = echo '2606:4700:d0::a29f:c001 engage.cloudflareclient.com' >> /etc/hosts
PreUp = ip route add 162.159.192.1 via 172.21.0.1 dev eth0
PreUp = ip -6 route add 2606:4700:d0::a29f:c001 via fd08:172:21::1 dev eth0
PreDown = ip -6 route del 2606:4700:d0::a29f:c001 via fd08:172:21::1 dev eth0

MTU = 1280
Address = 172.16.0.2, Секрет(уникальный ipv6 адрес)
DNS = 1.1.1.1, 2606:4700:4700::1111, 1.0.0.1, 2606:4700:4700::1001

[Peer]
PublicKey = Секрет
AllowedIPs = 0.0.0.0/1, 128.0.0.0/1, 2000::/3
#AllowedIPs = 0.0.0.0/0, ::/0
#privileged: true 
PersistentKeepalive = 25
Endpoint = engage.cloudflareclient.com:2408

И что-то amnesia-wg на некротике вчера ночью сдохла. Насмерть. Не работает ни через через ipv6, ни через ipv4 эндпоинты. На телефоне при этом подключается. Перебор Jc, Jmin, Jmax тоже особо не спасает. РТК Москва

Нашёл совершенно прекрасный вариант amnesia-wg

Одинокий бинарь, который поднимает socks proxy и коннектится к подложенному конфигу. Аналогично bdpi вообще ни от чего не зависит, можно собрать в контейнер, содержащий только его
Сборочный скрипт:

#!/bin/bash
DISTR_WIREPROXY_AWG="https://github.com/artem-russkikh/wireproxy-awg/releases/latest/download/wireproxy_linux_arm64.tar.gz"

rm wireproxy
echo > awg.conf
wget $DISTR_WIREPROXY_AWG -O - | tar -xzf -
chmod +x wireproxy
if [ -e wireproxy ]; then
	echo "AWG OK"
else
	echo "Unable to prepare AWG. Exiting"
	exit 0
fi

echo 'FROM scratch
COPY wireproxy awg.conf /
ENTRYPOINT ["/wireproxy -c /awg.conf"]' > Dockerfile

docker build --rm -t wireproxy_awg .
docker save wireproxy_awg:latest -o wireproxy_awg.tar
docker image rm wireproxy_awg:latest

В некротике нужно прописать будет руками entrypoint, сам не подхватывает
(а энтрипоинт соотв /wireproxy -c /awg.conf)
В конфиге можно прописывать значения через переменные окружения, напр. можно передавать эндпоинт того же WARP-а, а потом перебирать их скриптом, если совсем будет затыкаться.
Есть ливнес пробы и метрики, есть почти нормальные логи, короче мне нравится

UPD
Если вдруг кто-то себе настраивал xray-core как траспорт из wireguard во VLESS и прочие протоколы(когда на входе поднимается wireguard inbound и правилами маршрутизации заворачивается в соответствующий outbound) - не обновляйтесь на последнюю версию.
Они сломали маршрутизацию по тегам для wireguard инбаундов

Спасибо за этот интерес!
ax2 лишили USB :frowning:

Добрый день, установил ваш контейнер, добавил конфигурацию, запустил. Контейнер в состоянии running, но в админке x3-ui не видно, что клиент онлайн. И соответственно ничего не работает.

Ну что я могу сказать, ищите где ошиблись.

Добрый день! Не подскажите текущие команды для байдипиай? Запустил по вашим мануалам на ax2 контейнер в RAM, все работает кроме инсты и ютюба. Спасибо за труды!

Найдите здесь на форуме GoodCheck скрипт и проверьте какая команда вам подойдет
либо ищите в обсуждениях проекта на гитхабе примеры от других пользователей

https://raw.githubusercontent.com/romanvht/ByeDPIAndroid/refs/heads/master/app/src/main/assets/proxytest_cmds.txt

Может подскажите, как этими регулярными выражениями правильно пользоваться?
Если я хочу, чтобы все что в зоне .ru или .su резолвилось сервером 77.88.8.8, думаю сработает .*\.(ru|su)$
Как то же самое для .рус и .рф сделать? Я не уверен, что там допустимо кириллицу указывать.

Для таких случаев придумали punycode - Punycode Converter

Привет. Подскажи как ты настроил sing-box на orange pi ?
мой кейс: orange pi5 plus (с 2мя eth портами)
на нее поставил debian с официального сайта Orange Pi - Orangepi
Linux orangepi5plus 6.1.43-rockchip-rk3588 #1.0.8 SMP Sat Feb 3 00:04:38 CST 2024 aarch64 GNU/Linux
Настроил конфиг, который работает на android версии sing-box. А вот на апельсинке при запуске пишет ошибку

orangepi@orangepi5plus:~$ sudo -E /usr/bin/sing-box run -c /etc/sing-box/config.json
INFO[0000] router: updated default interface enP4p65s0, index 2
FATAL[0000] start service: initialize inbound/tun[tun-in]: configure tun interface: cleanup rules: operation not supported

в инете нарыл закрытый issue на github проекта, где юзер описал, что это недоработка чего-то в ядре линукса (конкретно для этого дебиана), не заданы какие-то параметры по умолчанию в ядре, и поэтому не может запуститься, но разработчик singbox закрыл issue, написав что не будет фиксить баг.
Подскажи какая ОС у тебя стоит на апельсинке, какая версия singbox и откуда качал

Привет! У меня орандж пи на скрине прикрепил. sing-box ставил с сайта Package Manager - sing-box попробуй поставить отсюда. Он еще очень капризный к конфигу. У меня он запущен в режиме tun.

А можешь подробнее написать откуда качал дистрибутив и какая у тебя железка?
Зашел на сайт armbian я вижу, что есть поддержка Orange Pi 5 and 5B. Надеюсь, что мою 5 Plus тоже поддерживает. И не пойму какую ставить операционку: Bookworm или Noble Gnome. Уффф. Можно подробнее плиз
И по поводу singbox, ты дал ссылку на тэг Problematic Sources, ты прям с исходников ее компилил или через репозиторий\ручную установку ставил?

Я скачивал образ для своей по вот этой ссылке, там лежит Pi hole on the Orange Pi — Яндекс Диск. Попробуй его накатить на флешку. Если все заведется, то первичная настройка системы, потом вводишь команду bash <(curl -fsSL https://sing-box.app/deb-install.sh). Если не покатит, то
sudo curl -fsSL https://sing-box.app/gpg.key -o /etc/apt/keyrings/sagernet.asc
sudo chmod a+r /etc/apt/keyrings/sagernet.asc
echo “deb [arch=dpkg --print-architecture signed-by=/etc/apt/keyrings/sagernet.asc] https://deb.sagernet.org/ * *” |
sudo tee /etc/apt/sources.list.d/sagernet.list > /dev/null
sudo apt-get update
sudo apt-get install sing-box # or sing-box-beta
Это все с предыдущей ссылки, потому что я уже давненько это делал, на память уже не помню.Еще раз ссылка, установка из репозитариев

Такая же проблема -контейнер работает, но в x3-ui пользователь оффлайн. Не нашли в чем у вас была ошибка?

интересный мануал, но не могу понять где теряю связь с ним ибо в начале создаётся veth c именем xray_eth а по итогу в мануале контейнер поднимается на veth1 которого и нету пока что.

Очепятался наверное. Сами понимаете, пишется с живого конфига, который на ходу причёсывается.
Можете ещё тут посмотреть. В некотором смысле - версия дополненная и расширенная

Довольно интересно шайтан машина работает, поднимал соединение до AWG и до панели x-ui и заметил такую вещь что у меня статус канала offline или inactive, но до того момента как микрот что то не кинет в тоннель то сразу поднимает в активный потом опять в статусе падает в inctive со стороны сервака.

так и работает vless, но все почему-то удивляются, хотя привыкли что подключаются на какой-то активной системе где сразу идут какие-то запросы на сервер поэтому и сразу видна активность