Перейти к содержанию

avn

Участники форума
  • Постов

    684
  • Зарегистрирован

  • Посещение

  • Победитель дней

    7

Сообщения, опубликованные avn

  1. 8 минут назад, Neytrino сказал:

    avn, с random проблем нет (кроме того, что он не делает то что мне нужно). У меня не работает с leastPing, а у вас - работает (как вы выше написали)... Вот и хотелось бы понять - в чём проблема...

    В приведённой (моей) конфигурации вы ошибки видите?

    Я пытаюсь выяснить, что не работает? Изначальный вопрос был про балансировку ("Подскажите пожалуйста, предположим xray сконфигурирован так что у него несколько внешних vless соединений.  Возможно ли сделать так что разные устройства в локалке шли бы на разные внешние vless сервера? Это возможно сделать на политике или надо разруливать по другому?"). Сформулируйте свою мысль, что хотите непонятно. Все работает, в том числе и с leastPing

  2. 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"
    		}
    	]
    }

     

  3. 48 минут назад, Neytrino сказал:

    avn, Нет никакой ошибки, просто через прокси ничего не открывается...

    Вставьте предложенные вами настройки в свой роутинг, и посмотрите - что будет. Если оно будет работать - значит косяк у меня, а если не будет - это будет поводом задуматься...

    А что Вы просто взяли и вставили к себе без модификации?

  4. 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
    }
  5. 8 минут назад, Vladislav Kravchenko сказал:

    Т.е., правильно ли я понимаю, что необходимо сделать АААА запись и указать ее в качестве EndPoint в настойках WG? А не просто ввести IP-адрес в квадратных скобках?

    Вот пост от 22 года, там уже коннект по ipv6

     

    image.png.66cf188cd5fc43f309b4786bf72a96b0.png

     

     

    • Лайк 1
  6. 1 минуту назад, Vladislav Kravchenko сказал:

    Т.е., правильно ли я понимаю, что необходимо сделать АААА запись и указать ее в качестве EndPoint в настойках WG? А не просто ввести IP-адрес в квадратных скобках?

    Точно так.

    • Спасибо 1
  7. 1 минуту назад, Vladislav Kravchenko сказал:

    Через web-интерфейс или CLI?

    Необходимо уточнение.

    Через dns. Можно как локальный использовать, так и глобальный, разницы нету.

  8. 1 час назад, Vladislav Kravchenko сказал:

    Друзья, вопрос.

    В актуальных прошивках уже есть возможность в Wireguard указать Endpoint указать в виде IPv6 адреса? Или это все пока фантастика, доступная лишь исконным китайским производителям.

    В инструкции по CLI ясного ответа на этот вопрос нет.

     

    PS. Задача, собственно, соединить локальные сети с белыми IPv6 и серыми IPv4. Банальщина.

     

     

    Так ещё с 3.6 работает.

    • Спасибо 1
  9. 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
  10. В 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
  11. В 18.08.2024 в 01:44, German Ко сказал:

    Доброй ночи ,  в чем преимущество перед ant*pret  на своем vps ? Есть ли смысл переезжать .

    Сложно сказать.

    kvas отлично работает с приложениями, у которых идет в порт (shadowsocks, xray, и т.д.). Но в тоже самое время у него костыльная (сложная, ненадежная) маршрутизация на впн серверы.

    У анти* свой днс сервис, который выдает фейк-адреса из определенной локальной сети на блокресурсы. Отсюда простая маршрутизация (надежная, работает и на самом роутере) на блокресурсы обычным и единственным маршрутом. Но он не работает c shadosocks, xray и т.д.

     

    • Лайк 1
  12. 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 байт.

  13. Добрый день!

    Для нормальной работы 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
×
×
  • Создать...

Важная информация

На этом сайте используются файлы cookie. Нажимая "Я принимаю" или продолжая просмотр сайта, вы разрешаете их использование: Политика конфиденциальности.