не использую sing-box, но всё равно оставлю примеры для xray
{
"dns": {
"disableFallback": true,
"servers": [
{
"address": "localhost",
//можно включить локальный дох так: "https+local://..."
"domains": [
"geosite:category-ru"
],
"queryStrategy": "UseIPv4",
"skipFallback": true
},
"https://..."
]
}
}
если ваш провайдер выдает ip6, то можно убрать queryStrategy, потому что в этом случае 6to4 тоннель не будет влиять на приоритеты системы и работоспособность сайтов с прямым доступом
inbound можно создать по аналогии с inbound для ip4 в режиме tproxy. примерно так
{
"inbounds": [
{
"tag": "ip6",
"listen": "::1",
"port": "<port>",
"protocol": "dokodemo-door",
"settings": {
"network": "tcp,udp",
"followRedirect": true
},
"streamSettings": {
"sockopt": {
"tproxy": "tproxy"
}
},
"sniffing": {
"enabled": true,
"destOverride": [
"http",
"tls",
"quic"
],
"routeOnly": true
}
}
]
}
дальше инструкция для linux. как настраивать винду, не знаю
нужно создать таблицу маршрутизации и правило по умолчанию для неё. делается по аналогии с tproxy для ip4
# ip -6 route add local default dev lo table 100
# ip -6 rule add fwmark 1 table 100
теперь добавим таблицу xray в nftables. делается по аналогии с tproxy для ip4
destroy table ip6 xray
define reserved = {
::/127,
fc00::/7,
fe80::/10,
ff00::/8
}
table ip6 xray {
chain prerouting {
type filter hook prerouting priority mangle; policy accept;
meta l4proto { tcp, udp } meta mark 1 tproxy ip6 to [::1]:<port>
}
chain output {
type route hook output priority mangle; policy accept;
meta skuid xray return
ip6 daddr $reserved tcp dport != 53 return
ip6 daddr $reserved udp dport != 53 return
meta l4proto { tcp, udp } meta mark set 1
}
}
инструкция meta skuid xray return будет работать, если xray поднимается под отдельным пользователем xray. если это не так, то можно пропускать нужный трафик по meta mark 0x000000ff return, но тогда в каждом outbound придётся указывать метку
"streamSettings": {
"sockopt": {
"mark": 255
}
}
всего этого хватит, чтобы пустить ip6 пакеты в тоннель, если на клиенте есть ip6
про винду не знаю, но в случае с linux без ip6 на клиенте этого не хватит, потому что в системе не будет ни одного маршрута по умолчанию для пакетов. это можно очень просто решить, если создать маршрут по умолчанию в lo
# ip -6 route add default dev lo
теперь 6to4 тоннель будет работать, хотя ip6 на клиенте отсутствует. значит, сайты типа ntc будут открываться, если xray включён, а сайты с прямым доступом будут резолвиться только в ip4, поэтому останутся доступны