Задать вопрос

Xray/Vless/XTLS как сделать проброс родного ip, если это ru сайт?

Есть конфиг:

{
  "log": {
    "loglevel": "info"
  },
  "routing": {
    "domainStrategy": "IPIfNonMatch",
    "rules": [
      {
        "type": "field",
        "user": ["Name0", "Name1"],
        "outboundTag": "group1"
      },
      {
        "type": "field",
        "user": ["Name2", "Name3"],
        "outboundTag": "group2"
      },
      {
        "type": "field",
        "domain": ["geosite:category-ads-all"],
        "outboundTag": "block"
      },
      {
        "type": "field",
        "ip": ["geoip:ru"],
        "outboundTag": "block"
      }
    ]
  },
  "inbounds": [
    {
      "listen": "0.0.0.0",
      "port": 443,
      "protocol": "vless",
      "settings": {
        "clients": [
          {
            "email": "Name0",
            "id": "14e44b7a-dedc-43b8-a9aa-c44edjsjdbdbd",
            "flow": "xtls-rprx-vision"
          },
          {
            "email": "Name1",
            "id": "13f16509-e3c7-473rjjdjsnsn-e73f536071ce",
            "flow": "xtls-rprx-vision"
          },
          {
            "email": "Name2",
            "id": "f3834487-f6b9-4djjdjsjsj3e99df5d637c",
            "flow": "xtls-rprx-vision"
          },
          {
            "email": "Name3",
            "id": "03ed9db6-778c-4377-a:)₽:₽:!djjd",
            "flow": "xtls-rprx-vision"
          }
        ],
        "decryption": "none"
      },
      "streamSettings": {
        "network": "tcp",
        "security": "reality",
        "realitySettings": {
          "show": false,
          "dest": "github.com:443",
          "xver": 0,
          "serverNames": ["github.com", "www.github.com"],
          "PrivateKey":”private”,
          "minClientVer": "",
          "maxClientVer": "",
          "maxTimeDiff": 0,
          "shortIds": ["12c7650jrjdj"]
        }
      },
      "sniffing": {
        "enabled": true,
        "destOverride": ["http", "tls"]
      }
    }
  ],
  "outbounds": [
    {
      "protocol": "freedom",
      "tag": "group1",
      "sendThrough": "first_ip" 
    },
    {
      "protocol": "freedom",
      "tag": "group2",
      "sendThrough": "second_ip”
    },
    {
      "protocol": "freedom",
      "tag": "direct"
    },
    {
      "protocol": "blackhole",
      "tag": "block"
    }
  ],
  "policy": {
    "levels": {
      "0": {
        "handshake": 3,
        "connIdle": 180
      }
    }
  }
}


Всё работает, за исключением того, что когда я иду на ru ip анализатор, он выдаёт ip сервера, а я хочу, чтобы весь ru трафик шёл напрямую, знаю, что могу это сделать со стороны клиента, но мне нужно это сделать именно на серверной части.
  • Вопрос задан
  • 3883 просмотра
Подписаться 6 Простой Комментировать
Пригласить эксперта
Ответы на вопрос 4
@Drno
никак. это делается со стороны клиента, потому что это прокси, у него нет способов маршрутизации, кроме как на клиенте
Ответ написан
@VadimBoev
Правила маршрутизации обрабатываются сверху вниз, и как только одно из них совпадает, оно применяется, а остальные игнорируются.
Поэтому, надо менять порядок правил в "routing".
Но, лучше всего это делать на стороне клиента. Потому что получается что трафик идёт от юзера за границу, потом возвращается обратно, что получается затратно. Но, как мера предосторожности - хорошо

Чтобы исправить это, нужно перенести правило с "ip": ["geoip:ru"] выше правил, основанных на юзерах. Это обеспечит, что весь трафик, идущий на российские IP, будет перехвачен и обработан по правилу "block" (которое направляет его в "blackhole") или "direct" (если захочешь его перенаправить напрямую), до того как будут рассмотрены правила для конкретных юзеров.

Попробуй:
{
  "log": {
    "loglevel": "info"
  },
  "routing": {
    "domainStrategy": "IPIfNonMatch",
    "rules": [
      {
        "type": "field",
        "ip": ["geoip:ru"],
        "outboundTag": "direct"
      },
      {
        "type": "field",
        "domain": ["geosite:category-ads-all"],
        "outboundTag": "block"
      },
      {
        "type": "field",
        "user": ["Name0", "Name1"],
        "outboundTag": "group1"
      },
      {
        "type": "field",
        "user": ["Name2", "Name3"],
        "outboundTag": "group2"
      }
    ]
  },
  "inbounds": [
    {
      "listen": "0.0.0.0",
      "port": 443,
      "protocol": "vless",
      "settings": {
        "clients": [
          {
            "email": "Name0",
            "id": "14e44b7a-dedc-43b8-a9aa-c44edjsjdbdbd",
            "flow": "xtls-rprx-vision"
          },
          {
            "email": "Name1",
            "id": "13f16509-e3c7-473rjjdjsnsn-e73f536071ce",
            "flow": "xtls-rprx-vision"
          },
          {
            "email": "Name2",
            "id": "f3834487-f6b9-4djjdjsjsj3e99df5d637c",
            "flow": "xtls-rprx-vision"
          },
          {
            "email": "Name3",
            "id": "03ed9db6-778c-4377-a:)₽:₽:!djjd",
            "flow": "xtls-rprx-vision"
          }
        ],
        "decryption": "none"
      },
      "streamSettings": {
        "network": "tcp",
        "security": "reality",
        "realitySettings": {
          "show": false,
          "dest": "github.com:443",
          "xver": 0,
          "serverNames": ["github.com", "www.github.com"],
          "privateKey": "private",
          "minClientVer": "",
          "maxClientVer": "",
          "maxTimeDiff": 0,
          "shortIds": ["12c7650jrjdj"]
        }
      },
      "sniffing": {
        "enabled": true,
        "destOverride": ["http", "tls"]
      }
    }
  ],
  "outbounds": [
    {
      "protocol": "freedom",
      "tag": "group1",
      "sendThrough": "first_ip" 
    },
    {
      "protocol": "freedom",
      "tag": "group2",
      "sendThrough": "second_ip"
    },
    {
      "protocol": "freedom",
      "tag": "direct"
    },
    {
      "protocol": "blackhole",
      "tag": "block"
    }
  ],
  "policy": {
    "levels": {
      "0": {
        "handshake": 3,
        "connIdle": 180
      }
    }
  }
}
Ответ написан
@Kuddesnik
Как вариант, тебе нужно арендовать сервер/прокси в РФ и туда перенаправлять все что попадает под geoip:ru.
Но в таком случае трафик будет ходить по ооочень не оптимальному маршруту - клиент -> сервер не в РФ -> сервер в РФ -> целевой РФ сайт.
Ответ написан
Комментировать
0ralo
@0ralo
Python backend developer
Как писали выше, пробросить айпи клиента через прокси нельзя. Для сокрытия факта использования прокси(именно своего) ответственность чваливают на варп. В конфиге в правилах надо добавить
{
        "type": "field",
        "ip": [
          "geoip:ru"
        ],
        "outboundTag": "warp"
      },
      {
        "type": "field",
        "domain": [
          "gesite:ru"
        ],
        "outboundTag": "warp"
      },.... я еще по доменным зонам смотрю


и сам инбаунд добавить варпа

Проверять удобно на 2ip.io / 2ip.ru
На ру должен быть адрес варпа, на io - сервера прокси
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы