Ник Пост Дата
haste

Правильно ли я понимаю, что 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-06T12:02:20.447Z
rngvalerka
user@host:~$ http_proxy=socks5://PROXYSERVER:PORT /path/to/your/golang-bin

не?
или вопрос был как поднять прокси? тогда причем тут бинарник?

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

2024-10-06T18:18:07.319Z
haste

Ух, сколько полезного сразу! Благодарю :+1:

2024-10-06T19:13:57.388Z
hufrea

Может и поздно, но добавлю еще одно решение:

2024-10-14T23:18:57.045Z