Здраствуйте.
Нужна помощь сетевых богов. У меня есть пару десятков клиентов OpenVPN, которые используют его для доступа в рабочую локалку и получают через него определенные маршруты (push route x.x.x.x 255.255.255.255)
С тех пор как наши западные партнеры стали блокировать подключения с IP-адресов РФ надо еще и прикидываться нероссийскими пользователями для условного microsoft.com, типикал кейс.
В общем, задумка следующая, OpenVPN остается для доступа в локалку и прочим рабочим серверам, Sing-Box используется для доступа к запрещенке и всё на одной машине, работают параллельно.
Конфиг Sing-Box следующий
{
"log": {
"level": "debug"
},
"inbounds": [
{
"tag": "tun-in",
"type": "tun",
"interface_name": "tun10",
"inet4_address": "172.16.250.1/30",
"auto_route": true,
"inet4_route_exclude_address": [
"192.168.222.0/24",
"192.168.96.0/20"
],
"strict_route": false,
"sniff": true,
"domain_strategy": "prefer_ipv4"
}
],
"outbounds": [
{
"type": "direct",
"tag": "direct-out"
},
{
"tag": "canada-02-out",
"type": "vless",
"server": "x.x.x.x",
"server_port": 443,
"uuid": "xxxxxxxxxxxxxxxxxxxxxxxxx",
"flow": "xtls-rprx-vision",
"tls": {
"enabled": true,
"insecure": false,
"server_name": "linux.org",
"utls": {
"enabled": true,
"fingerprint": "chrome"
},
"reality": {
"enabled": true,
"public_key": "xxxxxxxxxxxxxxxxxxxxxxxxx",
"short_id": "xxxxxxxxxxxxxxxxxxxxxxxxx"
}
}
}
],
"route": {
"rules": [
{
"domain": [
"ifconfig.co",
"rutracker.org",
"eth0.me"
],
"domain_suffix": [
".atlassian.net",
".atlassian.com",
".rutracker.org",
".eth0.me"
],
"outbound": "canada-02-out"
}
],
"final": "direct-out",
"auto_detect_interface": true
}
}
Проблем несколько:
-
я не до конца понимаю, как работает outbound direct
Пример. OpenVPN пушит роут на 1.2.3.4, который имеет имя site1.example.com через свой туннель. 1.2.3.4 пускает на себя только если трафик идет через туннель (в ACL allow OpenVPN address). По идее конфиг Sing-Box этот адрес должен пустить напрямую, а таблица маршрутизации уже отправит трафик в туннель OpenVPN. Но судя по tcpdump трафик отправляется от адреса tun-интерфейса Sing-Box и на этом все. Пока не пропишешь адрес 1.2.3.4 в inet4_route_exclude_address, тогда работает. Обязательно прописать все адреса, которые пушит OpenVPN в таблицу исключений Sing-Box или есть способ проще? Outbound Direct это разве не системная таблица маршрутизации? Или таблица маршрутов Sing-Box превалирует над дефолтной? На линуксе это можно переиграть, а на винде как? -
Допустим, сервер xray доступен только при подключении OpenVPN, так настроен ACL сервера xray. Конфиг тот же, но без подключенного OpenVPN работать не должно. OpenVPN пушит роут для адреса outbound canada-02-out
Проблема: не работает и с подключенным OpenVPN. Домены прописанные в Rules → Canada-02-out не отвечают вообще. В логах Sing-Box - io/timeout %addr_of_outbound_canada-02-out%:443
Зачем так сложно? OpenVPN умеет в LDAP, а SingBox нет.
Спасибо!