Правильно ли я понимаю, что socksify сотоварищи работает только на динамически линкованных бинарниках? А вот есть небольшая прога на Go, собрана статически, и ее запросы к веб-серверам очень хочется завести на прокси-сервер. Смотреть на redsocks + фаервол, или есть еще какие-то варианты?
2024-10-06T10:07:00.224Z
odyxz
Создать tun0 на основе SOCKS и прокинуть к нему маршрут.
2024-10-06T10:34:01.499Z
denium
redsocks (очень трудный) или пересобрать прогу в shared. Для этого её обычно достаточно собрать на той же машине, а не кросскомпилом.
В случае с redsocks надо ещё мутить с dumb dns (я так и не осилил), или dns запросы пойдут напрямую (даже при использовании http прокси!). Тогда надо убедиться в их безопасности (dnscrypt, vpn).
не?
или вопрос был как поднять прокси? тогда причем тут бинарник?
2024-10-06T13:14:31.071Z
denium
Не все проги уважают эти настройки. Но можно тоже попробовать.
Вопрос был как проксировать непроксируемые статические бинарники (которые не имеют своих настроек прокси). Дело в том, что простые линуксовые проксификаторы proxychains и torsocks работают только с shared бинарниками.
2024-10-06T13:36:05.337Z
rngvalerka
Я думал он свое завести не может, тем более вроде как линукс мысли сразу про опенсорс. Чужое надо сажать в виртуалку и на уровне интерфейса смотреть куда оно полезло. В идеале вообще не связываться.
2024-10-06T15:09:11.684Z
ValdikSS
Если программа поддерживает выбор интерфейса (bind to interface/address), используйте tun2proxy/tun2socks и аналоги, и указывайте их tun-интерфейс.
Если не поддерживает, то дополнительно добавьте правило маршрутизации конкретного пользователя в отдельную таблицу маршрутизации (ip rule … uidrange 1001-1001 table …), в которой будет маршрут через tun2socks, и запускайте программу от отдельного пользователя (sudo -u user2 ./app).
2024-10-06T17:23:24.056Z
boltor
Можно с помощью sing-box поднимать дефолтный tun интерфейс и делать маршрутизацию по имени или пути процесса, а остальное пускать напрямую (или куда вам угодно, это ж sing-box):
конфиг для наглядности, не проверялся, может содержать глупости
{
"log": {
"level": "debug"
},
"route": {
"rules": [
{
"process_name": [
"curl"
],
"process_path": [
"/usr/bin/curl"
],
"default_interface": "eth0",
// "outbound": "mixed-in", // если socks прокси локальный, а не удалённый, а то вы не уточнили.
"outbound": "socks-out"
}
],
"final": "direct"
},
"inbounds": [
{
"type": "tun",
"tag": "tun",
"interface_name": "tun0",
"domain_strategy": "ipv4_only",
"address": "10.100.0.1/30",
"auto_route": true
},
// {
// "type": "mixed", // нужно если socks прокси локальный, а не удалённый, а то вы не уточнили.
// "tag": "mixed-in",
// "listen": "127.0.0.1",
// "listen_port": 1080,
// "sniff": true,
// "domain_strategy": "ipv4_only"
// }
],
"outbounds": [
{
"type": "direct",
"tag": "direct"
},
{
"type": "dns",
"tag": "dns-out"
},
{
"type": "socks",
"tag": "socks-out",
"server": "10.20.30.40",
"server_port": 1080,
"version": "5",
"username": "admin",
"password": "admin"
}
]
}