-
Постов
684 -
Зарегистрирован
-
Посещение
-
Победитель дней
7
Тип контента
Профили
Форумы
Галерея
Загрузки
Блоги
События
Сообщения, опубликованные avn
-
-
Скрытый текст
А дальше надо почитать о balancerTag
-
26 минут назад, Neytrino сказал:
Хорошо, давайте разбираться (если вы конечно не против), где у меня косяк... (если я ничего не путаю, балансер раз в минуту пингует указанный url через выходные подключения из списка и выбирает то из них, у которого пинг будет меньше)...
{ "routing": { "balancers": [ { "tag": "reservation", "selector": [ "vps1", "vps2" ], "strategy": { "type": "leastPing" }, "fallbackTag": "vps1" } ], "observatory": { "subjectSelector": [ "vps1", "vps2" ], "probeURL": "https://www.google.com/generate_204", "probeInterval": "60s", "enableConcurrency": false }, "rules": [
и дальше мои правила...
А где вопрос? Достаточно так:
{ "balancers": [ { "tag": "random-balancer", "selector": [ "vpn1", "vpn2" ], "strategy": { "type": "random" }, "fallbackTag": "vpn1" } ] }
-
6 минут назад, avn сказал:
А что Вы просто взяли и вставили к себе без модификации?
Все работает.
-
48 минут назад, Neytrino сказал:
avn, Нет никакой ошибки, просто через прокси ничего не открывается...
Вставьте предложенные вами настройки в свой роутинг, и посмотрите - что будет. Если оно будет работать - значит косяк у меня, а если не будет - это будет поводом задуматься...
А что Вы просто взяли и вставили к себе без модификации?
-
12 минуты назад, Neytrino сказал:
avn, у меня чавой-то не работает:( Может вы проверите?
Мало информации, что за ошибка?
-
6 минут назад, Neytrino сказал:
А у вас эта прелесть работает?
Она в документации описана, значит работает.
-
- Популярный пост
- Популярный пост
Добрый день!
Прошу добавить возможность резолва ip-адресов в ipset.
Делаем новую настройку ipset, например:
ipset ipset1 ya.ru goole.ru !
Запросы к dns-серверу, которые идут на домены и поддомены настройки ipset1 резолвятся в ipset1.
Это позволит убрать для многих dnsmasq и adguardhome с роутера и использовать штатный dns-server.
Уважаемые разработчики, что скажете на предложение?
-
11
-
8 минут назад, Andrey Zubov сказал:
кстати весьма красивая идея, спасибо. я все больше склонялся к мысли разруливать роутингом по ip источника, но это решение как бы никак не связано с ui и все надо будет делать руками если вдруг понадобится перекидывать устройства между разными прокси.
"balancers": [ { "tag": "balancer", "selector": [ "portal-1", "portal-2", "portal-3" ], "strategy": { "type": "leastPing" }, "fallbackTag": "portal-2" } ], "observatory": { "subjectSelector": [ "portal-1", "portal-2", "portal-3" ], "probeURL": "https://www.google.com/generate_204", "probeInterval": "60s", "enableConcurrency": false }
-
-
Спасибо. Обязательно попробую и посмотрю различия в транспорте.
-
Вот еще одна реализация, правда опять на go. Может станет понятнее.
-
8 минут назад, Vladislav Kravchenko сказал:
Т.е., правильно ли я понимаю, что необходимо сделать АААА запись и указать ее в качестве EndPoint в настойках WG? А не просто ввести IP-адрес в квадратных скобках?
Вот пост от 22 года, там уже коннект по ipv6
-
1
-
-
1 минуту назад, Vladislav Kravchenko сказал:
Т.е., правильно ли я понимаю, что необходимо сделать АААА запись и указать ее в качестве EndPoint в настойках WG? А не просто ввести IP-адрес в квадратных скобках?
Точно так.
-
1
-
-
1 минуту назад, Vladislav Kravchenko сказал:
Через web-интерфейс или CLI?
Необходимо уточнение.
Через dns. Можно как локальный использовать, так и глобальный, разницы нету.
-
1 час назад, Vladislav Kravchenko сказал:
Друзья, вопрос.
В актуальных прошивках уже есть возможность в Wireguard указать Endpoint указать в виде IPv6 адреса? Или это все пока фантастика, доступная лишь исконным китайским производителям.
В инструкции по CLI ясного ответа на этот вопрос нет.
PS. Задача, собственно, соединить локальные сети с белыми IPv6 и серыми IPv4. Банальщина.
Так ещё с 3.6 работает.
-
1
-
-
К примеру VPN-ipv6 у меня сейчас не работает, опять чего то сломали. Перейду на 4.2 буду разбираться.
-
TProxy
Скрытый текст#!/bin/sh [ "$type" != "iptables" -a "$type" != "ip6tables" ] && exit 0 [ "$table" != "mangle" ] && exit 0 ipt4() { if ! iptables -C "$@" &>/dev/null; then iptables -w -A "$@" || exit 0 fi } ipt6() { if ! ip6tables -C "$@" &>/dev/null; then ip6tables -w -A "$@" || exit 0 fi } ipt() { local F=ipt4 [ "$type" == "iptables" ] || F=ipt6 "$F" "$@" } # XRay TABLE_ID=233 MARK_PROXY=233 MARK_DONE=234 PROXY_PORT=9172 if [ "$type" == "iptables" ]; then PROXY_IP=127.0.0.1 EXCLUDE_IPSET=localnet4 IPSET=unblock4-ssp IPFAMILY=4 else PROXY_IP=::1 EXCLUDE_IPSET=localnet6 IPSET=unblock6-ssp IPFAMILY=6 fi; ip -$IPFAMILY route add local default dev lo table ${TABLE_ID} 2>/dev/null ip -$IPFAMILY route show table main |grep -Ev ^default |while read ROUTE; do ip -$IPFAMILY route add table ${TABLE_ID} $ROUTE 2>/dev/null; done ip -$IPFAMILY rule add fwmark ${MARK_PROXY} table ${TABLE_ID} priority ${TABLE_ID} 2>/dev/null ipt PREROUTING -t mangle -p tcp -m set --match-set ${IPSET} dst -m set ! --match-set ${EXCLUDE_IPSET} dst -m mark ! --mark ${MARK_DONE} -j TPROXY --tproxy-mark ${MARK_PROXY}/${MARK_PROXY} --on-ip ${PROXY_IP} --on-port ${PROXY_PORT} ipt PREROUTING -t mangle -p udp -m set --match-set ${IPSET} dst -m set ! --match-set ${EXCLUDE_IPSET} dst -m mark ! --mark ${MARK_DONE} -j TPROXY --tproxy-mark ${MARK_PROXY}/${MARK_PROXY} --on-ip ${PROXY_IP} --on-port ${PROXY_PORT} ipt OUTPUT -t mangle -p tcp -m set --match-set ${IPSET} dst -m set ! --match-set ${EXCLUDE_IPSET} dst -m mark ! --mark ${MARK_DONE} -j MARK --set-mark ${MARK_PROXY} ipt OUTPUT -t mangle -p udp -m set --match-set ${IPSET} dst -m set ! --match-set ${EXCLUDE_IPSET} dst -m mark ! --mark ${MARK_DONE} -j MARK --set-mark ${MARK_PROXY} exit 0
-
2
-
-
В 19.08.2024 в 14:10, Zeleza сказал:
Доброго дня
Может сможете помочь с костылями?)
Буду рад любой помощи профессионалов в этом вопросе.Это проблема всего кинетика. Плохая работа цепочек, постоянная их перечитка по несколько раз (в момент перечитки, что происходит с трафиком). Так что подход для anti* выглядит более правильным для кинетика.
Я сейчас отказался от цепочек. Переписал все на минимум правил, как для VPN, так и для tproxy.
Для VPN:
Скрытый текст#!/bin/sh [ "$type" != "iptables" -a "$type" != "ip6tables" ] && exit 0 [ "$table" != "mangle" ] && exit 0 ipt4() { if ! iptables -C "$@" &>/dev/null; then iptables -w -A "$@" || exit 0 fi } ipt6() { if ! ip6tables -C "$@" &>/dev/null; then ip6tables -w -A "$@" || exit 0 fi } ipt() { local F=ipt4 [ "$type" == "iptables" ] || F=ipt6 "$F" "$@" } # VPN if [ "$type" == "iptables" ]; then EXCLUDE_IPSET=localnet4 IPSET=unblock4-vpn else EXCLUDE_IPSET=localnet6 IPSET=unblock6-vpn fi; json=`curl -kfsS http://localhost:79/rci/show/ip/policy 2>/dev/null | jq -r '.[] | select(.description == "Unblock-VPN")'` xt_mark=`echo $json | jq -r '.mark'` xt_table=`echo $json | jq -r '.table4'` xt_iface=`ip -4 route show table ${xt_table} | awk '/default/ { print $3 }'` ipt PREROUTING -t mangle -i br0 -m set --match-set ${IPSET} dst -m set ! --match-set ${EXCLUDE_IPSET} dst -m conntrack --ctstate NEW -j CONNMARK --set-mark 0x${xt_mark} ipt OUTPUT -t mangle -o eth3 -m set --match-set ${IPSET} dst -m set ! --match-set ${EXCLUDE_IPSET} dst -m conntrack --ctstate NEW -j CONNMARK --set-mark 0x${xt_mark} ipt PREROUTING -t mangle -m connmark --mark 0x${xt_mark} -j CONNMARK --restore-mark ipt OUTPUT -t mangle -m connmark --mark 0x${xt_mark} -j CONNMARK --restore-mark exit 0
-
1
-
-
В 18.08.2024 в 01:44, German Ко сказал:
Доброй ночи , в чем преимущество перед ant*pret на своем vps ? Есть ли смысл переезжать .
Сложно сказать.
kvas отлично работает с приложениями, у которых идет в порт (shadowsocks, xray, и т.д.). Но в тоже самое время у него костыльная (сложная, ненадежная) маршрутизация на впн серверы.
У анти* свой днс сервис, который выдает фейк-адреса из определенной локальной сети на блокресурсы. Отсюда простая маршрутизация (надежная, работает и на самом роутере) на блокресурсы обычным и единственным маршрутом. Но он не работает c shadosocks, xray и т.д.
-
1
-
-
7 часов назад, Le ecureuil сказал:
Я правильно понял, что нужно три байта подствлять в message_header при отправке, и все?
Да, правильно. Но надо помнить, что эти изменения только стороны клиента (не сервера). Также при коннекте клиентом, они их еще и зануляют.
func (bind *netBindClient) connectTo(endpoint *netEndpoint) error { ...... i, err := c.Read(v.buff) if i > 3 { v.buff[1] = 0 v.buff[2] = 0 v.buff[3] = 0 }
Вообще, если смотреть конфиг WARP в оригинале, запрошенный через api, то он выглядит так
Скрытый текст{ "id": "79647", "type": "a", "model": "PC", "name": "FDF5F5", "key": "v9NMcOaNTFw=", "account": { "id": "6714a5c", "account_type": "limited", "created": "2022-12-18T09:54:43.491648Z", "updated": "2024-07-30T12:12:54.223368Z", "premium_data": 139000000000, "quota": 139000000000, "warp_plus": true, "referral_count": 139, "referral_renewal_countdown": 0, "role": "child", "license": "87zW", "ttl": "2024-10-28T12:12:54.047402Z" }, "config": { "client_id": "LHJ3", "peers": [ { "public_key": "bmVo51h2wPfgyo=", "endpoint": { "v4": "188.114.99.229:0", "v6": "[2606:4700:d1::a29f:c30a]:0", "host": "engage.cloudflareclient.com:2408", "ports": [ 854, 859, 864, 878, 880, 890, 891, 894, 903, 908, 928, 934, 939, 942, 943, 945, 946, 955, 968, 987, 988, 1002, 1010, 1014, 1018, 1070, 1074, 1180, 1387, 1843, 2371, 2506, 3138, 3476, 3581, 3854, 4177, 4198, 4233, 5279, 5956, 7103, 7152, 7156, 7281, 7559, 8319, 8742, 8854, 8886 ] } } ], "interface": { "addresses": { "v4": "172.16.0.2", "v6": "2606:4700:110:822e:3e0" } }, "services": { "http_proxy": "172.16.0.1:2480" } }, "warp_enabled": false, "waitlist_enabled": false, "created": "2022-12-18T09:54:43.039543Z", "updated": "2024-08-15T13:45:10.034331432Z", "tos": "2022-12-18T09:54:41.536765Z", "place": 0, "locale": "en-US", "enabled": true, "install_id": "", "fcm_token": "" }
Здесь client_id - это "client_id": "LHJ3". Но китайцы раскладывают его на массив из 3 байт.
-
-
Добрый день!
Для нормальной работы warp на keenetic хотелось бы реализовать возможность влиять на поле Reserved структуры message_header.
По аналогии с командой asc
interface {name} wireguard warp {b1} {b2} {b3}
У китайцев в Xray-Core получилось это сделать правкой двух методов Xray-core-main\proxy\wireguard\bind.go:
func (bind *netBindClient) connectTo(endpoint *netEndpoint) error { c, err := bind.dialer.Dial(bind.ctx, endpoint.dst) if err != nil { return err } endpoint.conn = c go func(readQueue <-chan *netReadInfo, endpoint *netEndpoint) { for { v, ok := <-readQueue if !ok { return } i, err := c.Read(v.buff) if i > 3 { v.buff[1] = 0 v.buff[2] = 0 v.buff[3] = 0 } v.bytes = i v.endpoint = endpoint v.err = err v.waiter.Done() if err != nil && errors.Is(err, io.EOF) { endpoint.conn = nil return } } }(bind.readQueue, endpoint) return nil } func (bind *netBindClient) Send(buff [][]byte, endpoint conn.Endpoint) error { var err error nend, ok := endpoint.(*netEndpoint) if !ok { return conn.ErrWrongEndpointType } if nend.conn == nil { err = bind.connectTo(nend) if err != nil { return err } } for _, buff := range buff { if len(buff) > 3 && len(bind.reserved) == 3 { copy(buff[1:], bind.reserved) } if _, err = nend.conn.Write(buff); err != nil { return err } } return nil }
Тестовый конфиг можно получить так:
bash -c "$(curl -L warp-reg.vercel.app)"
Может и нам можно добавить этот функционал?
-
2
-
-
1 час назад, Scopuli сказал:
А как это настраивать?
junk_packet_count; junk_packet_min_size; junk_packet_max_size; init_packet_junk_size; response_packet_junk_size; init_packet_magic_header; response_packet_magic_header; cookie_packet_magic_header; transport_packet_magic_header;
-
1
-
1
-
-
5 минут назад, Kazantsev сказал:
поясните, что в логе adguard не так? с dns проблемы?
ipv6 у Вас отвалился.
Xkeen
в Каталог готовых решений Opkg
Опубликовано
Я пытаюсь выяснить, что не работает? Изначальный вопрос был про балансировку ("Подскажите пожалуйста, предположим xray сконфигурирован так что у него несколько внешних vless соединений. Возможно ли сделать так что разные устройства в локалке шли бы на разные внешние vless сервера? Это возможно сделать на политике или надо разруливать по другому?"). Сформулируйте свою мысль, что хотите непонятно. Все работает, в том числе и с leastPing